]> source.dussan.org Git - nextcloud-server.git/commitdiff
Remove auto focus of share input field on dialog open, fix #15261 16010/head
authorJan-Christoph Borchardt <hey@jancborchardt.net>
Fri, 14 Jun 2019 12:07:57 +0000 (14:07 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Wed, 26 Jun 2019 11:04:39 +0000 (13:04 +0200)
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
13 files changed:
apps/files_sharing/js/additionalScripts.js.map [deleted file]
core/js/dist/share_backend.js
core/js/dist/share_backend.js.map
core/js/sharedialogview.js
package-lock.json
settings/js/vue-1.js [deleted file]
settings/js/vue-1.js.map [deleted file]
settings/js/vue-2.js [deleted file]
settings/js/vue-2.js.map [deleted file]
settings/js/vue-3.js [deleted file]
settings/js/vue-3.js.map [deleted file]
settings/js/vue-8.js [deleted file]
settings/js/vue-8.js.map [deleted file]

diff --git a/apps/files_sharing/js/additionalScripts.js.map b/apps/files_sharing/js/additionalScripts.js.map
deleted file mode 100644 (file)
index 646a0be..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/style-loader/lib/addStyles.js","webpack:///./apps/files_sharing/src/additionalScripts.js","webpack:///./apps/files_sharing/src/share.js","webpack:///./apps/files_sharing/src/sharetabview.js","webpack:///./apps/files_sharing/src/sharebreadcrumbview.js","webpack:///./apps/files_sharing/src/style/sharetabview.scss?3391","webpack:///./apps/files_sharing/src/style/sharetabview.scss","webpack:///./node_modules/style-loader/lib/urls.js","webpack:///./apps/files_sharing/src/style/sharebreadcrumb.scss?732e","webpack:///./apps/files_sharing/src/style/sharebreadcrumb.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","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__","_","extend","OC","Files","Client","PROPERTY_SHARE_TYPES","NS_OWNCLOUD","PROPERTY_OWNER_ID","PROPERTY_OWNER_DISPLAY_NAME","OCA","Sharing","Util","attach","fileList","Share","fileActions","oldCreateRow","_createRow","fileData","tr","sharePermissions","getSharePermissions","permissions","actions","Comment","Details","Goto","attr","shareOwner","shareOwnerId","mountType","PERMISSION_UPDATE","recipientData","isEmpty","shareTypes","oldElementToFile","elementToFile","$el","fileInfo","split","expirationTimestamp","parseInt","shares","expiration","oldGetWebdavProperties","_getWebdavProperties","props","filesClient","addFileInfoParser","response","data","propStat","properties","permissionsProp","PROPERTY_PERMISSIONS","shareTypesProp","chain","xmlvalue","namespaceURI","nodeName","textContent","text","on","ev","$files","each","file","$tr","$","hasLink","hasShares","shareType","SHARE_TYPE_LINK","SHARE_TYPE_EMAIL","SHARE_TYPE_USER","SHARE_TYPE_GROUP","SHARE_TYPE_REMOTE","SHARE_TYPE_CIRCLE","SHARE_TYPE_ROOM","_updateFileActionIcon","sharesLoaded","registerAction","displayName","altText","mime","PERMISSION_ALL","iconClass","FileActions","TYPE_INLINE","actionHandler","fileName","context","$file","isNaN","showDetailsView","render","actionSpec","isDefault","PERMISSION_SHARE","_defaultRenderAction","shareTab","ShareTabView","order","shareModel","fileInfoModel","findFileEl","hasLinkShares","share","share_type","_updateFileListDataAttributes","hasUserShares","markFileAsShared","set","getShareTypes","icon","registerTabView","breadCrumbSharingDetailView","ShareBreadCrumbView","registerBreadCrumbDetailView","pluck","mapObject","shareWith","share_with","shareWithDisplayName","share_with_displayname","removeAttr","Plugins","register","DetailTabView","className","initialize","template","params","getLabel","getIcon","self","_dialog","model","off","html","isUndefined","attributes","itemType","isDirectory","itemSource","possiblePermissions","configModel","ShareConfigModel","ShareItemModel","ShareDialogView","find","append","fetch","trigger","empty","BreadCrumbView","Backbone","View","tagName","events","click","_dirInfo","_shareTab","dirInfo","path","removeClass","hide","isShared","addClass","show","delegateEvents","_onClick","preventDefault","FileInfoModel","getSharesWithCurrentItem","App","hmr","locals","location","baseUrl","protocol","host","currentDir","pathname","replace","fullMatch","origUrl","newUrl","unquotedOrigUrl","trim","$1","test"],"mappings":"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","file":"additionalScripts.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 = 2);\n","\"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 './share'\nimport './sharetabview'\nimport './sharebreadcrumbview'\n\nimport './style/sharetabview.scss'\nimport './style/sharebreadcrumb.scss'\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\n(function() {\n\n\t_.extend(OC.Files.Client, {\n\t\tPROPERTY_SHARE_TYPES:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}share-types',\n\t\tPROPERTY_OWNER_ID:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}owner-id',\n\t\tPROPERTY_OWNER_DISPLAY_NAME:\t'{' + OC.Files.Client.NS_OWNCLOUD + '}owner-display-name'\n\t});\n\n\tif (!OCA.Sharing) {\n\t\tOCA.Sharing = {};\n\t}\n\t/**\n\t * @namespace\n\t */\n\tOCA.Sharing.Util = {\n\t\t/**\n\t\t * Initialize the sharing plugin.\n\t\t *\n\t\t * Registers the \"Share\" file action and adds additional\n\t\t * DOM attributes for the sharing file info.\n\t\t *\n\t\t * @param {OCA.Files.FileList} fileList file list to be extended\n\t\t */\n\t\tattach: function(fileList) {\n\t\t\t// core sharing is disabled/not loaded\n\t\t\tif (!OC.Share) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (fileList.id === 'trashbin' || fileList.id === 'files.public') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fileActions = fileList.fileActions;\n\t\t\tvar oldCreateRow = fileList._createRow;\n\t\t\tfileList._createRow = function(fileData) {\n\n\t\t\t\tvar tr = oldCreateRow.apply(this, arguments);\n\t\t\t\tvar sharePermissions = OCA.Sharing.Util.getSharePermissions(fileData);\n\t\t\t\t\n\t\t\t\tif (fileData.permissions === 0) {\n\t\t\t\t\t// no permission, disabling sidebar\n\t\t\t\t\tdelete fileActions.actions.all.Comment;\n\t\t\t\t\tdelete fileActions.actions.all.Details;\n\t\t\t\t\tdelete fileActions.actions.all.Goto;\n\t\t\t\t}\n\t\t\t\ttr.attr('data-share-permissions', sharePermissions);\n\t\t\t\tif (fileData.shareOwner) {\n\t\t\t\t\ttr.attr('data-share-owner', fileData.shareOwner);\n\t\t\t\t\ttr.attr('data-share-owner-id', fileData.shareOwnerId);\n\t\t\t\t\t// user should always be able to rename a mount point\n\t\t\t\t\tif (fileData.mountType === 'shared-root') {\n\t\t\t\t\t\ttr.attr('data-permissions', fileData.permissions | OC.PERMISSION_UPDATE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (fileData.recipientData && !_.isEmpty(fileData.recipientData)) {\n\t\t\t\t\ttr.attr('data-share-recipient-data', JSON.stringify(fileData.recipientData));\n\t\t\t\t}\n\t\t\t\tif (fileData.shareTypes) {\n\t\t\t\t\ttr.attr('data-share-types', fileData.shareTypes.join(','));\n\t\t\t\t}\n\t\t\t\treturn tr;\n\t\t\t};\n\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\tfileInfo.sharePermissions = $el.attr('data-share-permissions') || undefined;\n\t\t\t\tfileInfo.shareOwner = $el.attr('data-share-owner') || undefined;\n\t\t\t\tfileInfo.shareOwnerId = $el.attr('data-share-owner-id') || undefined;\n\n\t\t\t\tif( $el.attr('data-share-types')){\n\t\t\t\t\tfileInfo.shareTypes = $el.attr('data-share-types').split(',');\n\t\t\t\t}\n\n\t\t\t\tif( $el.attr('data-expiration')){\n\t\t\t\t\tvar expirationTimestamp = parseInt($el.attr('data-expiration'));\n\t\t\t\t\tfileInfo.shares = [];\n\t\t\t\t\tfileInfo.shares.push({expiration: expirationTimestamp});\n\t\t\t\t}\n\n\t\t\t\treturn fileInfo;\n\t\t\t};\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_OWNER_ID);\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME);\n\t\t\t\tprops.push(OC.Files.Client.PROPERTY_SHARE_TYPES);\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 permissionsProp = props[OC.Files.Client.PROPERTY_PERMISSIONS];\n\n\t\t\t\tif (permissionsProp && permissionsProp.indexOf('S') >= 0) {\n\t\t\t\t\tdata.shareOwner = props[OC.Files.Client.PROPERTY_OWNER_DISPLAY_NAME];\n\t\t\t\t\tdata.shareOwnerId = props[OC.Files.Client.PROPERTY_OWNER_ID];\n\t\t\t\t}\n\n\t\t\t\tvar shareTypesProp = props[OC.Files.Client.PROPERTY_SHARE_TYPES];\n\t\t\t\tif (shareTypesProp) {\n\t\t\t\t\tdata.shareTypes = _.chain(shareTypesProp).filter(function(xmlvalue) {\n\t\t\t\t\t\treturn (xmlvalue.namespaceURI === OC.Files.Client.NS_OWNCLOUD && xmlvalue.nodeName.split(':')[1] === 'share-type');\n\t\t\t\t\t}).map(function(xmlvalue) {\n\t\t\t\t\t\treturn parseInt(xmlvalue.textContent || xmlvalue.text, 10);\n\t\t\t\t\t}).value();\n\t\t\t\t}\n\n\t\t\t\treturn data;\n\t\t\t});\n\n\t\t\t// use delegate to catch the case with multiple file lists\n\t\t\tfileList.$el.on('fileActionsReady', function(ev){\n\t\t\t\tvar $files = ev.$files;\n\n\t\t\t\t_.each($files, function(file) {\n\t\t\t\t\tvar $tr = $(file);\n\t\t\t\t\tvar shareTypes = $tr.attr('data-share-types') || '';\n\t\t\t\t\tvar shareOwner = $tr.attr('data-share-owner');\n\t\t\t\t\tif (shareTypes || shareOwner) {\n\t\t\t\t\t\tvar hasLink = false;\n\t\t\t\t\t\tvar hasShares = false;\n\t\t\t\t\t\t_.each(shareTypes.split(',') || [], function(shareType) {\n\t\t\t\t\t\t\tshareType = parseInt(shareType, 10);\n\t\t\t\t\t\t\tif (shareType === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\t\t\thasLink = true;\n\t\t\t\t\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\t\t\thasLink = true;\n\t\t\t\t\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_USER) {\n\t\t\t\t\t\t\t\thasShares = true;\n\t\t\t\t\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\t\t\t\t\thasShares = true;\n\t\t\t\t\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\t\t\t\t\thasShares = true;\n\t\t\t\t\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\t\t\t\thasShares = true;\n\t\t\t\t\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\t\t\t\t\thasShares = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tOCA.Sharing.Util._updateFileActionIcon($tr, hasShares, hasLink);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\n\t\t\tfileList.$el.on('changeDirectory', function() {\n\t\t\t\tOCA.Sharing.sharesLoaded = false;\n\t\t\t});\n\n\t\t\tfileActions.registerAction({\n\t\t\t\tname: 'Share',\n\t\t\t\tdisplayName: '',\n\t\t\t\taltText: t('core', 'Share'),\n\t\t\t\tmime: 'all',\n\t\t\t\tpermissions: OC.PERMISSION_ALL,\n\t\t\t\ticonClass: 'icon-shared',\n\t\t\t\ttype: OCA.Files.FileActions.TYPE_INLINE,\n\t\t\t\tactionHandler: function(fileName, context) {\n\t\t\t\t\t// do not open sidebar if permission is set and equal to 0\n\t\t\t\t\tvar permissions = parseInt(context.$file.data('share-permissions'), 10);\n\t\t\t\t\tif (isNaN(permissions) || permissions > 0) {\n\t\t\t\t\t\tfileList.showDetailsView(fileName, 'shareTabView');\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trender: function(actionSpec, isDefault, context) {\n\t\t\t\t\tvar permissions = parseInt(context.$file.data('permissions'), 10);\n\t\t\t\t\t// if no share permissions but share owner exists, still show the link\n\t\t\t\t\tif ((permissions & OC.PERMISSION_SHARE) !== 0 || context.$file.attr('data-share-owner')) {\n\t\t\t\t\t\treturn fileActions._defaultRenderAction.call(fileActions, actionSpec, isDefault, context);\n\t\t\t\t\t}\n\t\t\t\t\t// don't render anything\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar shareTab = new OCA.Sharing.ShareTabView('shareTabView', {order: -20});\n\t\t\t// detect changes and change the matching list entry\n\t\t\tshareTab.on('sharesChanged', function(shareModel) {\n\t\t\t\tvar fileInfoModel = shareModel.fileInfoModel;\n\t\t\t\tvar $tr = fileList.findFileEl(fileInfoModel.get('name'));\n\n\t\t\t\t// We count email shares as link share\n\t\t\t\tvar hasLinkShares = shareModel.hasLinkShares();\n\t\t\t\tshareModel.get('shares').forEach(function (share) {\n\t\t\t\t\tif (share.share_type === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\thasLinkShares = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tOCA.Sharing.Util._updateFileListDataAttributes(fileList, $tr, shareModel);\n\t\t\t\tif (!OCA.Sharing.Util._updateFileActionIcon($tr, shareModel.hasUserShares(), hasLinkShares)) {\n\t\t\t\t\t// remove icon, if applicable\n\t\t\t\t\tOC.Share.markFileAsShared($tr, false, false);\n\t\t\t\t}\n\n\t\t\t\t// FIXME: this is too convoluted. We need to get rid of the above updates\n\t\t\t\t// and only ever update the model and let the events take care of rerendering\n\t\t\t\tfileInfoModel.set({\n\t\t\t\t\tshareTypes: shareModel.getShareTypes(),\n\t\t\t\t\t// in case markFileAsShared decided to change the icon,\n\t\t\t\t\t// we need to modify the model\n\t\t\t\t\t// (FIXME: yes, this is hacky)\n\t\t\t\t\ticon: $tr.attr('data-icon')\n\t\t\t\t});\n\t\t\t});\n\t\t\tfileList.registerTabView(shareTab);\n\n\t\t\tvar breadCrumbSharingDetailView = new OCA.Sharing.ShareBreadCrumbView({shareTab: shareTab});\n\t\t\tfileList.registerBreadCrumbDetailView(breadCrumbSharingDetailView);\n\t\t},\n\n\t\t/**\n\t\t * Update file list data attributes\n\t\t */\n\t\t_updateFileListDataAttributes: function(fileList, $tr, shareModel) {\n\t\t\t// files app current cannot show recipients on load, so we don't update the\n\t\t\t// icon when changed for consistency\n\t\t\tif (fileList.id === 'files') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar recipients = _.pluck(shareModel.get('shares'), 'share_with_displayname');\n\t\t\t// note: we only update the data attribute because updateIcon()\n\t\t\tif (recipients.length) {\n\t\t\t\tvar recipientData = _.mapObject(shareModel.get('shares'), function (share) {\n\t\t\t\t\treturn {shareWith: share.share_with, shareWithDisplayName: share.share_with_displayname};\n\t\t\t\t});\n\t\t\t\t$tr.attr('data-share-recipient-data', JSON.stringify(recipientData));\n\t\t\t}\n\t\t\telse {\n\t\t\t\t$tr.removeAttr('data-share-recipient-data');\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Update the file action share icon for the given file\n\t\t *\n\t\t * @param $tr file element of the file to update\n\t\t * @param {boolean} hasUserShares true if a user share exists\n\t\t * @param {boolean} hasLinkShares true if a link share exists\n\t\t *\n\t\t * @return {boolean} true if the icon was set, false otherwise\n\t\t */\n\t\t_updateFileActionIcon: function($tr, hasUserShares, hasLinkShares) {\n\t\t\t// if the statuses are loaded already, use them for the icon\n\t\t\t// (needed when scrolling to the next page)\n\t\t\tif (hasUserShares || hasLinkShares || $tr.attr('data-share-recipient-data') || $tr.attr('data-share-owner')) {\n\t\t\t\tOC.Share.markFileAsShared($tr, true, hasLinkShares);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t/**\n\t\t * @param {Array} fileData\n\t\t * @returns {String}\n\t\t */\n\t\tgetSharePermissions: function(fileData) {\n\t\t\treturn fileData.sharePermissions;\n\t\t}\n\t};\n})();\n\nOC.Plugins.register('OCA.Files.FileList', OCA.Sharing.Util);\n","/*\n * Copyright (c) 2015\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\tvar TEMPLATE =\n\t\t'<div>' +\n\t\t'<div class=\"dialogContainer\"></div>' +\n\t\t'</div>';\n\n\t/**\n\t * @memberof OCA.Sharing\n\t */\n\tvar ShareTabView = OCA.Files.DetailTabView.extend(\n\t\t/** @lends OCA.Sharing.ShareTabView.prototype */ {\n\t\tid: 'shareTabView',\n\t\tclassName: 'tab shareTabView',\n\n\t\tinitialize: function(name, options) {\n\t\t\tOCA.Files.DetailTabView.prototype.initialize.call(this, name, options);\n\t\t\tOC.Plugins.attach('OCA.Sharing.ShareTabView', this);\n\t\t},\n\n\t\ttemplate: function(params) {\n\t\t\treturn \tTEMPLATE;\n\t\t},\n\n\t\tgetLabel: function() {\n\t\t\treturn t('files_sharing', 'Sharing');\n\t\t},\n\n\t\tgetIcon: function() {\n\t\t\treturn 'icon-shared';\n\t\t},\n\n\t\t/**\n\t\t * Renders this details view\n\t\t */\n\t\trender: function() {\n\t\t\tvar self = this;\n\t\t\tif (this._dialog) {\n\t\t\t\t// remove/destroy older instance\n\t\t\t\tthis._dialog.model.off();\n\t\t\t\tthis._dialog.remove();\n\t\t\t\tthis._dialog = null;\n\t\t\t}\n\n\t\t\tif (this.model) {\n\t\t\t\tthis.$el.html(this.template());\n\n\t\t\t\tif (_.isUndefined(this.model.get('sharePermissions'))) {\n\t\t\t\t\tthis.model.set('sharePermissions', OCA.Sharing.Util.getSharePermissions(this.model.attributes));\n\t\t\t\t}\n\n\t\t\t\t// TODO: the model should read these directly off the passed fileInfoModel\n\t\t\t\tvar attributes = {\n\t\t\t\t\titemType: this.model.isDirectory() ? 'folder' : 'file',\n\t\t\t\t   \titemSource: this.model.get('id'),\n\t\t\t\t\tpossiblePermissions: this.model.get('sharePermissions')\n\t\t\t\t};\n\t\t\t\tvar configModel = new OC.Share.ShareConfigModel();\n\t\t\t\tvar shareModel = new OC.Share.ShareItemModel(attributes, {\n\t\t\t\t\tconfigModel: configModel,\n\t\t\t\t\tfileInfoModel: this.model\n\t\t\t\t});\n\t\t\t\tthis._dialog = new OC.Share.ShareDialogView({\n\t\t\t\t\tconfigModel: configModel,\n\t\t\t\t\tmodel: shareModel\n\t\t\t\t});\n\t\t\t\tthis.$el.find('.dialogContainer').append(this._dialog.$el);\n\t\t\t\tthis._dialog.render();\n\t\t\t\tthis._dialog.model.fetch();\n\t\t\t\tthis._dialog.model.on('change', function() {\n\t\t\t\t\tself.trigger('sharesChanged', shareModel);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.$el.empty();\n\t\t\t\t// TODO: render placeholder text?\n\t\t\t}\n\t\t\tthis.trigger('rendered');\n\t\t}\n\t});\n\n\tOCA.Sharing.ShareTabView = ShareTabView;\n})();\n\n","/* global Handlebars, OC */\n\n/**\n * @copyright 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\t'use strict';\n\n\tvar BreadCrumbView = OC.Backbone.View.extend({\n\t\ttagName: 'span',\n\t\tevents: {\n\t\t\tclick: '_onClick'\n\t\t},\n\t\t_dirInfo: undefined,\n\n\t\t/** @type OCA.Sharing.ShareTabView */\n\t\t_shareTab: undefined,\n\n\t\tinitialize: function(options) {\n\t\t\tthis._shareTab = options.shareTab;\n\t\t},\n\n\t\trender: function(data) {\n\t\t\tthis._dirInfo = data.dirInfo || null;\n\n\t\t\tif (this._dirInfo !== null && (this._dirInfo.path !== '/' || this._dirInfo.name !== '')) {\n\t\t\t\tvar isShared = data.dirInfo && data.dirInfo.shareTypes && data.dirInfo.shareTypes.length > 0;\n\t\t\t\tthis.$el.removeClass('shared icon-public icon-shared');\n\t\t\t\tif (isShared) {\n\t\t\t\t\tthis.$el.addClass('shared');\n\t\t\t\t\tif (data.dirInfo.shareTypes.indexOf(OC.Share.SHARE_TYPE_LINK) !== -1) {\n\t\t\t\t\t\tthis.$el.addClass('icon-public');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$el.addClass('icon-shared');\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.$el.addClass('icon-shared');\n\t\t\t\t}\n\t\t\t\tthis.$el.show();\n\t\t\t\tthis.delegateEvents();\n\t\t\t} else {\n\t\t\t\tthis.$el.removeClass('shared icon-public icon-shared');\n\t\t\t\tthis.$el.hide();\n\t\t\t}\n\n\t\t\treturn this;\n\t\t},\n\t\t_onClick: function(e) {\n\t\t\te.preventDefault();\n\n\t\t\tvar fileInfoModel = new OCA.Files.FileInfoModel(this._dirInfo);\n\t\t\tvar self = this;\n\t\t\tfileInfoModel.on('change', function() {\n\t\t\t\tself.render({\n\t\t\t\t\tdirInfo: self._dirInfo\n\t\t\t\t});\n\t\t\t});\n\t\t\tthis._shareTab.on('sharesChanged', function(shareModel) {\n\t\t\t\tvar shareTypes = [];\n\t\t\t\tvar shares = shareModel.getSharesWithCurrentItem();\n\n\t\t\t\tfor(var i = 0; i < shares.length; i++) {\n\t\t\t\t\tif (shareTypes.indexOf(shares[i].share_type) === -1) {\n\t\t\t\t\t\tshareTypes.push(shares[i].share_type);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (shareModel.hasLinkShares()) {\n\t\t\t\t\tshareTypes.push(OC.Share.SHARE_TYPE_LINK);\n\t\t\t\t}\n\n\t\t\t\t// Since the dirInfo isn't updated we need to do this dark hackery\n\t\t\t\tself._dirInfo.shareTypes = shareTypes;\n\n\t\t\t\tself.render({\n\t\t\t\t\tdirInfo: self._dirInfo\n\t\t\t\t});\n\t\t\t});\n\t\t\tOCA.Files.App.fileList.showDetailsView(fileInfoModel, 'shareTabView');\n\t\t}\n\t});\n\n\tOCA.Sharing.ShareBreadCrumbView = BreadCrumbView;\n})();\n","\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/lib/loader.js!./sharetabview.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!./sharetabview.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/lib/loader.js!./sharetabview.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, \".app-files .shareTabView {\\n  min-height: 100px; }\\n\\n.share-autocomplete-item {\\n  display: flex; }\\n  .share-autocomplete-item.merged {\\n    margin-left: 32px; }\\n  .share-autocomplete-item .autocomplete-item-text {\\n    margin-left: 10px;\\n    margin-right: 10px;\\n    white-space: nowrap;\\n    text-overflow: ellipsis;\\n    overflow: hidden;\\n    line-height: 32px;\\n    vertical-align: middle;\\n    flex-grow: 1; }\\n    .share-autocomplete-item .autocomplete-item-text .ui-state-highlight {\\n      border: none;\\n      margin: 0; }\\n  .share-autocomplete-item.with-description .autocomplete-item-text {\\n    line-height: 100%; }\\n  .share-autocomplete-item .autocomplete-item-details {\\n    display: block;\\n    line-height: 130%;\\n    font-size: 90%;\\n    opacity: 0.7; }\\n  .share-autocomplete-item .icon {\\n    opacity: .7;\\n    margin-right: 7px; }\\n  .share-autocomplete-item .icon.search-globally {\\n    width: 32px;\\n    height: 32px;\\n    margin-right: 0; }\\n\\n.shareTabView .oneline {\\n  white-space: nowrap;\\n  position: relative; }\\n\\n.shareTabView .shareWithLoading {\\n  padding-left: 10px;\\n  right: 35px;\\n  top: 3px; }\\n\\n.shareTabView .shareWithConfirm {\\n  position: absolute;\\n  right: 2px;\\n  top: 6px;\\n  padding: 14px;\\n  opacity: 0.5; }\\n\\n.shareTabView .shareWithField:focus ~ .shareWithConfirm {\\n  opacity: 1; }\\n\\n.shareTabView .linkMore {\\n  position: absolute;\\n  right: -7px;\\n  top: -4px;\\n  padding: 14px; }\\n\\n.shareTabView .popovermenu {\\n  /* Border above last entry '+ Add another share' to separate it from current link settings */ }\\n  .shareTabView .popovermenu .linkPassMenu .share-pass-submit {\\n    width: auto !important; }\\n  .shareTabView .popovermenu .linkPassMenu .icon-loading-small {\\n    background-color: var(--color-main-background);\\n    position: absolute;\\n    right: 8px;\\n    margin: 3px;\\n    padding: 10px;\\n    width: 32px;\\n    height: 32px;\\n    z-index: 10; }\\n  .shareTabView .popovermenu .datepicker {\\n    margin-left: 35px; }\\n  .shareTabView .popovermenu .share-add input.share-note-delete {\\n    border: none;\\n    background-color: transparent;\\n    width: 44px !important;\\n    padding: 0;\\n    flex: 0 0 44px;\\n    margin-left: auto; }\\n    .shareTabView .popovermenu .share-add input.share-note-delete.hidden {\\n      display: none; }\\n  .shareTabView .popovermenu .share-note-form span.icon-note {\\n    position: relative; }\\n  .shareTabView .popovermenu .share-note-form textarea.share-note {\\n    margin: 0;\\n    width: 200px;\\n    min-height: 70px;\\n    resize: none; }\\n    .shareTabView .popovermenu .share-note-form textarea.share-note + input.share-note-submit {\\n      position: absolute;\\n      width: 44px !important;\\n      height: 44px;\\n      bottom: 0px;\\n      right: 10px;\\n      margin: 0;\\n      background-color: transparent;\\n      border: none;\\n      opacity: .7; }\\n      .shareTabView .popovermenu .share-note-form textarea.share-note + input.share-note-submit:hover, .shareTabView .popovermenu .share-note-form textarea.share-note + input.share-note-submit:focus, .shareTabView .popovermenu .share-note-form textarea.share-note + input.share-note-submit:active {\\n        opacity: 1; }\\n  .shareTabView .popovermenu .share-note-form.share-note-link {\\n    margin-bottom: 10px; }\\n  .shareTabView .popovermenu .new-share {\\n    border-top: 1px solid var(--color-border); }\\n\\n.shareTabView .linkPass .icon-loading-small {\\n  margin-right: 0px; }\\n\\n.shareTabView .icon {\\n  background-size: 16px 16px; }\\n\\n.shareTabView .shareWithList .icon-loading-small:not(.hidden) + span,\\n.shareTabView .linkShareView .icon-loading-small:not(.hidden) + input + label:before {\\n  /* Hide if loader is visible */\\n  display: none !important; }\\n\\n.shareTabView input[type='checkbox'] {\\n  margin: 0 3px 0 8px;\\n  vertical-align: middle; }\\n\\n.shareTabView input[type='text'].shareWithField, .shareTabView input[type='text'].emailField {\\n  width: 100%;\\n  box-sizing: border-box;\\n  padding-right: 32px;\\n  text-overflow: ellipsis; }\\n\\n.shareTabView input[type='text'].linkText .shareTabView input[type='password'].linkPassText, .shareTabView input[type='password'].passwordField {\\n  width: 180px !important; }\\n\\n.shareTabView form {\\n  font-size: 100%;\\n  margin-left: 0;\\n  margin-right: 0; }\\n\\n.shareTabView .share-note {\\n  border-radius: var(--border-radius);\\n  margin-bottom: 10px;\\n  margin-left: 37px; }\\n\\n.shareWithList {\\n  list-style-type: none;\\n  display: flex;\\n  flex-direction: column; }\\n  .shareWithList > li {\\n    height: 44px;\\n    white-space: normal;\\n    display: inline-flex;\\n    align-items: center;\\n    position: relative; }\\n    .shareWithList > li .avatar {\\n      width: 32px;\\n      height: 32px;\\n      background-color: var(--color-primary); }\\n  .shareWithList .unshare img {\\n    vertical-align: text-bottom;\\n    /* properly align icons */ }\\n  .shareWithList .sharingOptionsGroup {\\n    margin-left: auto;\\n    display: flex;\\n    align-items: center;\\n    white-space: nowrap; }\\n    .shareWithList .sharingOptionsGroup > .icon:not(.hidden),\\n    .shareWithList .sharingOptionsGroup .share-menu > .icon:not(.hidden) {\\n      padding: 14px;\\n      height: 44px;\\n      width: 44px;\\n      opacity: .5;\\n      display: block;\\n      cursor: pointer; }\\n      .shareWithList .sharingOptionsGroup > .icon:not(.hidden):hover, .shareWithList .sharingOptionsGroup > .icon:not(.hidden):focus, .shareWithList .sharingOptionsGroup > .icon:not(.hidden):active,\\n      .shareWithList .sharingOptionsGroup .share-menu > .icon:not(.hidden):hover,\\n      .shareWithList .sharingOptionsGroup .share-menu > .icon:not(.hidden):focus,\\n      .shareWithList .sharingOptionsGroup .share-menu > .icon:not(.hidden):active {\\n        opacity: .7; }\\n    .shareWithList .sharingOptionsGroup > .share-menu {\\n      position: relative;\\n      display: block; }\\n  .shareWithList .username {\\n    padding: 0 8px;\\n    overflow: hidden;\\n    white-space: nowrap;\\n    text-overflow: ellipsis; }\\n\\n.ui-autocomplete {\\n  /* limit dropdown height to 6 1/2 entries */\\n  max-height: calc(36px * 6.5);\\n  overflow-y: auto;\\n  overflow-x: hidden;\\n  z-index: 1550 !important; }\\n\\n.notCreatable {\\n  padding-left: 12px;\\n  padding-top: 12px;\\n  color: var(--color-text-lighter); }\\n\\n.contactsmenu-popover {\\n  left: -6px;\\n  right: auto;\\n  padding: 3px 6px;\\n  top: 100%;\\n  margin-top: 0; }\\n  .contactsmenu-popover li.hidden {\\n    display: none !important; }\\n  .contactsmenu-popover:after {\\n    left: 8px;\\n    right: auto; }\\n\\n.reshare,\\n#link label,\\n#expiration label {\\n  display: inline-flex;\\n  align-items: center; }\\n  .reshare .avatar,\\n  #link label .avatar,\\n  #expiration label .avatar {\\n    margin-right: 5px; }\\n\\n.resharerInfoView.subView {\\n  position: relative; }\\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!./sharebreadcrumb.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!./sharebreadcrumb.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/lib/loader.js!./sharebreadcrumb.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 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\\n *\\n * @author 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\ndiv.crumb span.icon-shared,\\ndiv.crumb span.icon-public {\\n  display: inline-block;\\n  cursor: pointer;\\n  opacity: 0.2;\\n  margin-right: 6px; }\\n\\ndiv.crumb span.icon-shared.shared,\\ndiv.crumb span.icon-public.shared {\\n  opacity: 0.7; }\\n\", \"\"]);\n\n"],"sourceRoot":""}
\ No newline at end of file
index c4052be0364b0786400b324f8034c9e67722b072..de4e5908fded0c4d8bbe362c02336f00341e1889 100644 (file)
@@ -20,5 +20,5 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  */
-!function(){OC.Share||(OC.Share={}),OC.Share.Social={};var e=OC.Backbone.Model.extend({defaults:{key:null,url:null,name:null,iconClass:null,newWindow:!0}});OC.Share.Social.Model=e;var a=OC.Backbone.Collection.extend({model:OC.Share.Social.Model,comparator:"key"});OC.Share.Social.Collection=new a}()},function(e,a){!function(){OC.Share||(OC.Share={});var e=OC.Backbone.View.extend({id:"shareDialogResharerInfo",tagName:"div",className:"reshare",configModel:void 0,_template:void 0,initialize:function(e){var a=this;if(this.model.on("change:reshare",function(){a.render()}),_.isUndefined(e.configModel))throw"missing OC.Share.ShareConfigModel";this.configModel=e.configModel},render:function(){if(!this.model.hasReshare()||this.model.getReshareOwner()===OC.currentUser)return this.$el.empty(),this;var e=this.template(),a=this.model.getReshareOwnerDisplayname(),n=this.model.getReshareNote(),s="";return s=this.model.getReshareType()===OC.Share.SHARE_TYPE_GROUP?t("core","Shared with you and the group {group} by {owner}",{group:this.model.getReshareWithDisplayName(),owner:a},void 0,{escape:!1}):this.model.getReshareType()===OC.Share.SHARE_TYPE_CIRCLE?t("core","Shared with you and {circle} by {owner}",{circle:this.model.getReshareWithDisplayName(),owner:a},void 0,{escape:!1}):this.model.getReshareType()===OC.Share.SHARE_TYPE_ROOM?this.model.get("reshare").share_with_displayname?t("core","Shared with you and the conversation {conversation} by {owner}",{conversation:this.model.getReshareWithDisplayName(),owner:a},void 0,{escape:!1}):t("core","Shared with you in a conversation by {owner}",{owner:a},void 0,{escape:!1}):t("core","Shared with you by {owner}",{owner:a},void 0,{escape:!1}),this.$el.html(e({reshareOwner:this.model.getReshareOwner(),sharedByText:s,shareNote:n,hasShareNote:""!==n})),this.$el.find(".avatar").each(function(){var e=$(this);e.avatar(e.data("username"),32)}),this.$el.find(".reshare").contactsMenu(this.model.getReshareOwner(),OC.Share.SHARE_TYPE_USER,this.$el),this},template:function(){return OC.Share.Templates.sharedialogresharerinfoview}});OC.Share.ShareDialogResharerInfoView=e}()},function(e,a){!function(){OC.Share||(OC.Share={});var e=t("core","Choose a password for the public link"),a=t("core",'Choose a password for the public link or press the "Enter" key'),n=OC.Backbone.View.extend({id:"shareDialogLinkShare",configModel:void 0,showLink:!0,showPending:!1,password:"",newShareId:"new-share",events:{"click .share-menu .icon-more":"onToggleMenu","change .hideDownloadCheckbox":"onHideDownloadChange","click input.share-pass-submit":"onPasswordEntered","keyup input.linkPassText":"onPasswordKeyUp","change .showPasswordCheckbox":"onShowPasswordClick","change .passwordByTalkCheckbox":"onPasswordByTalkChange","change .publicEditingCheckbox":"onAllowPublicEditingChange","click .linkText":"onLinkTextClick","click .pop-up":"onPopUpClick","change .publicUploadRadio":"onPublicUploadChange","click .expireDate":"onExpireDateChange","change .datepicker":"onChangeExpirationDate","click .datepicker":"showDatePicker","click .share-add":"showNoteForm","click .share-note-delete":"deleteNote","click .share-note-submit":"updateNote","click .unshare":"onUnshare","click .new-share":"newShare","submit .enforcedPassForm":"enforcedPasswordSet"},initialize:function(e){var a=this;if(this.model.on("change:permissions",function(){a.render()}),this.model.on("change:itemType",function(){a.render()}),this.model.on("change:allowPublicUploadStatus",function(){a.render()}),this.model.on("change:hideFileListStatus",function(){a.render()}),this.model.on("change:linkShares",function(e,t){var n,s=e.previous("linkShares");if(s.length===t.length)for(n=0;n<t.length;n++){if(t[n].id!==s[n].id)return;if(t[n].password!==s[n].password)return void a.render()}}),_.isUndefined(e.configModel))throw"missing OC.Share.ShareConfigModel";this.configModel=e.configModel;var n=new Clipboard(".clipboard-button");n.on("success",function(e){var a=$(e.trigger);a.tooltip("hide").attr("data-original-title",t("core","Copied!")).tooltip("fixTitle").tooltip({placement:"bottom",trigger:"manual"}).tooltip("show"),_.delay(function(){a.tooltip("hide").attr("data-original-title",t("core","Copy link")).tooltip("fixTitle")},3e3)}),n.on("error",function(e){var a=$(e.trigger),n=a.next(".share-menu").find(".popovermenu"),s=n.find("li.linkTextMenu"),i=s.find(".linkText");a.closest("li[data-share-id]").data("share-id");OC.showMenu(null,n);var l="";l=/iPhone|iPad/i.test(navigator.userAgent)?t("core","Not supported!"):/Mac/i.test(navigator.userAgent)?t("core","Press ⌘-C to copy."):t("core","Press Ctrl-C to copy."),s.removeClass("hidden"),i.select(),i.tooltip("hide").attr("data-original-title",l).tooltip("fixTitle").tooltip({placement:"bottom",trigger:"manual"}).tooltip("show"),_.delay(function(){i.tooltip("hide"),i.attr("data-original-title",t("core","Copy")).tooltip("fixTitle")},3e3)})},newShare:function(e){var a=this,n=$(e.target).closest("li[data-share-id]"),s=n.data("share-id"),i=n.find(".share-menu > .icon-loading-small");if(!i.hasClass("hidden")&&""===this.password)return!1;n.find(".icon").addClass("hidden"),i.removeClass("hidden"),OC.hideMenus();var l={},r=this.configModel.get("enforcePasswordForPublicLink");if(this.configModel.get("isDefaultExpireDateEnforced")){var o=this.configModel.get("defaultExpireDate"),d=moment().add(o,"day").format("DD-MM-YYYY");l.expireDate=d}r&&""!==this.password&&(l.password=this.password);var h=!1;r&&!this.showPending&&""===this.password?(this.showPending=s,(a=this.render()).$el.find(".pending #enforcedPassText").focus()):$.when(this.model.saveLinkShare(l,{success:function(){if(i.addClass("hidden"),n.find(".icon").removeClass("hidden"),a.render(),h){var e=a.$el.find("li[data-share-id]"),t=a.$el.find('li[data-share-id="'+h+'"]');if(t&&1===e.length){var s=t.find(".popovermenu");OC.showMenu(null,s)}}},error:function(){}})).fail(function(e){if(a.password="",r&&e&&e.responseJSON&&e.responseJSON.ocs.meta&&e.responseJSON.ocs.meta.message){var s=a.$el.find(".pending #enforcedPassText");s.tooltip("destroy"),s.attr("title",e.responseJSON.ocs.meta.message),s.tooltip({placement:"bottom",trigger:"manual"}),s.tooltip("show")}else OC.Notification.showTemporary(t("core","Unable to create a link share")),i.addClass("hidden"),n.find(".icon").removeClass("hidden")}).then(function(e){h=e.ocs.data.id})},enforcedPasswordSet:function(e){e.preventDefault();var a=$(e.target).find("input.enforcedPassText");this.password=a.val(),this.showPending=!1,this.newShare(e)},onLinkTextClick:function(e){var a=$(e.target).closest("li[data-share-id]").find(".linkText");a.focus(),a.select()},onHideDownloadChange:function(e){var a=$(e.target).closest("li[data-share-id]"),n=a.data("share-id"),s=a.find(".hideDownloadCheckbox");s.siblings(".icon-loading-small").removeClass("hidden").addClass("inlineblock");var i=!1;s.is(":checked")&&(i=!0),this.model.saveLinkShare({hideDownload:i,cid:n},{success:function(){s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")},error:function(e,a){OC.Notification.showTemporary(t("core","Unable to toggle this option")),s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")}})},onShowPasswordClick:function(e){var a=$(e.target).closest("li[data-share-id]"),t=a.data("share-id");a.find(".linkPass").slideToggle(OC.menuSpeed),a.find(".linkPassMenu").toggleClass("hidden"),a.find(".showPasswordCheckbox").is(":checked")?OC.Util.isIE()||a.find(".linkPassText").focus():this.model.saveLinkShare({password:"",cid:t})},onPasswordKeyUp:function(e){13===e.keyCode&&this.onPasswordEntered(e)},onPasswordEntered:function(t){var n=$(t.target).closest("li[data-share-id]"),s=n.data("share-id"),i=n.find(".linkPassMenu .icon-loading-small");if(i.hasClass("hidden")){var l=n.find(".linkPassText");l.removeClass("error"),l.parent().find("input").removeClass("error");var r=l.val();if(n.find(".linkPassText").attr("placeholder")===a)r===a&&(r="");else if(""===r||"**********"===r||r===e)return;i.removeClass("hidden").addClass("inlineblock"),this.model.saveLinkShare({password:r,cid:s},{complete:function(e){i.removeClass("inlineblock").addClass("hidden")},error:function(e,a){l.parent().find("input").addClass("error");var t=l.parent();t.tooltip("destroy"),l.addClass("error"),t.attr("title",a),t.tooltip({placement:"bottom",trigger:"manual"}),t.tooltip("show")}})}},onPasswordByTalkChange:function(e){var a=$(e.target).closest("li[data-share-id]"),n=a.data("share-id"),s=a.find(".passwordByTalkCheckbox");s.siblings(".icon-loading-small").removeClass("hidden").addClass("inlineblock");var i=!1;s.is(":checked")&&(i=!0),this.model.saveLinkShare({sendPasswordByTalk:i,cid:n},{success:function(){s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")},error:function(e,a){OC.Notification.showTemporary(t("core","Unable to toggle this option")),s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")}})},onAllowPublicEditingChange:function(e){var a=$(e.target).closest("li[data-share-id]"),n=a.data("share-id"),s=a.find(".publicEditingCheckbox");s.siblings(".icon-loading-small").removeClass("hidden").addClass("inlineblock");var i=OC.PERMISSION_READ;s.is(":checked")&&(i=OC.PERMISSION_UPDATE|OC.PERMISSION_READ),this.model.saveLinkShare({permissions:i,cid:n},{success:function(){s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")},error:function(e,a){OC.Notification.showTemporary(t("core","Unable to toggle this option")),s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")}})},onPublicUploadChange:function(e){var a=$(e.target).closest("li[data-share-id]").data("share-id"),t=e.currentTarget.value;this.model.saveLinkShare({permissions:t,cid:a})},showNoteForm:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),t=(a.closest("li[data-share-id]"),a.closest("li")),n=t.next("li.share-note-form");t.find(".share-note-delete").toggleClass("hidden"),n.toggleClass("hidden"),n.find("textarea").focus()},deleteNote:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=a.closest("li"),s=n.next("li.share-note-form");s.find(".share-note").val(""),s.addClass("hidden"),n.find(".share-note-delete").addClass("hidden"),this.sendNote("",t,n)},updateNote:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=a.closest("li.share-note-form"),s=n.prev("li"),i=n.find(".share-note").val().trim();i.length<1||this.sendNote(i,t,s)},sendNote:function(e,a,t){var n=t.next("li.share-note-form"),s=n.find("input.share-note-submit"),i=n.find("input.share-note-error");s.prop("disabled",!0),t.find(".icon-loading-small").removeClass("hidden"),t.find(".icon-edit").hide();$.ajax({method:"PUT",url:OC.linkToOCS("apps/files_sharing/api/v1/shares",2)+a+"?"+OC.buildQueryString({format:"json"}),data:{note:e},complete:function(){s.prop("disabled",!1),t.find(".icon-loading-small").addClass("hidden"),t.find(".icon-edit").show()},error:function(){i.show(),setTimeout(function(){i.hide()},3e3)}})},render:function(){this.$el.find(".has-tooltip").tooltip(),this.password="";var n=this.template(),s=this.model.sharePermissionPossible();if(!s||!this.showLink||!this.configModel.isShareWithLinkAllowed()){var i={shareAllowed:!1};return s||(i.noSharingPlaceholder=t("core","Resharing is not allowed")),this.$el.html(n(i)),this}var l=this.model.isFolder()&&this.model.createPermissionPossible()&&this.configModel.isPublicUploadEnabled(),r="";this.model.isPublicEditingAllowed()&&(r='checked="checked"');var o=this.configModel.get("enforcePasswordForPublicLink"),d=(this.configModel.get("enableLinkPasswordByDefault"),this.configModel.get("enforcePasswordForPublicLink")?e:a),h=!this.model.isFolder()&&this.model.updatePermissionPossible(),c=this.configModel.get("isDefaultExpireDateEnforced"),u=new Date;u.setDate(u.getDate()+1),$.datepicker.setDefaults({minDate:u}),this.$el.find(".datepicker").datepicker({dateFormat:"dd-mm-yy"});var p=4;oc_capabilities.password_policy&&oc_capabilities.password_policy.minLength&&(p=oc_capabilities.password_policy.minLength);var m={urlLabel:t("core","Link"),hideDownloadLabel:t("core","Hide download"),enablePasswordLabel:o?t("core","Password protection enforced"):t("core","Password protect"),passwordLabel:t("core","Password"),passwordPlaceholderInitial:d,publicUpload:l,publicEditing:h,publicEditingChecked:r,publicEditingLabel:t("core","Allow editing"),mailPrivatePlaceholder:t("core","Email link to person"),mailButtonText:t("core","Send"),publicUploadRWLabel:t("core","Allow upload and editing"),publicUploadRLabel:t("core","Read only"),publicUploadWLabel:t("core","File drop (upload only)"),publicUploadRWValue:OC.PERMISSION_UPDATE|OC.PERMISSION_CREATE|OC.PERMISSION_READ|OC.PERMISSION_DELETE,publicUploadRValue:OC.PERMISSION_READ,publicUploadWValue:OC.PERMISSION_CREATE,expireDateLabel:c?t("core","Expiration date enforced"):t("core","Set expiration date"),expirationLabel:t("core","Expiration"),expirationDatePlaceholder:t("core","Expiration date"),isExpirationEnforced:c,isPasswordEnforced:o,defaultExpireDate:moment().add(1,"day").format("DD-MM-YYYY"),addNoteLabel:t("core","Note to recipient"),unshareLabel:t("core","Unshare"),unshareLinkLabel:t("core","Delete share link"),newShareLabel:t("core","Add another link")},f={isPasswordEnforced:o,enforcedPasswordLabel:t("core","Password protection for links is mandatory"),passwordPlaceholder:d,minPasswordLength:p},g=this.pendingPopoverMenuTemplate(_.extend({},f)),v=this.getShareeList();if(_.isArray(v))for(var S=0;S<v.length;S++){var C=[];OC.Share.Social.Collection.each(function(e){var a=e.get("url");a=a.replace("{{reference}}",v[S].shareLinkURL),C.push({url:a,label:t("core","Share to {name}",{name:e.get("name")}),name:e.get("name"),iconClass:e.get("iconClass"),newWindow:e.get("newWindow")})});var w=this.getPopoverObject(v[S]);v[S].popoverMenu=this.popoverMenuTemplate(_.extend({},m,w,{social:C})),v[S].pendingPopoverMenu=g}return this.$el.html(n({linkShares:v,shareAllowed:!0,nolinkShares:0===v.length,newShareLabel:t("core","Share link"),newShareTitle:t("core","New share link"),pendingPopoverMenu:g,showPending:this.showPending===this.newShareId,newShareId:this.newShareId})),this.delegateEvents(),autosize(this.$el.find(".share-note-form .share-note")),this},onToggleMenu:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target).closest("li[data-share-id]"),t=a.find(".sharingOptionsGroup .popovermenu");a.data("share-id");OC.showMenu(null,t);var n=!0===this.configModel.get("enableLinkPasswordByDefault");!(""!==t.find(".linkPassText").val())&&n&&t.find(".linkPassText").focus()},template:function(){return OC.Share.Templates.sharedialoglinkshareview},popoverMenuTemplate:function(e){return OC.Share.Templates.sharedialoglinkshareview_popover_menu(e)},pendingPopoverMenuTemplate:function(e){return OC.Share.Templates.sharedialoglinkshareview_popover_menu_pending(e)},onPopUpClick:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.currentTarget).data("url"),t=$(e.currentTarget).data("window");if($(e.currentTarget).tooltip("hide"),a)if(!0===t){var n=screen.width/2-300,s=screen.height/2-200;window.open(a,"name","width=600, height=400, top="+s+", left="+n)}else window.location.href=a},onExpireDateChange:function(e){var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=$("#expirationDateContainer-"+t),s=a.prop("checked");n.toggleClass("hidden",!s),s?(a.closest("li").next("li").removeClass("hidden"),this.showDatePicker(e)):(a.closest("li").next("li").addClass("hidden"),this.setExpirationDate("",t))},showDatePicker:function(e){var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=a.data("max-date"),s="#expirationDatePicker-"+t,i=this;$(s).datepicker({dateFormat:"dd-mm-yy",onSelect:function(e){i.setExpirationDate(e,t)},maxDate:n}),$(s).datepicker("show"),$(s).focus()},setExpirationDate:function(e,a){this.model.saveLinkShare({expireDate:e,cid:a})},onChangeExpirationDate:function(e){var a=$(e.target),t=a.val(),n=a.closest("li[data-share-id]").data("share-id"),s="#expirationDatePicker-"+n;this.setExpirationDate(t,n),$(s).datepicker("hide")},getShareeList:function(){var e=this.model.get("linkShares");if(!this.model.hasLinkShares())return[];for(var a=[],t=0;t<e.length;t++){var n=this.getShareeObject(t);a.push(_.extend({},n))}return a},getShareeObject:function(e){var a=this.model.get("linkShares")[e];return _.extend({},a,{cid:a.id,shareAllowed:!0,linkShareLabel:a.label?a.label:t("core","Share link"),popoverMenu:{},shareLinkURL:a.url,newShareTitle:t("core","New share link"),copyLabel:t("core","Copy link"),showPending:this.showPending===a.id,linkShareCreationDate:t("core","Created on {time}",{time:moment(1e3*a.stime).format("LLLL")})})},getPopoverObject:function(a){var n="",s="",i="";switch(this.model.linkSharePermissions(a.id)){case OC.PERMISSION_READ:s="checked";break;case OC.PERMISSION_CREATE:i="checked";break;case OC.PERMISSION_UPDATE|OC.PERMISSION_CREATE|OC.PERMISSION_READ|OC.PERMISSION_DELETE:n="checked"}var l,r=!!a.password,o=!0===this.configModel.get("enableLinkPasswordByDefault"),d=this.configModel.get("enforcePasswordForPublicLink"),h=this.configModel.get("isDefaultExpireDateEnforced"),c=this.configModel.get("defaultExpireDate"),u=!!a.expiration||h;u&&(l=moment(a.expiration,"YYYY-MM-DD").format("DD-MM-YYYY"));var p=void 0!==oc_appswebroots.spreed,m=a.sendPasswordByTalk,f=a.hideDownload,g=null;if(u&&h){var v=a.stime;_.isNumber(v)&&(v=new Date(1e3*v)),v||(v=new Date),v=OC.Util.stripTime(v).getTime(),g=new Date(v+24*c*3600*1e3)}return{cid:a.id,shareLinkURL:a.url,passwordPlaceholder:r?"**********":e,isPasswordSet:r||o||d,showPasswordByTalkCheckBox:p&&r,passwordByTalkLabel:t("core","Password protect by Talk"),isPasswordByTalkSet:m,publicUploadRWChecked:n,publicUploadRChecked:s,publicUploadWChecked:i,hasExpireDate:u,expireDate:l,shareNote:a.note,hasNote:""!==a.note,maxDate:g,hideDownload:f,isExpirationEnforced:h}},onUnshare:function(e){e.preventDefault(),e.stopPropagation();var a=this,n=$(e.target);n.is("a")||(n=n.closest("a"));var s=n.find(".icon-loading-small").eq(0);if(!s.hasClass("hidden"))return!1;s.removeClass("hidden");var i=n.closest("li[data-share-id]"),l=i.data("share-id");return a.model.removeShare(l,{success:function(){i.remove(),a.render()},error:function(){s.addClass("hidden"),OC.Notification.showTemporary(t("core","Could not unshare"))}}),!1}});OC.Share.ShareDialogLinkShareView=n}()},function(e,a){!function(){var e=t("core","Choose a password for the mail share");OC.Share||(OC.Share={});var a=OC.Backbone.View.extend({id:"shareDialogLinkShare",configModel:void 0,_menuOpen:!1,_renderPermissionChange:!1,events:{"click .unshare":"onUnshare","click .share-add":"showNoteForm","click .share-note-delete":"deleteNote","click .share-note-submit":"updateNote","click .share-menu .icon-more":"onToggleMenu","click .permissions":"onPermissionChange","click .expireDate":"onExpireDateChange","click .password":"onMailSharePasswordProtectChange","click .passwordByTalk":"onMailSharePasswordProtectByTalkChange","click .secureDrop":"onSecureDropChange","keyup input.passwordField":"onMailSharePasswordKeyUp","focusout input.passwordField":"onMailSharePasswordEntered","change .datepicker":"onChangeExpirationDate","click .datepicker":"showDatePicker"},initialize:function(e){if(_.isUndefined(e.configModel))throw"missing OC.Share.ShareConfigModel";this.configModel=e.configModel;var a=this;this.model.on("change:shares",function(){a.render()})},getShareeObject:function(a){var n=this.model.getShareWith(a),s=this.model.getShareWithDisplayName(a),i=this.model.getShareWithAvatar(a),l="",r=this.model.getShareType(a),o=this.model.getSharedBy(a),d=this.model.getSharedByDisplayName(a),h=this.model.getFileOwnerUid(a);if(r===OC.Share.SHARE_TYPE_GROUP?s=s+" ("+t("core","group")+")":r===OC.Share.SHARE_TYPE_REMOTE?s=s+" ("+t("core","remote")+")":r===OC.Share.SHARE_TYPE_REMOTE_GROUP?s=s+" ("+t("core","remote group")+")":r===OC.Share.SHARE_TYPE_EMAIL?s=s+" ("+t("core","email")+")":r===OC.Share.SHARE_TYPE_CIRCLE||r===OC.Share.SHARE_TYPE_ROOM&&(s=s+" ("+t("core","conversation")+")"),r===OC.Share.SHARE_TYPE_GROUP?l=n+" ("+t("core","group")+")":r===OC.Share.SHARE_TYPE_REMOTE?l=n+" ("+t("core","remote")+")":r===OC.Share.SHARE_TYPE_REMOTE_GROUP?l=n+" ("+t("core","remote group")+")":r===OC.Share.SHARE_TYPE_EMAIL?l=n+" ("+t("core","email")+")":r===OC.Share.SHARE_TYPE_CIRCLE&&(l=n,n="circle-"+a),o!==oc_current_user){var c=""===l;c||(l+=" ("),l+=t("core","shared by {sharer}",{sharer:d}),c||(l+=")")}var u=this.model.get("shares")[a],p=u.password,m=null!==p&&""!==p,f=u.send_password_by_talk,g=this.model.getNote(a);return _.extend({},{cid:this.cid,hasSharePermission:this.model.hasSharePermission(a),editPermissionState:this.model.editPermissionState(a),hasCreatePermission:this.model.hasCreatePermission(a),hasUpdatePermission:this.model.hasUpdatePermission(a),hasDeletePermission:this.model.hasDeletePermission(a),sharedBy:o,sharedByDisplayName:d,shareWith:n,shareWithDisplayName:s,shareWithAvatar:i,shareWithTitle:l,shareType:r,shareId:this.model.get("shares")[a].id,modSeed:i||r!==OC.Share.SHARE_TYPE_USER&&r!==OC.Share.SHARE_TYPE_CIRCLE&&r!==OC.Share.SHARE_TYPE_ROOM,owner:h,isShareWithCurrentUser:r===OC.Share.SHARE_TYPE_USER&&n===oc_current_user,canUpdateShareSettings:o===oc_current_user||h===oc_current_user,isRemoteShare:r===OC.Share.SHARE_TYPE_REMOTE,isRemoteGroupShare:r===OC.Share.SHARE_TYPE_REMOTE_GROUP,isNoteAvailable:r!==OC.Share.SHARE_TYPE_REMOTE&&r!==OC.Share.SHARE_TYPE_REMOTE_GROUP,isMailShare:r===OC.Share.SHARE_TYPE_EMAIL,isCircleShare:r===OC.Share.SHARE_TYPE_CIRCLE,isFileSharedByMail:r===OC.Share.SHARE_TYPE_EMAIL&&!this.model.isFolder(),isPasswordSet:m&&!f,isPasswordByTalkSet:m&&f,isTalkEnabled:void 0!==oc_appswebroots.spreed,secureDropMode:!this.model.hasReadPermission(a),hasExpireDate:null!==this.model.getExpireDate(a),shareNote:g,hasNote:""!==g,expireDate:moment(this.model.getExpireDate(a),"YYYY-MM-DD").format("DD-MM-YYYY"),passwordPlaceholder:m?"**********":e,passwordByTalkPlaceholder:m&&f?"**********":e})},getShareProperties:function(){return{unshareLabel:t("core","Unshare"),addNoteLabel:t("core","Note to recipient"),canShareLabel:t("core","Can reshare"),canEditLabel:t("core","Can edit"),createPermissionLabel:t("core","Can create"),updatePermissionLabel:t("core","Can change"),deletePermissionLabel:t("core","Can delete"),secureDropLabel:t("core","File drop (upload only)"),expireDateLabel:t("core","Set expiration date"),passwordLabel:t("core","Password protect"),passwordByTalkLabel:t("core","Password protect by Talk"),crudsLabel:t("core","Access control"),expirationDatePlaceholder:t("core","Expiration date"),defaultExpireDate:moment().add(1,"day").format("DD-MM-YYYY"),triangleSImage:OC.imagePath("core","actions/triangle-s"),isResharingAllowed:this.configModel.get("isResharingAllowed"),isPasswordForMailSharesRequired:this.configModel.get("isPasswordForMailSharesRequired"),sharePermissionPossible:this.model.sharePermissionPossible(),editPermissionPossible:this.model.editPermissionPossible(),createPermissionPossible:this.model.createPermissionPossible(),updatePermissionPossible:this.model.updatePermissionPossible(),deletePermissionPossible:this.model.deletePermissionPossible(),sharePermission:OC.PERMISSION_SHARE,createPermission:OC.PERMISSION_CREATE,updatePermission:OC.PERMISSION_UPDATE,deletePermission:OC.PERMISSION_DELETE,readPermission:OC.PERMISSION_READ,isFolder:this.model.isFolder()}},getShareeList:function(){var e=this.getShareProperties();if(!this.model.hasUserShares())return[];for(var a=this.model.get("shares"),t=[],n=0;n<a.length;n++){var s=this.getShareeObject(n);s.shareType!==OC.Share.SHARE_TYPE_LINK&&t.push(_.extend({},e,s))}return t},getLinkReshares:function(){var e={unshareLabel:t("core","Unshare")};if(!this.model.hasUserShares())return[];for(var a=this.model.get("shares"),n=[],s=0;s<a.length;s++){var i=this.getShareeObject(s);i.shareType===OC.Share.SHARE_TYPE_LINK&&n.push(_.extend({},e,i,{shareInitiator:a[s].uid_owner,shareInitiatorText:t("core","{shareInitiatorDisplayName} shared via link",{shareInitiatorDisplayName:a[s].displayname_owner})}))}return n},render:function(){if(this._renderPermissionChange){var e=parseInt(this._renderPermissionChange,10),a=this.model.findShareWithIndex(e),t=this.getShareeObject(a);$.extend(t,this.getShareProperties()),this.$("li[data-share-id="+e+"]").find(".sharingOptionsGroup .popovermenu").replaceWith(this.popoverMenuTemplate(t))}else this.$el.html(this.template({cid:this.cid,sharees:this.getShareeList(),linkReshares:this.getLinkReshares()})),this.$(".avatar").each(function(){var e=$(this);e.hasClass("imageplaceholderseed")?(e.css({width:32,height:32}),e.data("avatar")?(e.css("border-radius","0%"),e.css("background","url("+e.data("avatar")+") no-repeat"),e.css("background-size","31px")):e.imageplaceholder(e.data("seed"))):e.avatar(e.data("username"),32,void 0,void 0,void 0,e.data("displayname"))}),this.$(".has-tooltip").tooltip({placement:"bottom"}),this.$("ul.shareWithList > li").each(function(){var e=$(this),a=e.data("share-with"),t=e.data("share-type");e.find("div.avatar, span.username").contactsMenu(a,t,e)});var n=this;if(this.getShareeList().forEach(function(e){var a=n.$("#canEdit-"+n.cid+"-"+e.shareId);1===a.length&&(a.prop("checked","checked"===e.editPermissionState),e.isFolder&&a.prop("indeterminate","indeterminate"===e.editPermissionState))}),this.$(".popovermenu").on("afterHide",function(){n._menuOpen=!1}),this.$(".popovermenu").on("beforeHide",function(){var e=parseInt(n._menuOpen,10);if(!_.isNaN(e)){var a=".expirationDateContainer-"+n.cid+"-"+e,t="#expirationDatePicker-"+n.cid+"-"+e,s="#expireDate-"+n.cid+"-"+e;$(s).prop("checked")&&($(t).removeClass("hidden-visually"),$(a).removeClass("hasDatepicker"),$(a+" .ui-datepicker").hide())}}),!1!==this._menuOpen){var s=parseInt(this._menuOpen,10);if(!_.isNaN(s)){var i="li[data-share-id="+s+"]";OC.showMenu(null,this.$(i+" .sharingOptionsGroup .popovermenu"))}}return this._renderPermissionChange=!1,autosize(this.$el.find(".share-note-form .share-note")),this.delegateEvents(),this},template:function(e){var a=e.sharees;if(_.isArray(a))for(var t=0;t<a.length;t++)e.sharees[t].popoverMenu=this.popoverMenuTemplate(a[t]);return OC.Share.Templates.sharedialogshareelistview(e)},popoverMenuTemplate:function(e){return OC.Share.Templates.sharedialogshareelistview_popover_menu(e)},showNoteForm:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target).closest("li"),t=a.next("li.share-note-form");a.find(".share-note-delete").toggleClass("hidden"),t.toggleClass("hidden"),t.find("textarea").focus()},deleteNote:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=a.closest("li"),s=n.next("li.share-note-form");console.log(s.find(".share-note")),s.find(".share-note").val(""),s.addClass("hidden"),n.find(".share-note-delete").addClass("hidden"),this.sendNote("",t,n)},updateNote:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=a.closest("li.share-note-form"),s=n.prev("li"),i=n.find(".share-note").val().trim();i.length<1||this.sendNote(i,t,s)},sendNote:function(e,a,t){var n=t.next("li.share-note-form"),s=n.find("input.share-note-submit"),i=n.find("input.share-note-error");s.prop("disabled",!0),t.find(".icon-loading-small").removeClass("hidden"),t.find(".icon-edit").hide();$.ajax({method:"PUT",url:OC.linkToOCS("apps/files_sharing/api/v1/shares",2)+a+"?"+OC.buildQueryString({format:"json"}),data:{note:e},complete:function(){s.prop("disabled",!1),t.find(".icon-loading-small").addClass("hidden"),t.find(".icon-edit").show()},error:function(){i.show(),setTimeout(function(){i.hide()},3e3)}})},onUnshare:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target);a.is("a")||(a=a.closest("a"));var n=a.find(".icon-loading-small").eq(0);if(!n.hasClass("hidden"))return!1;n.removeClass("hidden");var s=a.closest("li[data-share-id]"),i=s.data("share-id");return this.model.removeShare(i).done(function(){s.remove()}).fail(function(){n.addClass("hidden"),OC.Notification.showTemporary(t("core","Could not unshare"))}),!1},onToggleMenu:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target).closest("li[data-share-id]"),t=a.find(".sharingOptionsGroup .popovermenu");OC.showMenu(null,t),this._menuOpen=a.data("share-id")},onExpireDateChange:function(e){var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=".expirationDateContainer-"+this.cid+"-"+t,s=$(n),i=a.prop("checked");s.toggleClass("hidden",!i),i?(a.closest("li").next("li").removeClass("hidden"),this.showDatePicker(e)):(a.closest("li").next("li").addClass("hidden"),this.setExpirationDate(t,""))},showDatePicker:function(e){var a=$(e.target).closest("li[data-share-id]").data("share-id"),t="#expirationDatePicker-"+this.cid+"-"+a,n=this;$(t).datepicker({dateFormat:"dd-mm-yy",onSelect:function(e){n.setExpirationDate(a,e)}}),$(t).focus()},setExpirationDate:function(e,a){this.model.updateShare(e,{expireDate:a},{})},onMailSharePasswordProtectChange:function(a){var t=$(a.target),n=t.closest("li[data-share-id]").data("share-id"),s=".passwordMenu-"+this.cid+"-"+n,i=$(s),l=this.$el.find(s+" .icon-loading-small"),r="#passwordField-"+this.cid+"-"+n,o=$(r),d=t.prop("checked"),h=$("#passwordByTalk-"+this.cid+"-"+n),c=h.prop("checked");if(d||c){if(d){if(c){this.model.updateShare(n,{sendPasswordByTalk:!1});var u=".passwordByTalkMenu-"+this.cid+"-"+n;$(u).addClass("hidden"),h.prop("checked",!1)}i.toggleClass("hidden",!d),o="#passwordField-"+this.cid+"-"+n,this.$(o).focus()}}else this.model.updateShare(n,{password:"",sendPasswordByTalk:!1}),o.attr("value",""),o.removeClass("error"),o.tooltip("hide"),l.addClass("hidden"),o.attr("placeholder",e),i.toggleClass("hidden",!d)},onMailSharePasswordProtectByTalkChange:function(a){var t=$(a.target),n=t.closest("li[data-share-id]").data("share-id"),s=".passwordByTalkMenu-"+this.cid+"-"+n,i=$(s),l=this.$el.find(s+" .icon-loading-small"),r="#passwordByTalkField-"+this.cid+"-"+n,o=$(r),d=t.prop("checked"),h=$("#password-"+this.cid+"-"+n),c=h.prop("checked");if(d){if(d){if(c){var u=".passwordMenu-"+this.cid+"-"+n;$(u).addClass("hidden"),h.prop("checked",!1)}i.toggleClass("hidden",!d),o="#passwordByTalkField-"+this.cid+"-"+n,this.$(o).focus()}}else this.model.updateShare(n,{password:"",sendPasswordByTalk:!1}),o.attr("value",""),o.removeClass("error"),o.tooltip("hide"),l.addClass("hidden"),o.attr("placeholder",e),i.toggleClass("hidden",!d)},onMailSharePasswordKeyUp:function(e){13===e.keyCode&&this.onMailSharePasswordEntered(e)},onMailSharePasswordEntered:function(a){var t,n=$(a.target),s=n.closest("li[data-share-id]").data("share-id"),i=".passwordMenu-"+this.cid+"-"+s,l=".passwordByTalkMenu-"+this.cid+"-"+s,r=n.attr("id").startsWith("passwordByTalk");if((t=r?this.$el.find(l+" .icon-loading-small"):this.$el.find(i+" .icon-loading-small")).hasClass("hidden")){n.removeClass("error");var o=n.val();""!==o&&"**********"!==o&&o!==e&&(t.removeClass("hidden").addClass("inlineblock"),this.model.updateShare(s,{password:o,sendPasswordByTalk:r},{error:function(e,a){n.tooltip("destroy"),t.removeClass("inlineblock").addClass("hidden"),n.addClass("error"),n.attr("title",a),n.tooltip({placement:"bottom",trigger:"manual"}),n.tooltip("show")},success:function(e,a){n.blur(),n.attr("value",""),n.attr("placeholder","**********"),t.removeClass("inlineblock").addClass("hidden")}}))}},onPermissionChange:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),n=a.closest("li[data-share-id]"),s=n.data("share-id"),i=OC.PERMISSION_READ;if(this.model.isFolder()){var l,r=$(".permissions",n).not('input[name="edit"]').not('input[name="share"]');if("edit"===a.attr("name"))l=a.is(":checked"),$(r).prop("checked",l),l&&(i|=OC.PERMISSION_CREATE|OC.PERMISSION_UPDATE|OC.PERMISSION_DELETE);else{var o=r.filter(":checked").length;l=o===r.length;var d=$('input[name="edit"]',n);d.prop("checked",l),d.prop("indeterminate",!l&&o>0)}}else"edit"===a.attr("name")&&a.is(":checked")&&(i|=OC.PERMISSION_UPDATE);$(".permissions",n).not('input[name="edit"]').filter(":checked").each(function(e,a){i|=$(a).data("permissions")}),n.find("input[type=checkbox]").prop("disabled",!0);var h=function(){n.find("input[type=checkbox]").prop("disabled",!1)};this.model.updateShare(s,{permissions:i},{error:function(e,a){OC.dialogs.alert(a,t("core","Error while sharing")),h()},success:h}),this._renderPermissionChange=s},onSecureDropChange:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),n=a.closest("li[data-share-id]"),s=n.data("share-id"),i=OC.PERMISSION_CREATE|OC.PERMISSION_UPDATE|OC.PERMISSION_DELETE|OC.PERMISSION_READ;a.is(":checked")&&(i=OC.PERMISSION_CREATE|OC.PERMISSION_UPDATE|OC.PERMISSION_DELETE),n.find("input[type=checkbox]").prop("disabled",!0);var l=function(){n.find("input[type=checkbox]").prop("disabled",!1)};this.model.updateShare(s,{permissions:i},{error:function(e,a){OC.dialogs.alert(a,t("core","Error while sharing")),l()},success:l}),this._renderPermissionChange=s}});OC.Share.ShareDialogShareeListView=a}()},function(e,a){!function(){OC.Share||(OC.Share={});var e=OC.Backbone.View.extend({_templates:{},_showLink:!0,_lookup:!1,_lookupAllowed:!1,tagName:"div",configModel:void 0,resharerInfoView:void 0,linkShareView:void 0,shareeListView:void 0,_lastSuggestions:void 0,_lastRecommendations:void 0,_pendingOperationsCount:0,events:{"focus .shareWithField":"onShareWithFieldFocus","input .shareWithField":"onShareWithFieldChanged","click .shareWithConfirm":"_confirmShare"},initialize:function(e){var a=this;if(this.model.on("fetchError",function(){OC.Notification.showTemporary(t("core","Share details could not be loaded for this item."))}),_.isUndefined(e.configModel))throw"missing OC.Share.ShareConfigModel";this.configModel=e.configModel,this.configModel.on("change:isRemoteShareAllowed",function(){a.render()}),this.configModel.on("change:isRemoteGroupShareAllowed",function(){a.render()}),this.model.on("change:permissions",function(){a.render()}),this.model.on("request",this._onRequest,this),this.model.on("sync",this._onEndRequest,this);var n={model:this.model,configModel:this.configModel},s={resharerInfoView:"ShareDialogResharerInfoView",linkShareView:"ShareDialogLinkShareView",shareeListView:"ShareDialogShareeListView"};for(var i in s){var l=s[i];this[i]=_.isUndefined(e[i])?new OC.Share[l](n):e[i]}_.bindAll(this,"autocompleteHandler","_onSelectRecipient","onShareWithFieldChanged","onShareWithFieldFocus"),OC.Plugins.attach("OC.Share.ShareDialogView",this)},onShareWithFieldChanged:function(){var e=this.$el.find(".shareWithField");e.val().length<2&&e.removeClass("error").tooltip("hide")},onShareWithFieldFocus:function(){var e=this.$el.find(".shareWithField");e.autocomplete("search",e.val())},_getSuggestions:function(e,a,n,s){if(this._lastSuggestions&&this._lastSuggestions.searchTerm===e&&this._lastSuggestions.lookup===s&&this._lastSuggestions.perPage===a&&this._lastSuggestions.model===n)return this._lastSuggestions.promise;var i=$.Deferred(),l=this;return $.get(OC.linkToOCS("apps/files_sharing/api/v1")+"sharees",{format:"json",search:e,lookup:s,perPage:a,itemType:n.get("itemType")},function(s){if(100===s.ocs.meta.statuscode){var r=function(e,a,t,s,i,l,r){var o,d,h,c,u,p,m,f,g;for(void 0===i&&(i=[]),void 0===l&&(l=[]),void 0===r&&(r=[]),o=e.length,f=0;f<o;f++)if(e[f].value.shareWith===OC.currentUser){e.splice(f,1);break}if(n.hasReshare())for(o=e.length,f=0;f<o;f++)if(e[f].value.shareWith===n.getReshareOwner()){e.splice(f,1);break}var v=n.get("shares"),S=v.length;for(f=0;f<S;f++){var C=v[f];if(C.share_type===OC.Share.SHARE_TYPE_USER){for(o=e.length,g=0;g<o;g++)if(e[g].value.shareWith===C.share_with){e.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_GROUP){for(d=a.length,g=0;g<d;g++)if(a[g].value.shareWith===C.share_with){a.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_REMOTE){for(h=t.length,g=0;g<h;g++)if(t[g].value.shareWith===C.share_with){t.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_REMOTE_GROUP){for(c=s.length,g=0;g<c;g++)if(s[g].value.shareWith===C.share_with){s.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_EMAIL){for(u=i.length,g=0;g<u;g++)if(i[g].value.shareWith===C.share_with){i.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_CIRCLE){for(p=l.length,g=0;g<p;g++)if(l[g].value.shareWith===C.share_with){l.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_ROOM)for(m=r.length,g=0;g<m;g++)if(r[g].value.shareWith===C.share_with){r.splice(g,1);break}}};r(s.ocs.data.exact.users,s.ocs.data.exact.groups,s.ocs.data.exact.remotes,s.ocs.data.exact.remote_groups,s.ocs.data.exact.emails,s.ocs.data.exact.circles,s.ocs.data.exact.rooms);var o=s.ocs.data.exact.users,d=s.ocs.data.exact.groups,h=s.ocs.data.exact.remotes,c=s.ocs.data.exact.remote_groups,u=[];void 0!==s.ocs.data.emails&&(u=s.ocs.data.exact.emails);var p=[];void 0!==s.ocs.data.circles&&(p=s.ocs.data.exact.circles);var m=[];void 0!==s.ocs.data.rooms&&(m=s.ocs.data.exact.rooms);var f=o.concat(d).concat(h).concat(c).concat(u).concat(p).concat(m);r(s.ocs.data.users,s.ocs.data.groups,s.ocs.data.remotes,s.ocs.data.remote_groups,s.ocs.data.emails,s.ocs.data.circles,s.ocs.data.rooms);var g=s.ocs.data.users,v=s.ocs.data.groups,S=s.ocs.data.remotes,C=s.ocs.data.remote_groups,w=s.ocs.data.lookup,b=s.ocs.data.lookupEnabled,P=[];void 0!==s.ocs.data.emails&&(P=s.ocs.data.emails);var _=[];void 0!==s.ocs.data.circles&&(_=s.ocs.data.circles);var E=[];void 0!==s.ocs.data.rooms&&(E=s.ocs.data.rooms);for(var k=f.concat(g).concat(v).concat(S).concat(C).concat(P).concat(_).concat(E).concat(w).sort((R="uuid",function(e,a){var t="",n="";return void 0!==e[R]&&(t=e[R]),void 0!==a[R]&&(n=a[R]),t<n?-1:t>n?1:0})),O=null,x=k.length,y=(s=[],0);y<x;y++)void 0!==k[y].uuid&&k[y].uuid===O&&(k[y].merged=!0),e!==k[y].name&&void 0!==k[y].merged||s.push(k[y]),O=k[y].uuid;var T=oc_config["sharing.maxAutocompleteResults"]>0&&Math.min(a,oc_config["sharing.maxAutocompleteResults"])<=Math.max(g.length+o.length,v.length+d.length,C.length+c.length,S.length+h.length,P.length+u.length,_.length+p.length,E.length+m.length,w.length);!l._lookup&&b&&s.push({label:t("core","Search globally"),value:{},lookup:!0}),i.resolve(s,f,T,b)}else i.reject(s.ocs.meta.message);var R}).fail(function(){i.reject()}),this._lastSuggestions={searchTerm:e,lookup:s,perPage:a,model:n,promise:i.promise()},this._lastSuggestions.promise},_getRecommendations:function(e){if(this._lastRecommendations&&this._lastRecommendations.model===e)return this._lastRecommendations.promise;var a=$.Deferred();return $.get(OC.linkToOCS("apps/files_sharing/api/v1")+"sharees_recommended",{format:"json",itemType:e.get("itemType")},function(t){if(100===t.ocs.meta.statuscode){var n=function(a,t,n,s,i,l,r){var o,d,h,c,u,p,m,f,g;for(void 0===i&&(i=[]),void 0===l&&(l=[]),void 0===r&&(r=[]),o=a.length,f=0;f<o;f++)if(a[f].value.shareWith===OC.currentUser){a.splice(f,1);break}if(e.hasReshare())for(o=a.length,f=0;f<o;f++)if(a[f].value.shareWith===e.getReshareOwner()){a.splice(f,1);break}var v=e.get("shares"),S=v.length;for(f=0;f<S;f++){var C=v[f];if(C.share_type===OC.Share.SHARE_TYPE_USER){for(o=a.length,g=0;g<o;g++)if(a[g].value.shareWith===C.share_with){a.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_GROUP){for(d=t.length,g=0;g<d;g++)if(t[g].value.shareWith===C.share_with){t.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_REMOTE){for(h=n.length,g=0;g<h;g++)if(n[g].value.shareWith===C.share_with){n.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_REMOTE_GROUP){for(c=s.length,g=0;g<c;g++)if(s[g].value.shareWith===C.share_with){s.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_EMAIL){for(u=i.length,g=0;g<u;g++)if(i[g].value.shareWith===C.share_with){i.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_CIRCLE){for(p=l.length,g=0;g<p;g++)if(l[g].value.shareWith===C.share_with){l.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_ROOM)for(m=r.length,g=0;g<m;g++)if(r[g].value.shareWith===C.share_with){r.splice(g,1);break}}};n(t.ocs.data.exact.users,t.ocs.data.exact.groups,t.ocs.data.exact.remotes,t.ocs.data.exact.remote_groups,t.ocs.data.exact.emails,t.ocs.data.exact.circles,t.ocs.data.exact.rooms);var s=t.ocs.data.exact.users,i=t.ocs.data.exact.groups,l=t.ocs.data.exact.remotes||[],r=t.ocs.data.exact.remote_groups||[],o=[];void 0!==t.ocs.data.emails&&(o=t.ocs.data.exact.emails);var d=[];void 0!==t.ocs.data.circles&&(d=t.ocs.data.exact.circles);var h=[];void 0!==t.ocs.data.rooms&&(h=t.ocs.data.exact.rooms);var c=s.concat(i).concat(l).concat(r).concat(o).concat(d).concat(h);n(t.ocs.data.users,t.ocs.data.groups,t.ocs.data.remotes,t.ocs.data.remote_groups,t.ocs.data.emails,t.ocs.data.circles,t.ocs.data.rooms);var u=t.ocs.data.users,p=t.ocs.data.groups,m=t.ocs.data.remotes||[],f=t.ocs.data.remote_groups||[],g=t.ocs.data.lookup||[],v=[];void 0!==t.ocs.data.emails&&(v=t.ocs.data.emails);var S=[];void 0!==t.ocs.data.circles&&(S=t.ocs.data.circles);var C=[];void 0!==t.ocs.data.rooms&&(C=t.ocs.data.rooms);for(var w=c.concat(u).concat(p).concat(m).concat(f).concat(v).concat(S).concat(C).concat(g).sort((k="uuid",function(e,a){var t="",n="";return void 0!==e[k]&&(t=e[k]),void 0!==a[k]&&(n=a[k]),t<n?-1:t>n?1:0})),b=null,P=w.length,_=(t=[],0);_<P;_++)void 0!==w[_].uuid&&w[_].uuid===b&&(w[_].merged=!0),void 0===w[_].merged&&t.push(w[_]),b=w[_].uuid;var E=oc_config["sharing.maxAutocompleteResults"]>0&&Math.min(perPage,oc_config["sharing.maxAutocompleteResults"])<=Math.max(u.length+s.length,p.length+i.length,f.length+r.length,m.length+l.length,v.length+o.length,S.length+d.length,C.length+h.length,g.length);a.resolve(t,c,E)}else a.reject(t.ocs.meta.message);var k}).fail(function(){a.reject()}),this._lastRecommendations={model:e,promise:a.promise()},this._lastRecommendations.promise},recommendationHandler:function(e){var a=$(".shareWithField");this._getRecommendations(this.model).done(function(t){console.info("recommendations",t),t.length>0?(a.autocomplete("option","autoFocus",!0),e(t)):(console.info("no sharing recommendations found"),e())}).fail(function(e){console.error("could not load recommendations",e)})},autocompleteHandler:function(e,a){if(0===e.term.length)return console.info(e.term,"empty search term -> using recommendations"),void this.recommendationHandler(a);var s=$(".shareWithField"),i=this,l=this.$el.find(".shareWithLoading"),r=this.$el.find(".shareWithConfirm"),o=oc_config["sharing.minSearchStringLength"];if(e.term.trim().length<o){var d=n("core","At least {count} character is needed for autocompletion","At least {count} characters are needed for autocompletion",o,{count:o});return s.addClass("error").attr("data-original-title",d).tooltip("hide").tooltip({placement:"bottom",trigger:"manual"}).tooltip("fixTitle").tooltip("show"),void a()}l.removeClass("hidden"),l.addClass("inlineblock"),r.addClass("hidden"),this._pendingOperationsCount++,s.removeClass("error").tooltip("hide");var h=parseInt(oc_config["sharing.maxAutocompleteResults"],10)||200;this._getSuggestions(e.term.trim(),h,i.model,i._lookup).done(function(e,n,o){if(i._pendingOperationsCount--,0===i._pendingOperationsCount&&(l.addClass("hidden"),l.removeClass("inlineblock"),r.removeClass("hidden")),e.length>0){if(s.autocomplete("option","autoFocus",!0),a(e),o){var d=t("core","This list is maybe truncated - please refine your search term to see more results.");$(".ui-autocomplete").append('<li class="autocomplete-note">'+d+"</li>")}}else{var h=t("core","No users or groups found for {search}",{search:s.val()});i.configModel.get("allowGroupSharing")||(h=t("core","No users found for {search}",{search:$(".shareWithField").val()})),s.addClass("error").attr("data-original-title",h).tooltip("hide").tooltip({placement:"top",trigger:"manual"}).tooltip("fixTitle").tooltip("show"),a()}}).fail(function(e){i._pendingOperationsCount--,0===i._pendingOperationsCount&&(l.addClass("hidden"),l.removeClass("inlineblock"),r.removeClass("hidden")),e?OC.Notification.showTemporary(t("core",'An error occurred ("{message}"). Please try again',{message:e})):OC.Notification.showTemporary(t("core","An error occurred. Please try again"))})},autocompleteRenderItem:function(e,a){var n="icon-user",s=escapeHTML(a.label),i="",l="";void 0!==a.type&&null!==a.type&&(l=function(e){switch(e){case"HOME":return t("core","Home");case"WORK":return t("core","Work");case"OTHER":return t("core","Other");default:return""+e}}(a.type)+" "),void 0!==a.name&&(s=escapeHTML(a.name)),a.value.shareType===OC.Share.SHARE_TYPE_GROUP?n="icon-contacts-dark":a.value.shareType===OC.Share.SHARE_TYPE_REMOTE?(n="icon-shared",i+=a.value.shareWith):a.value.shareType===OC.Share.SHARE_TYPE_REMOTE_GROUP?(s=t("core","{sharee} (remote group)",{sharee:s},void 0,{escape:!1}),n="icon-shared",i+=a.value.shareWith):a.value.shareType===OC.Share.SHARE_TYPE_EMAIL?(n="icon-mail",i+=a.value.shareWith):a.value.shareType===OC.Share.SHARE_TYPE_CIRCLE?(s=t("core","{sharee} ({type}, {owner})",{sharee:s,type:a.value.circleInfo,owner:a.value.circleOwner},void 0,{escape:!1}),n="icon-circle"):a.value.shareType===OC.Share.SHARE_TYPE_ROOM&&(n="icon-talk");var r=$("<div class='share-autocomplete-item'/>");if(a.merged)r.addClass("merged"),s=a.value.shareWith,i=l;else if(a.lookup)s=a.label,n=!1,r.append('<span class="icon icon-search search-globally"></span>');else{var o=$("<div class='avatardiv'></div>").appendTo(r);a.value.shareType===OC.Share.SHARE_TYPE_USER||a.value.shareType===OC.Share.SHARE_TYPE_CIRCLE?o.avatar(a.value.shareWith,32,void 0,void 0,void 0,a.label):(void 0===a.uuid&&(a.uuid=s),o.imageplaceholder(a.uuid,s,32)),i=l+i}return""!==i&&r.addClass("with-description"),$("<div class='autocomplete-item-text'></div>").html(s.replace(new RegExp(this.term,"gi"),"<span class='ui-state-highlight'>$&</span>")+'<span class="autocomplete-item-details">'+i+"</span>").appendTo(r),r.attr("title",a.value.shareWith),n&&r.append('<span class="icon '+n+'" title="'+s+'"></span>'),r=$("<a>").append(r),$("<li>").addClass(a.value.shareType===OC.Share.SHARE_TYPE_GROUP?"group":"user").append(r).appendTo(e)},_onSelectRecipient:function(e,a){var t=this;if(9==e.keyCode)return e.preventDefault(),void 0!==a.item.name?e.target.value=a.item.name:e.target.value=a.item.label,setTimeout(function(){$(e.target).attr("disabled",!1).autocomplete("search",$(e.target).val())},0),!1;if(a.item.lookup){this._lookup=!0;var n=this.$el.find(".shareWithField"),s=n.val();return setTimeout(function(){console.debug("searching again, but globally. search term: "+s),n.autocomplete("search",s)},0),!1}e.preventDefault(),e.stopImmediatePropagation(),$(e.target).attr("disabled",!0).val(a.item.label);var i=this.$el.find(".shareWithLoading"),l=this.$el.find(".shareWithConfirm");i.removeClass("hidden"),i.addClass("inlineblock"),l.addClass("hidden"),this._pendingOperationsCount++,this.model.addShare(a.item.value,{success:function(){t._lastSuggestions=void 0,$(e.target).val("").attr("disabled",!1),t._pendingOperationsCount--,0===t._pendingOperationsCount&&(i.addClass("hidden"),i.removeClass("inlineblock"),l.removeClass("hidden"))},error:function(a,n){OC.Notification.showTemporary(n),$(e.target).attr("disabled",!1).autocomplete("search",$(e.target).val()),t._pendingOperationsCount--,0===t._pendingOperationsCount&&(i.addClass("hidden"),i.removeClass("inlineblock"),l.removeClass("hidden"))}})},_confirmShare:function(){var e=this,a=$(".shareWithField"),t=this.$el.find(".shareWithLoading"),n=this.$el.find(".shareWithConfirm");t.removeClass("hidden"),t.addClass("inlineblock"),n.addClass("hidden"),this._pendingOperationsCount++,a.prop("disabled",!0),a.autocomplete("close"),a.autocomplete("disable");var s=function(){e._pendingOperationsCount--,0===e._pendingOperationsCount&&(t.addClass("hidden"),t.removeClass("inlineblock"),n.removeClass("hidden")),a.prop("disabled",!1),a.focus()},i=parseInt(oc_config["sharing.maxAutocompleteResults"],10)||200;this._getSuggestions(a.val(),i,this.model,this._lookup).done(function(t,n){if(0===t.length)return s(),void a.autocomplete("enable");if(1!==n.length)return s(),void a.autocomplete("enable");e.model.addShare(n[0].value,{success:function(){e._lastSuggestions=void 0,a.val(""),s(),a.autocomplete("enable")},error:function(e,t){s(),a.autocomplete("enable"),OC.Notification.showTemporary(t)}})}).fail(function(e){s(),a.autocomplete("enable")})},_toggleLoading:function(e){this._loading=e,this.$el.find(".subView").toggleClass("hidden",e),this.$el.find(".loading").toggleClass("hidden",!e)},_onRequest:function(){this._loadingOnce||this._toggleLoading(!0)},_onEndRequest:function(){var e=this;this._toggleLoading(!1),this._loadingOnce||(this._loadingOnce=!0,OC.Util.isIE()||_.defer(function(){e.$(".shareWithField").focus()}))},render:function(){var e=this,a=OC.Share.Templates.sharedialogview;this.$el.html(a({cid:this.cid,shareLabel:t("core","Share"),sharePlaceholder:this._renderSharePlaceholderPart(),isSharingAllowed:this.model.sharePermissionPossible()}));var n=this.$el.find(".shareWithField");if(n.length){n.autocomplete({minLength:0,delay:750,focus:function(e){e.preventDefault()},source:this.autocompleteHandler,select:this._onSelectRecipient,open:function(){var e=$(this).autocomplete("widget"),a=e.find("li").size();e.removeClass("item-count-1"),e.removeClass("item-count-2"),a<=2&&e.addClass("item-count-"+a)}}).data("ui-autocomplete")._renderItem=this.autocompleteRenderItem,n.on("keydown",null,function(a){return 13!==a.keyCode||(e._confirmShare(),!1)})}return this.resharerInfoView.$el=this.$el.find(".resharerInfoView"),this.resharerInfoView.render(),this.linkShareView.$el=this.$el.find(".linkShareView"),this.linkShareView.render(),this.shareeListView.$el=this.$el.find(".shareeListView"),this.shareeListView.render(),this.$el.find(".hasTooltip").tooltip(),this},setShowLink:function(e){this._showLink="boolean"!=typeof e||e,this.linkShareView.showLink=this._showLink},_renderSharePlaceholderPart:function(){var e=this.configModel.get("isRemoteShareAllowed"),a=this.configModel.get("isMailShareAllowed");return!e&&a?t("core","Name or email address..."):e&&!a?t("core","Name or federated cloud ID..."):e&&a?t("core","Name, federated cloud ID or email address..."):t("core","Name...")}});OC.Share.ShareDialogView=e}()},function(e,a){OC.Share=_.extend(OC.Share||{},{SHARE_TYPE_USER:0,SHARE_TYPE_GROUP:1,SHARE_TYPE_LINK:3,SHARE_TYPE_EMAIL:4,SHARE_TYPE_REMOTE:6,SHARE_TYPE_CIRCLE:7,SHARE_TYPE_GUEST:8,SHARE_TYPE_REMOTE_GROUP:9,SHARE_TYPE_ROOM:10,_REMOTE_OWNER_REGEXP:new RegExp("^([^@]*)@(([^@]*)@)?([^/]*)([/](.*)?)?$"),itemShares:[],statuses:{},currentShares:{},droppedDown:!1,loadIcons:function(e,a,t){var n=a.dirInfo.path;"/"===n&&(n=""),n+="/"+a.dirInfo.name,$.get(OC.linkToOCS("apps/files_sharing/api/v1",2)+"shares",{subfiles:"true",path:n,format:"json"},function(n){n&&200===n.ocs.meta.statuscode&&(OC.Share.statuses={},$.each(n.ocs.data,function(e,a){a.item_source in OC.Share.statuses||(OC.Share.statuses[a.item_source]={link:!1}),a.share_type===OC.Share.SHARE_TYPE_LINK&&(OC.Share.statuses[a.item_source]={link:!0})}),_.isFunction(t)?t(OC.Share.statuses):OC.Share.updateIcons(e,a))})},updateIcons:function(e,a){var n,s,i;for(n in!a&&OCA.Files&&(a=OCA.Files.App.fileList),a&&(s=a.$fileList,i=a.getCurrentDirectory()),OC.Share.statuses){var l="icon-shared",r=OC.Share.statuses[n],o=r.link;if(o&&(l="icon-public"),"file"!==e&&"folder"!==e)$('a.share[data-item="'+n+'"] .icon').removeClass("icon-shared icon-public").addClass(l);else{var d,h=s.find('tr[data-id="'+n+'"]'),c=OC.imagePath("core","filetypes/folder-shared");if(h.length>0)this.markFileAsShared(h,!0,o);else{var u=i;if(u.length>1)for(var p="",m=u;m!=p;){if(m===r.path&&!r.link){var f,g=s.find('.fileactions .action[data-action="Share"]'),v=s.find(".filename");for(f=0;f<g.length;f++)(d=$(g[f]).find("img")).attr("src")!==OC.imagePath("core","actions/public")&&(d.attr("src",image),$(g[f]).addClass("permanent"),$(g[f]).html("<span> "+t("core","Shared")+"</span>").prepend(d));for(f=0;f<v.length;f++)"dir"===$(v[f]).closest("tr").data("type")&&$(v[f]).find(".thumbnail").css("background-image","url("+c+")")}p=m,m=OC.Share.dirname(m)}}}}},updateIcon:function(e,a){var t=!1,n=!1,s="";if($.each(OC.Share.itemShares,function(e){if(OC.Share.itemShares[e])if(e==OC.Share.SHARE_TYPE_LINK){if(1==OC.Share.itemShares[e])return t=!0,s="icon-public",void(n=!0)}else OC.Share.itemShares[e].length>0&&(t=!0,s="icon-shared")}),"file"!=e&&"folder"!=e)$('a.share[data-item="'+a+'"] .icon').removeClass("icon-shared icon-public").addClass(s);else{var i=$("tr").filterAttr("data-id",String(a));i.length>0&&i.each(function(){OC.Share.markFileAsShared($(this),t,n)})}t?(OC.Share.statuses[a]=OC.Share.statuses[a]||{},OC.Share.statuses[a].link=n):delete OC.Share.statuses[a]},_formatRemoteShare:function(e,a,t){var n=this._REMOTE_OWNER_REGEXP.exec(e);if(!n)return'<span class="avatar" data-username="'+escapeHTML(e)+'" title="'+t+" "+escapeHTML(a)+'"></span>'+('<span class="hidden-visually">'+t+" "+escapeHTML(a)+"</span> ");var s=n[1],i=n[3],l=n[4],r=t+" "+s;i&&(r+="@"+i),l&&(i||(i="…"),r+="@"+l);var o='<span class="remoteAddress" title="'+escapeHTML(r)+'">';return o+='<span class="username">'+escapeHTML(s)+"</span>",i&&(o+='<span class="userDomain">@'+escapeHTML(i)+"</span>"),o+="</span> "},_formatShareList:function(e){var a=this;return(e=_.toArray(e)).sort(function(e,a){return e.shareWithDisplayName.localeCompare(a.shareWithDisplayName)}),$.map(e,function(e){return a._formatRemoteShare(e.shareWith,e.shareWithDisplayName,t("core","Shared with"))})},markFileAsShared:function(e,a,n){var s,i,l,r,o=e.find('.fileactions .action[data-action="Share"]'),d=e.data("type"),h=o.find(".icon"),c=e.attr("data-share-owner-id"),u=e.attr("data-share-owner"),p="icon-shared";if(o.removeClass("shared-style"),"dir"===d&&(a||n||c))r=n?OC.MimeType.getIconUrl("dir-public"):OC.MimeType.getIconUrl("dir-shared"),e.find(".filename .thumbnail").css("background-image","url("+r+")"),e.attr("data-icon",r);else if("dir"===d){var m=e.attr("data-e2eencrypted"),f=e.attr("data-mounttype");"true"===m?(r=OC.MimeType.getIconUrl("dir-encrypted"),e.attr("data-icon",r)):f&&0===f.indexOf("external")?(r=OC.MimeType.getIconUrl("dir-external"),e.attr("data-icon",r)):(r=OC.MimeType.getIconUrl("dir"),e.removeAttr("data-icon")),e.find(".filename .thumbnail").css("background-image","url("+r+")")}a||c?(i=e.data("share-recipient-data"),o.addClass("shared-style"),l="<span>"+t("core","Shared")+"</span>",c?(s=t("core","Shared by"),l=this._formatRemoteShare(c,u,s)):i&&(l=this._formatShareList(i)),o.html(l).prepend(h),(c||i)&&(o.find(".avatar").each(function(){$(this).avatar($(this).data("username"),32)}),o.find("span[title]").tooltip({placement:"top"}))):o.html('<span class="hidden-visually">'+t("core","Shared")+"</span>").prepend(h);n&&(p="icon-public"),h.removeClass("icon-shared icon-public").addClass(p)},showDropDown:function(e,a,t,n,s,i){var l=new OC.Share.ShareConfigModel,r={itemType:e,itemSource:a,possiblePermissions:s},o=new OC.Share.ShareItemModel(r,{configModel:l}),d=new OC.Share.ShareDialogView({id:"dropdown",model:o,configModel:l,className:"drop shareDropDown",attributes:{"data-item-source-name":i,"data-item-type":e,"data-item-source":a}});d.setShowLink(n);var h=d.render().$el;h.appendTo(t),h.slideDown(OC.menuSpeed,function(){OC.Share.droppedDown=!0}),o.fetch()},hideDropDown:function(e){OC.Share.currentShares=null,$("#dropdown").slideUp(OC.menuSpeed,function(){OC.Share.droppedDown=!1,$("#dropdown").remove(),"undefined"!=typeof FileActions&&$("tr").removeClass("mouseOver"),e&&e.call()})},dirname:function(e){return e.replace(/\\/g,"/").replace(/\/[^\/]*$/,"")}}),$(document).ready(function(){if("undefined"!=typeof monthNames){var e=new Date;e.setDate(e.getDate()+1),$.datepicker.setDefaults({monthNames:monthNames,monthNamesShort:monthNamesShort,dayNames:dayNames,dayNamesMin:dayNamesMin,dayNamesShort:dayNamesShort,firstDay:firstDay,minDate:e})}$(this).click(function(e){var a=$(e.target),t=!a.is(".drop, .ui-datepicker-next, .ui-datepicker-prev, .ui-icon")&&!a.closest("#ui-datepicker-div").length&&!a.closest(".ui-autocomplete").length;OC.Share&&OC.Share.droppedDown&&t&&0===$("#dropdown").has(e.target).length&&OC.Share.hideDropDown()})})}]);
+!function(){OC.Share||(OC.Share={}),OC.Share.Social={};var e=OC.Backbone.Model.extend({defaults:{key:null,url:null,name:null,iconClass:null,newWindow:!0}});OC.Share.Social.Model=e;var a=OC.Backbone.Collection.extend({model:OC.Share.Social.Model,comparator:"key"});OC.Share.Social.Collection=new a}()},function(e,a){!function(){OC.Share||(OC.Share={});var e=OC.Backbone.View.extend({id:"shareDialogResharerInfo",tagName:"div",className:"reshare",configModel:void 0,_template:void 0,initialize:function(e){var a=this;if(this.model.on("change:reshare",function(){a.render()}),_.isUndefined(e.configModel))throw"missing OC.Share.ShareConfigModel";this.configModel=e.configModel},render:function(){if(!this.model.hasReshare()||this.model.getReshareOwner()===OC.currentUser)return this.$el.empty(),this;var e=this.template(),a=this.model.getReshareOwnerDisplayname(),n=this.model.getReshareNote(),s="";return s=this.model.getReshareType()===OC.Share.SHARE_TYPE_GROUP?t("core","Shared with you and the group {group} by {owner}",{group:this.model.getReshareWithDisplayName(),owner:a},void 0,{escape:!1}):this.model.getReshareType()===OC.Share.SHARE_TYPE_CIRCLE?t("core","Shared with you and {circle} by {owner}",{circle:this.model.getReshareWithDisplayName(),owner:a},void 0,{escape:!1}):this.model.getReshareType()===OC.Share.SHARE_TYPE_ROOM?this.model.get("reshare").share_with_displayname?t("core","Shared with you and the conversation {conversation} by {owner}",{conversation:this.model.getReshareWithDisplayName(),owner:a},void 0,{escape:!1}):t("core","Shared with you in a conversation by {owner}",{owner:a},void 0,{escape:!1}):t("core","Shared with you by {owner}",{owner:a},void 0,{escape:!1}),this.$el.html(e({reshareOwner:this.model.getReshareOwner(),sharedByText:s,shareNote:n,hasShareNote:""!==n})),this.$el.find(".avatar").each(function(){var e=$(this);e.avatar(e.data("username"),32)}),this.$el.find(".reshare").contactsMenu(this.model.getReshareOwner(),OC.Share.SHARE_TYPE_USER,this.$el),this},template:function(){return OC.Share.Templates.sharedialogresharerinfoview}});OC.Share.ShareDialogResharerInfoView=e}()},function(e,a){!function(){OC.Share||(OC.Share={});var e=t("core","Choose a password for the public link"),a=t("core",'Choose a password for the public link or press the "Enter" key'),n=OC.Backbone.View.extend({id:"shareDialogLinkShare",configModel:void 0,showLink:!0,showPending:!1,password:"",newShareId:"new-share",events:{"click .share-menu .icon-more":"onToggleMenu","change .hideDownloadCheckbox":"onHideDownloadChange","click input.share-pass-submit":"onPasswordEntered","keyup input.linkPassText":"onPasswordKeyUp","change .showPasswordCheckbox":"onShowPasswordClick","change .passwordByTalkCheckbox":"onPasswordByTalkChange","change .publicEditingCheckbox":"onAllowPublicEditingChange","click .linkText":"onLinkTextClick","click .pop-up":"onPopUpClick","change .publicUploadRadio":"onPublicUploadChange","click .expireDate":"onExpireDateChange","change .datepicker":"onChangeExpirationDate","click .datepicker":"showDatePicker","click .share-add":"showNoteForm","click .share-note-delete":"deleteNote","click .share-note-submit":"updateNote","click .unshare":"onUnshare","click .new-share":"newShare","submit .enforcedPassForm":"enforcedPasswordSet"},initialize:function(e){var a=this;if(this.model.on("change:permissions",function(){a.render()}),this.model.on("change:itemType",function(){a.render()}),this.model.on("change:allowPublicUploadStatus",function(){a.render()}),this.model.on("change:hideFileListStatus",function(){a.render()}),this.model.on("change:linkShares",function(e,t){var n,s=e.previous("linkShares");if(s.length===t.length)for(n=0;n<t.length;n++){if(t[n].id!==s[n].id)return;if(t[n].password!==s[n].password)return void a.render()}}),_.isUndefined(e.configModel))throw"missing OC.Share.ShareConfigModel";this.configModel=e.configModel;var n=new Clipboard(".clipboard-button");n.on("success",function(e){var a=$(e.trigger);a.tooltip("hide").attr("data-original-title",t("core","Copied!")).tooltip("fixTitle").tooltip({placement:"bottom",trigger:"manual"}).tooltip("show"),_.delay(function(){a.tooltip("hide").attr("data-original-title",t("core","Copy link")).tooltip("fixTitle")},3e3)}),n.on("error",function(e){var a=$(e.trigger),n=a.next(".share-menu").find(".popovermenu"),s=n.find("li.linkTextMenu"),i=s.find(".linkText");a.closest("li[data-share-id]").data("share-id");OC.showMenu(null,n);var l="";l=/iPhone|iPad/i.test(navigator.userAgent)?t("core","Not supported!"):/Mac/i.test(navigator.userAgent)?t("core","Press ⌘-C to copy."):t("core","Press Ctrl-C to copy."),s.removeClass("hidden"),i.select(),i.tooltip("hide").attr("data-original-title",l).tooltip("fixTitle").tooltip({placement:"bottom",trigger:"manual"}).tooltip("show"),_.delay(function(){i.tooltip("hide"),i.attr("data-original-title",t("core","Copy")).tooltip("fixTitle")},3e3)})},newShare:function(e){var a=this,n=$(e.target).closest("li[data-share-id]"),s=n.data("share-id"),i=n.find(".share-menu > .icon-loading-small");if(!i.hasClass("hidden")&&""===this.password)return!1;n.find(".icon").addClass("hidden"),i.removeClass("hidden"),OC.hideMenus();var l={},r=this.configModel.get("enforcePasswordForPublicLink");if(this.configModel.get("isDefaultExpireDateEnforced")){var o=this.configModel.get("defaultExpireDate"),d=moment().add(o,"day").format("DD-MM-YYYY");l.expireDate=d}r&&""!==this.password&&(l.password=this.password);var h=!1;r&&!this.showPending&&""===this.password?(this.showPending=s,(a=this.render()).$el.find(".pending #enforcedPassText").focus()):$.when(this.model.saveLinkShare(l,{success:function(){if(i.addClass("hidden"),n.find(".icon").removeClass("hidden"),a.render(),h){var e=a.$el.find("li[data-share-id]"),t=a.$el.find('li[data-share-id="'+h+'"]');if(t&&1===e.length){var s=t.find(".popovermenu");OC.showMenu(null,s)}}},error:function(){}})).fail(function(e){if(a.password="",r&&e&&e.responseJSON&&e.responseJSON.ocs.meta&&e.responseJSON.ocs.meta.message){var s=a.$el.find(".pending #enforcedPassText");s.tooltip("destroy"),s.attr("title",e.responseJSON.ocs.meta.message),s.tooltip({placement:"bottom",trigger:"manual"}),s.tooltip("show")}else OC.Notification.showTemporary(t("core","Unable to create a link share")),i.addClass("hidden"),n.find(".icon").removeClass("hidden")}).then(function(e){h=e.ocs.data.id})},enforcedPasswordSet:function(e){e.preventDefault();var a=$(e.target).find("input.enforcedPassText");this.password=a.val(),this.showPending=!1,this.newShare(e)},onLinkTextClick:function(e){var a=$(e.target).closest("li[data-share-id]").find(".linkText");a.focus(),a.select()},onHideDownloadChange:function(e){var a=$(e.target).closest("li[data-share-id]"),n=a.data("share-id"),s=a.find(".hideDownloadCheckbox");s.siblings(".icon-loading-small").removeClass("hidden").addClass("inlineblock");var i=!1;s.is(":checked")&&(i=!0),this.model.saveLinkShare({hideDownload:i,cid:n},{success:function(){s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")},error:function(e,a){OC.Notification.showTemporary(t("core","Unable to toggle this option")),s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")}})},onShowPasswordClick:function(e){var a=$(e.target).closest("li[data-share-id]"),t=a.data("share-id");a.find(".linkPass").slideToggle(OC.menuSpeed),a.find(".linkPassMenu").toggleClass("hidden"),a.find(".showPasswordCheckbox").is(":checked")?OC.Util.isIE()||a.find(".linkPassText").focus():this.model.saveLinkShare({password:"",cid:t})},onPasswordKeyUp:function(e){13===e.keyCode&&this.onPasswordEntered(e)},onPasswordEntered:function(t){var n=$(t.target).closest("li[data-share-id]"),s=n.data("share-id"),i=n.find(".linkPassMenu .icon-loading-small");if(i.hasClass("hidden")){var l=n.find(".linkPassText");l.removeClass("error"),l.parent().find("input").removeClass("error");var r=l.val();if(n.find(".linkPassText").attr("placeholder")===a)r===a&&(r="");else if(""===r||"**********"===r||r===e)return;i.removeClass("hidden").addClass("inlineblock"),this.model.saveLinkShare({password:r,cid:s},{complete:function(e){i.removeClass("inlineblock").addClass("hidden")},error:function(e,a){l.parent().find("input").addClass("error");var t=l.parent();t.tooltip("destroy"),l.addClass("error"),t.attr("title",a),t.tooltip({placement:"bottom",trigger:"manual"}),t.tooltip("show")}})}},onPasswordByTalkChange:function(e){var a=$(e.target).closest("li[data-share-id]"),n=a.data("share-id"),s=a.find(".passwordByTalkCheckbox");s.siblings(".icon-loading-small").removeClass("hidden").addClass("inlineblock");var i=!1;s.is(":checked")&&(i=!0),this.model.saveLinkShare({sendPasswordByTalk:i,cid:n},{success:function(){s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")},error:function(e,a){OC.Notification.showTemporary(t("core","Unable to toggle this option")),s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")}})},onAllowPublicEditingChange:function(e){var a=$(e.target).closest("li[data-share-id]"),n=a.data("share-id"),s=a.find(".publicEditingCheckbox");s.siblings(".icon-loading-small").removeClass("hidden").addClass("inlineblock");var i=OC.PERMISSION_READ;s.is(":checked")&&(i=OC.PERMISSION_UPDATE|OC.PERMISSION_READ),this.model.saveLinkShare({permissions:i,cid:n},{success:function(){s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")},error:function(e,a){OC.Notification.showTemporary(t("core","Unable to toggle this option")),s.siblings(".icon-loading-small").addClass("hidden").removeClass("inlineblock")}})},onPublicUploadChange:function(e){var a=$(e.target).closest("li[data-share-id]").data("share-id"),t=e.currentTarget.value;this.model.saveLinkShare({permissions:t,cid:a})},showNoteForm:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),t=(a.closest("li[data-share-id]"),a.closest("li")),n=t.next("li.share-note-form");t.find(".share-note-delete").toggleClass("hidden"),n.toggleClass("hidden"),n.find("textarea").focus()},deleteNote:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=a.closest("li"),s=n.next("li.share-note-form");s.find(".share-note").val(""),s.addClass("hidden"),n.find(".share-note-delete").addClass("hidden"),this.sendNote("",t,n)},updateNote:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=a.closest("li.share-note-form"),s=n.prev("li"),i=n.find(".share-note").val().trim();i.length<1||this.sendNote(i,t,s)},sendNote:function(e,a,t){var n=t.next("li.share-note-form"),s=n.find("input.share-note-submit"),i=n.find("input.share-note-error");s.prop("disabled",!0),t.find(".icon-loading-small").removeClass("hidden"),t.find(".icon-edit").hide();$.ajax({method:"PUT",url:OC.linkToOCS("apps/files_sharing/api/v1/shares",2)+a+"?"+OC.buildQueryString({format:"json"}),data:{note:e},complete:function(){s.prop("disabled",!1),t.find(".icon-loading-small").addClass("hidden"),t.find(".icon-edit").show()},error:function(){i.show(),setTimeout(function(){i.hide()},3e3)}})},render:function(){this.$el.find(".has-tooltip").tooltip(),this.password="";var n=this.template(),s=this.model.sharePermissionPossible();if(!s||!this.showLink||!this.configModel.isShareWithLinkAllowed()){var i={shareAllowed:!1};return s||(i.noSharingPlaceholder=t("core","Resharing is not allowed")),this.$el.html(n(i)),this}var l=this.model.isFolder()&&this.model.createPermissionPossible()&&this.configModel.isPublicUploadEnabled(),r="";this.model.isPublicEditingAllowed()&&(r='checked="checked"');var o=this.configModel.get("enforcePasswordForPublicLink"),d=(this.configModel.get("enableLinkPasswordByDefault"),this.configModel.get("enforcePasswordForPublicLink")?e:a),h=!this.model.isFolder()&&this.model.updatePermissionPossible(),c=this.configModel.get("isDefaultExpireDateEnforced"),u=new Date;u.setDate(u.getDate()+1),$.datepicker.setDefaults({minDate:u}),this.$el.find(".datepicker").datepicker({dateFormat:"dd-mm-yy"});var p=4;oc_capabilities.password_policy&&oc_capabilities.password_policy.minLength&&(p=oc_capabilities.password_policy.minLength);var m={urlLabel:t("core","Link"),hideDownloadLabel:t("core","Hide download"),enablePasswordLabel:o?t("core","Password protection enforced"):t("core","Password protect"),passwordLabel:t("core","Password"),passwordPlaceholderInitial:d,publicUpload:l,publicEditing:h,publicEditingChecked:r,publicEditingLabel:t("core","Allow editing"),mailPrivatePlaceholder:t("core","Email link to person"),mailButtonText:t("core","Send"),publicUploadRWLabel:t("core","Allow upload and editing"),publicUploadRLabel:t("core","Read only"),publicUploadWLabel:t("core","File drop (upload only)"),publicUploadRWValue:OC.PERMISSION_UPDATE|OC.PERMISSION_CREATE|OC.PERMISSION_READ|OC.PERMISSION_DELETE,publicUploadRValue:OC.PERMISSION_READ,publicUploadWValue:OC.PERMISSION_CREATE,expireDateLabel:c?t("core","Expiration date enforced"):t("core","Set expiration date"),expirationLabel:t("core","Expiration"),expirationDatePlaceholder:t("core","Expiration date"),isExpirationEnforced:c,isPasswordEnforced:o,defaultExpireDate:moment().add(1,"day").format("DD-MM-YYYY"),addNoteLabel:t("core","Note to recipient"),unshareLabel:t("core","Unshare"),unshareLinkLabel:t("core","Delete share link"),newShareLabel:t("core","Add another link")},f={isPasswordEnforced:o,enforcedPasswordLabel:t("core","Password protection for links is mandatory"),passwordPlaceholder:d,minPasswordLength:p},g=this.pendingPopoverMenuTemplate(_.extend({},f)),v=this.getShareeList();if(_.isArray(v))for(var S=0;S<v.length;S++){var C=[];OC.Share.Social.Collection.each(function(e){var a=e.get("url");a=a.replace("{{reference}}",v[S].shareLinkURL),C.push({url:a,label:t("core","Share to {name}",{name:e.get("name")}),name:e.get("name"),iconClass:e.get("iconClass"),newWindow:e.get("newWindow")})});var w=this.getPopoverObject(v[S]);v[S].popoverMenu=this.popoverMenuTemplate(_.extend({},m,w,{social:C})),v[S].pendingPopoverMenu=g}return this.$el.html(n({linkShares:v,shareAllowed:!0,nolinkShares:0===v.length,newShareLabel:t("core","Share link"),newShareTitle:t("core","New share link"),pendingPopoverMenu:g,showPending:this.showPending===this.newShareId,newShareId:this.newShareId})),this.delegateEvents(),autosize(this.$el.find(".share-note-form .share-note")),this},onToggleMenu:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target).closest("li[data-share-id]"),t=a.find(".sharingOptionsGroup .popovermenu");a.data("share-id");OC.showMenu(null,t);var n=!0===this.configModel.get("enableLinkPasswordByDefault");!(""!==t.find(".linkPassText").val())&&n&&t.find(".linkPassText").focus()},template:function(){return OC.Share.Templates.sharedialoglinkshareview},popoverMenuTemplate:function(e){return OC.Share.Templates.sharedialoglinkshareview_popover_menu(e)},pendingPopoverMenuTemplate:function(e){return OC.Share.Templates.sharedialoglinkshareview_popover_menu_pending(e)},onPopUpClick:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.currentTarget).data("url"),t=$(e.currentTarget).data("window");if($(e.currentTarget).tooltip("hide"),a)if(!0===t){var n=screen.width/2-300,s=screen.height/2-200;window.open(a,"name","width=600, height=400, top="+s+", left="+n)}else window.location.href=a},onExpireDateChange:function(e){var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=$("#expirationDateContainer-"+t),s=a.prop("checked");n.toggleClass("hidden",!s),s?(a.closest("li").next("li").removeClass("hidden"),this.showDatePicker(e)):(a.closest("li").next("li").addClass("hidden"),this.setExpirationDate("",t))},showDatePicker:function(e){var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=a.data("max-date"),s="#expirationDatePicker-"+t,i=this;$(s).datepicker({dateFormat:"dd-mm-yy",onSelect:function(e){i.setExpirationDate(e,t)},maxDate:n}),$(s).datepicker("show"),$(s).focus()},setExpirationDate:function(e,a){this.model.saveLinkShare({expireDate:e,cid:a})},onChangeExpirationDate:function(e){var a=$(e.target),t=a.val(),n=a.closest("li[data-share-id]").data("share-id"),s="#expirationDatePicker-"+n;this.setExpirationDate(t,n),$(s).datepicker("hide")},getShareeList:function(){var e=this.model.get("linkShares");if(!this.model.hasLinkShares())return[];for(var a=[],t=0;t<e.length;t++){var n=this.getShareeObject(t);a.push(_.extend({},n))}return a},getShareeObject:function(e){var a=this.model.get("linkShares")[e];return _.extend({},a,{cid:a.id,shareAllowed:!0,linkShareLabel:a.label?a.label:t("core","Share link"),popoverMenu:{},shareLinkURL:a.url,newShareTitle:t("core","New share link"),copyLabel:t("core","Copy link"),showPending:this.showPending===a.id,linkShareCreationDate:t("core","Created on {time}",{time:moment(1e3*a.stime).format("LLLL")})})},getPopoverObject:function(a){var n="",s="",i="";switch(this.model.linkSharePermissions(a.id)){case OC.PERMISSION_READ:s="checked";break;case OC.PERMISSION_CREATE:i="checked";break;case OC.PERMISSION_UPDATE|OC.PERMISSION_CREATE|OC.PERMISSION_READ|OC.PERMISSION_DELETE:n="checked"}var l,r=!!a.password,o=!0===this.configModel.get("enableLinkPasswordByDefault"),d=this.configModel.get("enforcePasswordForPublicLink"),h=this.configModel.get("isDefaultExpireDateEnforced"),c=this.configModel.get("defaultExpireDate"),u=!!a.expiration||h;u&&(l=moment(a.expiration,"YYYY-MM-DD").format("DD-MM-YYYY"));var p=void 0!==oc_appswebroots.spreed,m=a.sendPasswordByTalk,f=a.hideDownload,g=null;if(u&&h){var v=a.stime;_.isNumber(v)&&(v=new Date(1e3*v)),v||(v=new Date),v=OC.Util.stripTime(v).getTime(),g=new Date(v+24*c*3600*1e3)}return{cid:a.id,shareLinkURL:a.url,passwordPlaceholder:r?"**********":e,isPasswordSet:r||o||d,showPasswordByTalkCheckBox:p&&r,passwordByTalkLabel:t("core","Password protect by Talk"),isPasswordByTalkSet:m,publicUploadRWChecked:n,publicUploadRChecked:s,publicUploadWChecked:i,hasExpireDate:u,expireDate:l,shareNote:a.note,hasNote:""!==a.note,maxDate:g,hideDownload:f,isExpirationEnforced:h}},onUnshare:function(e){e.preventDefault(),e.stopPropagation();var a=this,n=$(e.target);n.is("a")||(n=n.closest("a"));var s=n.find(".icon-loading-small").eq(0);if(!s.hasClass("hidden"))return!1;s.removeClass("hidden");var i=n.closest("li[data-share-id]"),l=i.data("share-id");return a.model.removeShare(l,{success:function(){i.remove(),a.render()},error:function(){s.addClass("hidden"),OC.Notification.showTemporary(t("core","Could not unshare"))}}),!1}});OC.Share.ShareDialogLinkShareView=n}()},function(e,a){!function(){var e=t("core","Choose a password for the mail share");OC.Share||(OC.Share={});var a=OC.Backbone.View.extend({id:"shareDialogLinkShare",configModel:void 0,_menuOpen:!1,_renderPermissionChange:!1,events:{"click .unshare":"onUnshare","click .share-add":"showNoteForm","click .share-note-delete":"deleteNote","click .share-note-submit":"updateNote","click .share-menu .icon-more":"onToggleMenu","click .permissions":"onPermissionChange","click .expireDate":"onExpireDateChange","click .password":"onMailSharePasswordProtectChange","click .passwordByTalk":"onMailSharePasswordProtectByTalkChange","click .secureDrop":"onSecureDropChange","keyup input.passwordField":"onMailSharePasswordKeyUp","focusout input.passwordField":"onMailSharePasswordEntered","change .datepicker":"onChangeExpirationDate","click .datepicker":"showDatePicker"},initialize:function(e){if(_.isUndefined(e.configModel))throw"missing OC.Share.ShareConfigModel";this.configModel=e.configModel;var a=this;this.model.on("change:shares",function(){a.render()})},getShareeObject:function(a){var n=this.model.getShareWith(a),s=this.model.getShareWithDisplayName(a),i=this.model.getShareWithAvatar(a),l="",r=this.model.getShareType(a),o=this.model.getSharedBy(a),d=this.model.getSharedByDisplayName(a),h=this.model.getFileOwnerUid(a);if(r===OC.Share.SHARE_TYPE_GROUP?s=s+" ("+t("core","group")+")":r===OC.Share.SHARE_TYPE_REMOTE?s=s+" ("+t("core","remote")+")":r===OC.Share.SHARE_TYPE_REMOTE_GROUP?s=s+" ("+t("core","remote group")+")":r===OC.Share.SHARE_TYPE_EMAIL?s=s+" ("+t("core","email")+")":r===OC.Share.SHARE_TYPE_CIRCLE||r===OC.Share.SHARE_TYPE_ROOM&&(s=s+" ("+t("core","conversation")+")"),r===OC.Share.SHARE_TYPE_GROUP?l=n+" ("+t("core","group")+")":r===OC.Share.SHARE_TYPE_REMOTE?l=n+" ("+t("core","remote")+")":r===OC.Share.SHARE_TYPE_REMOTE_GROUP?l=n+" ("+t("core","remote group")+")":r===OC.Share.SHARE_TYPE_EMAIL?l=n+" ("+t("core","email")+")":r===OC.Share.SHARE_TYPE_CIRCLE&&(l=n,n="circle-"+a),o!==oc_current_user){var c=""===l;c||(l+=" ("),l+=t("core","shared by {sharer}",{sharer:d}),c||(l+=")")}var u=this.model.get("shares")[a],p=u.password,m=null!==p&&""!==p,f=u.send_password_by_talk,g=this.model.getNote(a);return _.extend({},{cid:this.cid,hasSharePermission:this.model.hasSharePermission(a),editPermissionState:this.model.editPermissionState(a),hasCreatePermission:this.model.hasCreatePermission(a),hasUpdatePermission:this.model.hasUpdatePermission(a),hasDeletePermission:this.model.hasDeletePermission(a),sharedBy:o,sharedByDisplayName:d,shareWith:n,shareWithDisplayName:s,shareWithAvatar:i,shareWithTitle:l,shareType:r,shareId:this.model.get("shares")[a].id,modSeed:i||r!==OC.Share.SHARE_TYPE_USER&&r!==OC.Share.SHARE_TYPE_CIRCLE&&r!==OC.Share.SHARE_TYPE_ROOM,owner:h,isShareWithCurrentUser:r===OC.Share.SHARE_TYPE_USER&&n===oc_current_user,canUpdateShareSettings:o===oc_current_user||h===oc_current_user,isRemoteShare:r===OC.Share.SHARE_TYPE_REMOTE,isRemoteGroupShare:r===OC.Share.SHARE_TYPE_REMOTE_GROUP,isNoteAvailable:r!==OC.Share.SHARE_TYPE_REMOTE&&r!==OC.Share.SHARE_TYPE_REMOTE_GROUP,isMailShare:r===OC.Share.SHARE_TYPE_EMAIL,isCircleShare:r===OC.Share.SHARE_TYPE_CIRCLE,isFileSharedByMail:r===OC.Share.SHARE_TYPE_EMAIL&&!this.model.isFolder(),isPasswordSet:m&&!f,isPasswordByTalkSet:m&&f,isTalkEnabled:void 0!==oc_appswebroots.spreed,secureDropMode:!this.model.hasReadPermission(a),hasExpireDate:null!==this.model.getExpireDate(a),shareNote:g,hasNote:""!==g,expireDate:moment(this.model.getExpireDate(a),"YYYY-MM-DD").format("DD-MM-YYYY"),passwordPlaceholder:m?"**********":e,passwordByTalkPlaceholder:m&&f?"**********":e})},getShareProperties:function(){return{unshareLabel:t("core","Unshare"),addNoteLabel:t("core","Note to recipient"),canShareLabel:t("core","Can reshare"),canEditLabel:t("core","Can edit"),createPermissionLabel:t("core","Can create"),updatePermissionLabel:t("core","Can change"),deletePermissionLabel:t("core","Can delete"),secureDropLabel:t("core","File drop (upload only)"),expireDateLabel:t("core","Set expiration date"),passwordLabel:t("core","Password protect"),passwordByTalkLabel:t("core","Password protect by Talk"),crudsLabel:t("core","Access control"),expirationDatePlaceholder:t("core","Expiration date"),defaultExpireDate:moment().add(1,"day").format("DD-MM-YYYY"),triangleSImage:OC.imagePath("core","actions/triangle-s"),isResharingAllowed:this.configModel.get("isResharingAllowed"),isPasswordForMailSharesRequired:this.configModel.get("isPasswordForMailSharesRequired"),sharePermissionPossible:this.model.sharePermissionPossible(),editPermissionPossible:this.model.editPermissionPossible(),createPermissionPossible:this.model.createPermissionPossible(),updatePermissionPossible:this.model.updatePermissionPossible(),deletePermissionPossible:this.model.deletePermissionPossible(),sharePermission:OC.PERMISSION_SHARE,createPermission:OC.PERMISSION_CREATE,updatePermission:OC.PERMISSION_UPDATE,deletePermission:OC.PERMISSION_DELETE,readPermission:OC.PERMISSION_READ,isFolder:this.model.isFolder()}},getShareeList:function(){var e=this.getShareProperties();if(!this.model.hasUserShares())return[];for(var a=this.model.get("shares"),t=[],n=0;n<a.length;n++){var s=this.getShareeObject(n);s.shareType!==OC.Share.SHARE_TYPE_LINK&&t.push(_.extend({},e,s))}return t},getLinkReshares:function(){var e={unshareLabel:t("core","Unshare")};if(!this.model.hasUserShares())return[];for(var a=this.model.get("shares"),n=[],s=0;s<a.length;s++){var i=this.getShareeObject(s);i.shareType===OC.Share.SHARE_TYPE_LINK&&n.push(_.extend({},e,i,{shareInitiator:a[s].uid_owner,shareInitiatorText:t("core","{shareInitiatorDisplayName} shared via link",{shareInitiatorDisplayName:a[s].displayname_owner})}))}return n},render:function(){if(this._renderPermissionChange){var e=parseInt(this._renderPermissionChange,10),a=this.model.findShareWithIndex(e),t=this.getShareeObject(a);$.extend(t,this.getShareProperties()),this.$("li[data-share-id="+e+"]").find(".sharingOptionsGroup .popovermenu").replaceWith(this.popoverMenuTemplate(t))}else this.$el.html(this.template({cid:this.cid,sharees:this.getShareeList(),linkReshares:this.getLinkReshares()})),this.$(".avatar").each(function(){var e=$(this);e.hasClass("imageplaceholderseed")?(e.css({width:32,height:32}),e.data("avatar")?(e.css("border-radius","0%"),e.css("background","url("+e.data("avatar")+") no-repeat"),e.css("background-size","31px")):e.imageplaceholder(e.data("seed"))):e.avatar(e.data("username"),32,void 0,void 0,void 0,e.data("displayname"))}),this.$(".has-tooltip").tooltip({placement:"bottom"}),this.$("ul.shareWithList > li").each(function(){var e=$(this),a=e.data("share-with"),t=e.data("share-type");e.find("div.avatar, span.username").contactsMenu(a,t,e)});var n=this;if(this.getShareeList().forEach(function(e){var a=n.$("#canEdit-"+n.cid+"-"+e.shareId);1===a.length&&(a.prop("checked","checked"===e.editPermissionState),e.isFolder&&a.prop("indeterminate","indeterminate"===e.editPermissionState))}),this.$(".popovermenu").on("afterHide",function(){n._menuOpen=!1}),this.$(".popovermenu").on("beforeHide",function(){var e=parseInt(n._menuOpen,10);if(!_.isNaN(e)){var a=".expirationDateContainer-"+n.cid+"-"+e,t="#expirationDatePicker-"+n.cid+"-"+e,s="#expireDate-"+n.cid+"-"+e;$(s).prop("checked")&&($(t).removeClass("hidden-visually"),$(a).removeClass("hasDatepicker"),$(a+" .ui-datepicker").hide())}}),!1!==this._menuOpen){var s=parseInt(this._menuOpen,10);if(!_.isNaN(s)){var i="li[data-share-id="+s+"]";OC.showMenu(null,this.$(i+" .sharingOptionsGroup .popovermenu"))}}return this._renderPermissionChange=!1,autosize(this.$el.find(".share-note-form .share-note")),this.delegateEvents(),this},template:function(e){var a=e.sharees;if(_.isArray(a))for(var t=0;t<a.length;t++)e.sharees[t].popoverMenu=this.popoverMenuTemplate(a[t]);return OC.Share.Templates.sharedialogshareelistview(e)},popoverMenuTemplate:function(e){return OC.Share.Templates.sharedialogshareelistview_popover_menu(e)},showNoteForm:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target).closest("li"),t=a.next("li.share-note-form");a.find(".share-note-delete").toggleClass("hidden"),t.toggleClass("hidden"),t.find("textarea").focus()},deleteNote:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=a.closest("li"),s=n.next("li.share-note-form");console.log(s.find(".share-note")),s.find(".share-note").val(""),s.addClass("hidden"),n.find(".share-note-delete").addClass("hidden"),this.sendNote("",t,n)},updateNote:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=a.closest("li.share-note-form"),s=n.prev("li"),i=n.find(".share-note").val().trim();i.length<1||this.sendNote(i,t,s)},sendNote:function(e,a,t){var n=t.next("li.share-note-form"),s=n.find("input.share-note-submit"),i=n.find("input.share-note-error");s.prop("disabled",!0),t.find(".icon-loading-small").removeClass("hidden"),t.find(".icon-edit").hide();$.ajax({method:"PUT",url:OC.linkToOCS("apps/files_sharing/api/v1/shares",2)+a+"?"+OC.buildQueryString({format:"json"}),data:{note:e},complete:function(){s.prop("disabled",!1),t.find(".icon-loading-small").addClass("hidden"),t.find(".icon-edit").show()},error:function(){i.show(),setTimeout(function(){i.hide()},3e3)}})},onUnshare:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target);a.is("a")||(a=a.closest("a"));var n=a.find(".icon-loading-small").eq(0);if(!n.hasClass("hidden"))return!1;n.removeClass("hidden");var s=a.closest("li[data-share-id]"),i=s.data("share-id");return this.model.removeShare(i).done(function(){s.remove()}).fail(function(){n.addClass("hidden"),OC.Notification.showTemporary(t("core","Could not unshare"))}),!1},onToggleMenu:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target).closest("li[data-share-id]"),t=a.find(".sharingOptionsGroup .popovermenu");OC.showMenu(null,t),this._menuOpen=a.data("share-id")},onExpireDateChange:function(e){var a=$(e.target),t=a.closest("li[data-share-id]").data("share-id"),n=".expirationDateContainer-"+this.cid+"-"+t,s=$(n),i=a.prop("checked");s.toggleClass("hidden",!i),i?(a.closest("li").next("li").removeClass("hidden"),this.showDatePicker(e)):(a.closest("li").next("li").addClass("hidden"),this.setExpirationDate(t,""))},showDatePicker:function(e){var a=$(e.target).closest("li[data-share-id]").data("share-id"),t="#expirationDatePicker-"+this.cid+"-"+a,n=this;$(t).datepicker({dateFormat:"dd-mm-yy",onSelect:function(e){n.setExpirationDate(a,e)}}),$(t).focus()},setExpirationDate:function(e,a){this.model.updateShare(e,{expireDate:a},{})},onMailSharePasswordProtectChange:function(a){var t=$(a.target),n=t.closest("li[data-share-id]").data("share-id"),s=".passwordMenu-"+this.cid+"-"+n,i=$(s),l=this.$el.find(s+" .icon-loading-small"),r="#passwordField-"+this.cid+"-"+n,o=$(r),d=t.prop("checked"),h=$("#passwordByTalk-"+this.cid+"-"+n),c=h.prop("checked");if(d||c){if(d){if(c){this.model.updateShare(n,{sendPasswordByTalk:!1});var u=".passwordByTalkMenu-"+this.cid+"-"+n;$(u).addClass("hidden"),h.prop("checked",!1)}i.toggleClass("hidden",!d),o="#passwordField-"+this.cid+"-"+n,this.$(o).focus()}}else this.model.updateShare(n,{password:"",sendPasswordByTalk:!1}),o.attr("value",""),o.removeClass("error"),o.tooltip("hide"),l.addClass("hidden"),o.attr("placeholder",e),i.toggleClass("hidden",!d)},onMailSharePasswordProtectByTalkChange:function(a){var t=$(a.target),n=t.closest("li[data-share-id]").data("share-id"),s=".passwordByTalkMenu-"+this.cid+"-"+n,i=$(s),l=this.$el.find(s+" .icon-loading-small"),r="#passwordByTalkField-"+this.cid+"-"+n,o=$(r),d=t.prop("checked"),h=$("#password-"+this.cid+"-"+n),c=h.prop("checked");if(d){if(d){if(c){var u=".passwordMenu-"+this.cid+"-"+n;$(u).addClass("hidden"),h.prop("checked",!1)}i.toggleClass("hidden",!d),o="#passwordByTalkField-"+this.cid+"-"+n,this.$(o).focus()}}else this.model.updateShare(n,{password:"",sendPasswordByTalk:!1}),o.attr("value",""),o.removeClass("error"),o.tooltip("hide"),l.addClass("hidden"),o.attr("placeholder",e),i.toggleClass("hidden",!d)},onMailSharePasswordKeyUp:function(e){13===e.keyCode&&this.onMailSharePasswordEntered(e)},onMailSharePasswordEntered:function(a){var t,n=$(a.target),s=n.closest("li[data-share-id]").data("share-id"),i=".passwordMenu-"+this.cid+"-"+s,l=".passwordByTalkMenu-"+this.cid+"-"+s,r=n.attr("id").startsWith("passwordByTalk");if((t=r?this.$el.find(l+" .icon-loading-small"):this.$el.find(i+" .icon-loading-small")).hasClass("hidden")){n.removeClass("error");var o=n.val();""!==o&&"**********"!==o&&o!==e&&(t.removeClass("hidden").addClass("inlineblock"),this.model.updateShare(s,{password:o,sendPasswordByTalk:r},{error:function(e,a){n.tooltip("destroy"),t.removeClass("inlineblock").addClass("hidden"),n.addClass("error"),n.attr("title",a),n.tooltip({placement:"bottom",trigger:"manual"}),n.tooltip("show")},success:function(e,a){n.blur(),n.attr("value",""),n.attr("placeholder","**********"),t.removeClass("inlineblock").addClass("hidden")}}))}},onPermissionChange:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),n=a.closest("li[data-share-id]"),s=n.data("share-id"),i=OC.PERMISSION_READ;if(this.model.isFolder()){var l,r=$(".permissions",n).not('input[name="edit"]').not('input[name="share"]');if("edit"===a.attr("name"))l=a.is(":checked"),$(r).prop("checked",l),l&&(i|=OC.PERMISSION_CREATE|OC.PERMISSION_UPDATE|OC.PERMISSION_DELETE);else{var o=r.filter(":checked").length;l=o===r.length;var d=$('input[name="edit"]',n);d.prop("checked",l),d.prop("indeterminate",!l&&o>0)}}else"edit"===a.attr("name")&&a.is(":checked")&&(i|=OC.PERMISSION_UPDATE);$(".permissions",n).not('input[name="edit"]').filter(":checked").each(function(e,a){i|=$(a).data("permissions")}),n.find("input[type=checkbox]").prop("disabled",!0);var h=function(){n.find("input[type=checkbox]").prop("disabled",!1)};this.model.updateShare(s,{permissions:i},{error:function(e,a){OC.dialogs.alert(a,t("core","Error while sharing")),h()},success:h}),this._renderPermissionChange=s},onSecureDropChange:function(e){e.preventDefault(),e.stopPropagation();var a=$(e.target),n=a.closest("li[data-share-id]"),s=n.data("share-id"),i=OC.PERMISSION_CREATE|OC.PERMISSION_UPDATE|OC.PERMISSION_DELETE|OC.PERMISSION_READ;a.is(":checked")&&(i=OC.PERMISSION_CREATE|OC.PERMISSION_UPDATE|OC.PERMISSION_DELETE),n.find("input[type=checkbox]").prop("disabled",!0);var l=function(){n.find("input[type=checkbox]").prop("disabled",!1)};this.model.updateShare(s,{permissions:i},{error:function(e,a){OC.dialogs.alert(a,t("core","Error while sharing")),l()},success:l}),this._renderPermissionChange=s}});OC.Share.ShareDialogShareeListView=a}()},function(e,a){!function(){OC.Share||(OC.Share={});var e=OC.Backbone.View.extend({_templates:{},_showLink:!0,_lookup:!1,_lookupAllowed:!1,tagName:"div",configModel:void 0,resharerInfoView:void 0,linkShareView:void 0,shareeListView:void 0,_lastSuggestions:void 0,_lastRecommendations:void 0,_pendingOperationsCount:0,events:{"focus .shareWithField":"onShareWithFieldFocus","input .shareWithField":"onShareWithFieldChanged","click .shareWithConfirm":"_confirmShare"},initialize:function(e){var a=this;if(this.model.on("fetchError",function(){OC.Notification.showTemporary(t("core","Share details could not be loaded for this item."))}),_.isUndefined(e.configModel))throw"missing OC.Share.ShareConfigModel";this.configModel=e.configModel,this.configModel.on("change:isRemoteShareAllowed",function(){a.render()}),this.configModel.on("change:isRemoteGroupShareAllowed",function(){a.render()}),this.model.on("change:permissions",function(){a.render()}),this.model.on("request",this._onRequest,this),this.model.on("sync",this._onEndRequest,this);var n={model:this.model,configModel:this.configModel},s={resharerInfoView:"ShareDialogResharerInfoView",linkShareView:"ShareDialogLinkShareView",shareeListView:"ShareDialogShareeListView"};for(var i in s){var l=s[i];this[i]=_.isUndefined(e[i])?new OC.Share[l](n):e[i]}_.bindAll(this,"autocompleteHandler","_onSelectRecipient","onShareWithFieldChanged","onShareWithFieldFocus"),OC.Plugins.attach("OC.Share.ShareDialogView",this)},onShareWithFieldChanged:function(){var e=this.$el.find(".shareWithField");e.val().length<2&&e.removeClass("error").tooltip("hide")},onShareWithFieldFocus:function(){var e=this.$el.find(".shareWithField");e.autocomplete("search",e.val())},_getSuggestions:function(e,a,n,s){if(this._lastSuggestions&&this._lastSuggestions.searchTerm===e&&this._lastSuggestions.lookup===s&&this._lastSuggestions.perPage===a&&this._lastSuggestions.model===n)return this._lastSuggestions.promise;var i=$.Deferred(),l=this;return $.get(OC.linkToOCS("apps/files_sharing/api/v1")+"sharees",{format:"json",search:e,lookup:s,perPage:a,itemType:n.get("itemType")},function(s){if(100===s.ocs.meta.statuscode){var r=function(e,a,t,s,i,l,r){var o,d,h,c,u,p,m,f,g;for(void 0===i&&(i=[]),void 0===l&&(l=[]),void 0===r&&(r=[]),o=e.length,f=0;f<o;f++)if(e[f].value.shareWith===OC.currentUser){e.splice(f,1);break}if(n.hasReshare())for(o=e.length,f=0;f<o;f++)if(e[f].value.shareWith===n.getReshareOwner()){e.splice(f,1);break}var v=n.get("shares"),S=v.length;for(f=0;f<S;f++){var C=v[f];if(C.share_type===OC.Share.SHARE_TYPE_USER){for(o=e.length,g=0;g<o;g++)if(e[g].value.shareWith===C.share_with){e.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_GROUP){for(d=a.length,g=0;g<d;g++)if(a[g].value.shareWith===C.share_with){a.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_REMOTE){for(h=t.length,g=0;g<h;g++)if(t[g].value.shareWith===C.share_with){t.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_REMOTE_GROUP){for(c=s.length,g=0;g<c;g++)if(s[g].value.shareWith===C.share_with){s.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_EMAIL){for(u=i.length,g=0;g<u;g++)if(i[g].value.shareWith===C.share_with){i.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_CIRCLE){for(p=l.length,g=0;g<p;g++)if(l[g].value.shareWith===C.share_with){l.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_ROOM)for(m=r.length,g=0;g<m;g++)if(r[g].value.shareWith===C.share_with){r.splice(g,1);break}}};r(s.ocs.data.exact.users,s.ocs.data.exact.groups,s.ocs.data.exact.remotes,s.ocs.data.exact.remote_groups,s.ocs.data.exact.emails,s.ocs.data.exact.circles,s.ocs.data.exact.rooms);var o=s.ocs.data.exact.users,d=s.ocs.data.exact.groups,h=s.ocs.data.exact.remotes,c=s.ocs.data.exact.remote_groups,u=[];void 0!==s.ocs.data.emails&&(u=s.ocs.data.exact.emails);var p=[];void 0!==s.ocs.data.circles&&(p=s.ocs.data.exact.circles);var m=[];void 0!==s.ocs.data.rooms&&(m=s.ocs.data.exact.rooms);var f=o.concat(d).concat(h).concat(c).concat(u).concat(p).concat(m);r(s.ocs.data.users,s.ocs.data.groups,s.ocs.data.remotes,s.ocs.data.remote_groups,s.ocs.data.emails,s.ocs.data.circles,s.ocs.data.rooms);var g=s.ocs.data.users,v=s.ocs.data.groups,S=s.ocs.data.remotes,C=s.ocs.data.remote_groups,w=s.ocs.data.lookup,b=s.ocs.data.lookupEnabled,P=[];void 0!==s.ocs.data.emails&&(P=s.ocs.data.emails);var _=[];void 0!==s.ocs.data.circles&&(_=s.ocs.data.circles);var E=[];void 0!==s.ocs.data.rooms&&(E=s.ocs.data.rooms);for(var k=f.concat(g).concat(v).concat(S).concat(C).concat(P).concat(_).concat(E).concat(w).sort((R="uuid",function(e,a){var t="",n="";return void 0!==e[R]&&(t=e[R]),void 0!==a[R]&&(n=a[R]),t<n?-1:t>n?1:0})),O=null,x=k.length,y=(s=[],0);y<x;y++)void 0!==k[y].uuid&&k[y].uuid===O&&(k[y].merged=!0),e!==k[y].name&&void 0!==k[y].merged||s.push(k[y]),O=k[y].uuid;var T=oc_config["sharing.maxAutocompleteResults"]>0&&Math.min(a,oc_config["sharing.maxAutocompleteResults"])<=Math.max(g.length+o.length,v.length+d.length,C.length+c.length,S.length+h.length,P.length+u.length,_.length+p.length,E.length+m.length,w.length);!l._lookup&&b&&s.push({label:t("core","Search globally"),value:{},lookup:!0}),i.resolve(s,f,T,b)}else i.reject(s.ocs.meta.message);var R}).fail(function(){i.reject()}),this._lastSuggestions={searchTerm:e,lookup:s,perPage:a,model:n,promise:i.promise()},this._lastSuggestions.promise},_getRecommendations:function(e){if(this._lastRecommendations&&this._lastRecommendations.model===e)return this._lastRecommendations.promise;var a=$.Deferred();return $.get(OC.linkToOCS("apps/files_sharing/api/v1")+"sharees_recommended",{format:"json",itemType:e.get("itemType")},function(t){if(100===t.ocs.meta.statuscode){var n=function(a,t,n,s,i,l,r){var o,d,h,c,u,p,m,f,g;for(void 0===i&&(i=[]),void 0===l&&(l=[]),void 0===r&&(r=[]),o=a.length,f=0;f<o;f++)if(a[f].value.shareWith===OC.currentUser){a.splice(f,1);break}if(e.hasReshare())for(o=a.length,f=0;f<o;f++)if(a[f].value.shareWith===e.getReshareOwner()){a.splice(f,1);break}var v=e.get("shares"),S=v.length;for(f=0;f<S;f++){var C=v[f];if(C.share_type===OC.Share.SHARE_TYPE_USER){for(o=a.length,g=0;g<o;g++)if(a[g].value.shareWith===C.share_with){a.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_GROUP){for(d=t.length,g=0;g<d;g++)if(t[g].value.shareWith===C.share_with){t.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_REMOTE){for(h=n.length,g=0;g<h;g++)if(n[g].value.shareWith===C.share_with){n.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_REMOTE_GROUP){for(c=s.length,g=0;g<c;g++)if(s[g].value.shareWith===C.share_with){s.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_EMAIL){for(u=i.length,g=0;g<u;g++)if(i[g].value.shareWith===C.share_with){i.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_CIRCLE){for(p=l.length,g=0;g<p;g++)if(l[g].value.shareWith===C.share_with){l.splice(g,1);break}}else if(C.share_type===OC.Share.SHARE_TYPE_ROOM)for(m=r.length,g=0;g<m;g++)if(r[g].value.shareWith===C.share_with){r.splice(g,1);break}}};n(t.ocs.data.exact.users,t.ocs.data.exact.groups,t.ocs.data.exact.remotes,t.ocs.data.exact.remote_groups,t.ocs.data.exact.emails,t.ocs.data.exact.circles,t.ocs.data.exact.rooms);var s=t.ocs.data.exact.users,i=t.ocs.data.exact.groups,l=t.ocs.data.exact.remotes||[],r=t.ocs.data.exact.remote_groups||[],o=[];void 0!==t.ocs.data.emails&&(o=t.ocs.data.exact.emails);var d=[];void 0!==t.ocs.data.circles&&(d=t.ocs.data.exact.circles);var h=[];void 0!==t.ocs.data.rooms&&(h=t.ocs.data.exact.rooms);var c=s.concat(i).concat(l).concat(r).concat(o).concat(d).concat(h);n(t.ocs.data.users,t.ocs.data.groups,t.ocs.data.remotes,t.ocs.data.remote_groups,t.ocs.data.emails,t.ocs.data.circles,t.ocs.data.rooms);var u=t.ocs.data.users,p=t.ocs.data.groups,m=t.ocs.data.remotes||[],f=t.ocs.data.remote_groups||[],g=t.ocs.data.lookup||[],v=[];void 0!==t.ocs.data.emails&&(v=t.ocs.data.emails);var S=[];void 0!==t.ocs.data.circles&&(S=t.ocs.data.circles);var C=[];void 0!==t.ocs.data.rooms&&(C=t.ocs.data.rooms);for(var w=c.concat(u).concat(p).concat(m).concat(f).concat(v).concat(S).concat(C).concat(g).sort((k="uuid",function(e,a){var t="",n="";return void 0!==e[k]&&(t=e[k]),void 0!==a[k]&&(n=a[k]),t<n?-1:t>n?1:0})),b=null,P=w.length,_=(t=[],0);_<P;_++)void 0!==w[_].uuid&&w[_].uuid===b&&(w[_].merged=!0),void 0===w[_].merged&&t.push(w[_]),b=w[_].uuid;var E=oc_config["sharing.maxAutocompleteResults"]>0&&Math.min(perPage,oc_config["sharing.maxAutocompleteResults"])<=Math.max(u.length+s.length,p.length+i.length,f.length+r.length,m.length+l.length,v.length+o.length,S.length+d.length,C.length+h.length,g.length);a.resolve(t,c,E)}else a.reject(t.ocs.meta.message);var k}).fail(function(){a.reject()}),this._lastRecommendations={model:e,promise:a.promise()},this._lastRecommendations.promise},recommendationHandler:function(e){var a=$(".shareWithField");this._getRecommendations(this.model).done(function(t){console.info("recommendations",t),t.length>0?(a.autocomplete("option","autoFocus",!0),e(t)):(console.info("no sharing recommendations found"),e())}).fail(function(e){console.error("could not load recommendations",e)})},autocompleteHandler:function(e,a){if(0===e.term.length)return console.info(e.term,"empty search term -> using recommendations"),void this.recommendationHandler(a);var s=$(".shareWithField"),i=this,l=this.$el.find(".shareWithLoading"),r=this.$el.find(".shareWithConfirm"),o=oc_config["sharing.minSearchStringLength"];if(e.term.trim().length<o){var d=n("core","At least {count} character is needed for autocompletion","At least {count} characters are needed for autocompletion",o,{count:o});return s.addClass("error").attr("data-original-title",d).tooltip("hide").tooltip({placement:"bottom",trigger:"manual"}).tooltip("fixTitle").tooltip("show"),void a()}l.removeClass("hidden"),l.addClass("inlineblock"),r.addClass("hidden"),this._pendingOperationsCount++,s.removeClass("error").tooltip("hide");var h=parseInt(oc_config["sharing.maxAutocompleteResults"],10)||200;this._getSuggestions(e.term.trim(),h,i.model,i._lookup).done(function(e,n,o){if(i._pendingOperationsCount--,0===i._pendingOperationsCount&&(l.addClass("hidden"),l.removeClass("inlineblock"),r.removeClass("hidden")),e.length>0){if(s.autocomplete("option","autoFocus",!0),a(e),o){var d=t("core","This list is maybe truncated - please refine your search term to see more results.");$(".ui-autocomplete").append('<li class="autocomplete-note">'+d+"</li>")}}else{var h=t("core","No users or groups found for {search}",{search:s.val()});i.configModel.get("allowGroupSharing")||(h=t("core","No users found for {search}",{search:$(".shareWithField").val()})),s.addClass("error").attr("data-original-title",h).tooltip("hide").tooltip({placement:"top",trigger:"manual"}).tooltip("fixTitle").tooltip("show"),a()}}).fail(function(e){i._pendingOperationsCount--,0===i._pendingOperationsCount&&(l.addClass("hidden"),l.removeClass("inlineblock"),r.removeClass("hidden")),e?OC.Notification.showTemporary(t("core",'An error occurred ("{message}"). Please try again',{message:e})):OC.Notification.showTemporary(t("core","An error occurred. Please try again"))})},autocompleteRenderItem:function(e,a){var n="icon-user",s=escapeHTML(a.label),i="",l="";void 0!==a.type&&null!==a.type&&(l=function(e){switch(e){case"HOME":return t("core","Home");case"WORK":return t("core","Work");case"OTHER":return t("core","Other");default:return""+e}}(a.type)+" "),void 0!==a.name&&(s=escapeHTML(a.name)),a.value.shareType===OC.Share.SHARE_TYPE_GROUP?n="icon-contacts-dark":a.value.shareType===OC.Share.SHARE_TYPE_REMOTE?(n="icon-shared",i+=a.value.shareWith):a.value.shareType===OC.Share.SHARE_TYPE_REMOTE_GROUP?(s=t("core","{sharee} (remote group)",{sharee:s},void 0,{escape:!1}),n="icon-shared",i+=a.value.shareWith):a.value.shareType===OC.Share.SHARE_TYPE_EMAIL?(n="icon-mail",i+=a.value.shareWith):a.value.shareType===OC.Share.SHARE_TYPE_CIRCLE?(s=t("core","{sharee} ({type}, {owner})",{sharee:s,type:a.value.circleInfo,owner:a.value.circleOwner},void 0,{escape:!1}),n="icon-circle"):a.value.shareType===OC.Share.SHARE_TYPE_ROOM&&(n="icon-talk");var r=$("<div class='share-autocomplete-item'/>");if(a.merged)r.addClass("merged"),s=a.value.shareWith,i=l;else if(a.lookup)s=a.label,n=!1,r.append('<span class="icon icon-search search-globally"></span>');else{var o=$("<div class='avatardiv'></div>").appendTo(r);a.value.shareType===OC.Share.SHARE_TYPE_USER||a.value.shareType===OC.Share.SHARE_TYPE_CIRCLE?o.avatar(a.value.shareWith,32,void 0,void 0,void 0,a.label):(void 0===a.uuid&&(a.uuid=s),o.imageplaceholder(a.uuid,s,32)),i=l+i}return""!==i&&r.addClass("with-description"),$("<div class='autocomplete-item-text'></div>").html(s.replace(new RegExp(this.term,"gi"),"<span class='ui-state-highlight'>$&</span>")+'<span class="autocomplete-item-details">'+i+"</span>").appendTo(r),r.attr("title",a.value.shareWith),n&&r.append('<span class="icon '+n+'" title="'+s+'"></span>'),r=$("<a>").append(r),$("<li>").addClass(a.value.shareType===OC.Share.SHARE_TYPE_GROUP?"group":"user").append(r).appendTo(e)},_onSelectRecipient:function(e,a){var t=this;if(9==e.keyCode)return e.preventDefault(),void 0!==a.item.name?e.target.value=a.item.name:e.target.value=a.item.label,setTimeout(function(){$(e.target).attr("disabled",!1).autocomplete("search",$(e.target).val())},0),!1;if(a.item.lookup){this._lookup=!0;var n=this.$el.find(".shareWithField"),s=n.val();return setTimeout(function(){console.debug("searching again, but globally. search term: "+s),n.autocomplete("search",s)},0),!1}e.preventDefault(),e.stopImmediatePropagation(),$(e.target).attr("disabled",!0).val(a.item.label);var i=this.$el.find(".shareWithLoading"),l=this.$el.find(".shareWithConfirm");i.removeClass("hidden"),i.addClass("inlineblock"),l.addClass("hidden"),this._pendingOperationsCount++,this.model.addShare(a.item.value,{success:function(){t._lastSuggestions=void 0,$(e.target).val("").attr("disabled",!1),t._pendingOperationsCount--,0===t._pendingOperationsCount&&(i.addClass("hidden"),i.removeClass("inlineblock"),l.removeClass("hidden"))},error:function(a,n){OC.Notification.showTemporary(n),$(e.target).attr("disabled",!1).autocomplete("search",$(e.target).val()),t._pendingOperationsCount--,0===t._pendingOperationsCount&&(i.addClass("hidden"),i.removeClass("inlineblock"),l.removeClass("hidden"))}})},_confirmShare:function(){var e=this,a=$(".shareWithField"),t=this.$el.find(".shareWithLoading"),n=this.$el.find(".shareWithConfirm");t.removeClass("hidden"),t.addClass("inlineblock"),n.addClass("hidden"),this._pendingOperationsCount++,a.prop("disabled",!0),a.autocomplete("close"),a.autocomplete("disable");var s=function(){e._pendingOperationsCount--,0===e._pendingOperationsCount&&(t.addClass("hidden"),t.removeClass("inlineblock"),n.removeClass("hidden")),a.prop("disabled",!1),a.focus()},i=parseInt(oc_config["sharing.maxAutocompleteResults"],10)||200;this._getSuggestions(a.val(),i,this.model,this._lookup).done(function(t,n){if(0===t.length)return s(),void a.autocomplete("enable");if(1!==n.length)return s(),void a.autocomplete("enable");e.model.addShare(n[0].value,{success:function(){e._lastSuggestions=void 0,a.val(""),s(),a.autocomplete("enable")},error:function(e,t){s(),a.autocomplete("enable"),OC.Notification.showTemporary(t)}})}).fail(function(e){s(),a.autocomplete("enable")})},_toggleLoading:function(e){this._loading=e,this.$el.find(".subView").toggleClass("hidden",e),this.$el.find(".loading").toggleClass("hidden",!e)},_onRequest:function(){this._loadingOnce||this._toggleLoading(!0)},_onEndRequest:function(){this._toggleLoading(!1),this._loadingOnce||(this._loadingOnce=!0)},render:function(){var e=this,a=OC.Share.Templates.sharedialogview;this.$el.html(a({cid:this.cid,shareLabel:t("core","Share"),sharePlaceholder:this._renderSharePlaceholderPart(),isSharingAllowed:this.model.sharePermissionPossible()}));var n=this.$el.find(".shareWithField");if(n.length){n.autocomplete({minLength:0,delay:750,focus:function(e){e.preventDefault()},source:this.autocompleteHandler,select:this._onSelectRecipient,open:function(){var e=$(this).autocomplete("widget"),a=e.find("li").size();e.removeClass("item-count-1"),e.removeClass("item-count-2"),a<=2&&e.addClass("item-count-"+a)}}).data("ui-autocomplete")._renderItem=this.autocompleteRenderItem,n.on("keydown",null,function(a){return 13!==a.keyCode||(e._confirmShare(),!1)})}return this.resharerInfoView.$el=this.$el.find(".resharerInfoView"),this.resharerInfoView.render(),this.linkShareView.$el=this.$el.find(".linkShareView"),this.linkShareView.render(),this.shareeListView.$el=this.$el.find(".shareeListView"),this.shareeListView.render(),this.$el.find(".hasTooltip").tooltip(),this},setShowLink:function(e){this._showLink="boolean"!=typeof e||e,this.linkShareView.showLink=this._showLink},_renderSharePlaceholderPart:function(){var e=this.configModel.get("isRemoteShareAllowed"),a=this.configModel.get("isMailShareAllowed");return!e&&a?t("core","Name or email address..."):e&&!a?t("core","Name or federated cloud ID..."):e&&a?t("core","Name, federated cloud ID or email address..."):t("core","Name...")}});OC.Share.ShareDialogView=e}()},function(e,a){OC.Share=_.extend(OC.Share||{},{SHARE_TYPE_USER:0,SHARE_TYPE_GROUP:1,SHARE_TYPE_LINK:3,SHARE_TYPE_EMAIL:4,SHARE_TYPE_REMOTE:6,SHARE_TYPE_CIRCLE:7,SHARE_TYPE_GUEST:8,SHARE_TYPE_REMOTE_GROUP:9,SHARE_TYPE_ROOM:10,_REMOTE_OWNER_REGEXP:new RegExp("^([^@]*)@(([^@]*)@)?([^/]*)([/](.*)?)?$"),itemShares:[],statuses:{},currentShares:{},droppedDown:!1,loadIcons:function(e,a,t){var n=a.dirInfo.path;"/"===n&&(n=""),n+="/"+a.dirInfo.name,$.get(OC.linkToOCS("apps/files_sharing/api/v1",2)+"shares",{subfiles:"true",path:n,format:"json"},function(n){n&&200===n.ocs.meta.statuscode&&(OC.Share.statuses={},$.each(n.ocs.data,function(e,a){a.item_source in OC.Share.statuses||(OC.Share.statuses[a.item_source]={link:!1}),a.share_type===OC.Share.SHARE_TYPE_LINK&&(OC.Share.statuses[a.item_source]={link:!0})}),_.isFunction(t)?t(OC.Share.statuses):OC.Share.updateIcons(e,a))})},updateIcons:function(e,a){var n,s,i;for(n in!a&&OCA.Files&&(a=OCA.Files.App.fileList),a&&(s=a.$fileList,i=a.getCurrentDirectory()),OC.Share.statuses){var l="icon-shared",r=OC.Share.statuses[n],o=r.link;if(o&&(l="icon-public"),"file"!==e&&"folder"!==e)$('a.share[data-item="'+n+'"] .icon').removeClass("icon-shared icon-public").addClass(l);else{var d,h=s.find('tr[data-id="'+n+'"]'),c=OC.imagePath("core","filetypes/folder-shared");if(h.length>0)this.markFileAsShared(h,!0,o);else{var u=i;if(u.length>1)for(var p="",m=u;m!=p;){if(m===r.path&&!r.link){var f,g=s.find('.fileactions .action[data-action="Share"]'),v=s.find(".filename");for(f=0;f<g.length;f++)(d=$(g[f]).find("img")).attr("src")!==OC.imagePath("core","actions/public")&&(d.attr("src",image),$(g[f]).addClass("permanent"),$(g[f]).html("<span> "+t("core","Shared")+"</span>").prepend(d));for(f=0;f<v.length;f++)"dir"===$(v[f]).closest("tr").data("type")&&$(v[f]).find(".thumbnail").css("background-image","url("+c+")")}p=m,m=OC.Share.dirname(m)}}}}},updateIcon:function(e,a){var t=!1,n=!1,s="";if($.each(OC.Share.itemShares,function(e){if(OC.Share.itemShares[e])if(e==OC.Share.SHARE_TYPE_LINK){if(1==OC.Share.itemShares[e])return t=!0,s="icon-public",void(n=!0)}else OC.Share.itemShares[e].length>0&&(t=!0,s="icon-shared")}),"file"!=e&&"folder"!=e)$('a.share[data-item="'+a+'"] .icon').removeClass("icon-shared icon-public").addClass(s);else{var i=$("tr").filterAttr("data-id",String(a));i.length>0&&i.each(function(){OC.Share.markFileAsShared($(this),t,n)})}t?(OC.Share.statuses[a]=OC.Share.statuses[a]||{},OC.Share.statuses[a].link=n):delete OC.Share.statuses[a]},_formatRemoteShare:function(e,a,t){var n=this._REMOTE_OWNER_REGEXP.exec(e);if(!n)return'<span class="avatar" data-username="'+escapeHTML(e)+'" title="'+t+" "+escapeHTML(a)+'"></span>'+('<span class="hidden-visually">'+t+" "+escapeHTML(a)+"</span> ");var s=n[1],i=n[3],l=n[4],r=t+" "+s;i&&(r+="@"+i),l&&(i||(i="…"),r+="@"+l);var o='<span class="remoteAddress" title="'+escapeHTML(r)+'">';return o+='<span class="username">'+escapeHTML(s)+"</span>",i&&(o+='<span class="userDomain">@'+escapeHTML(i)+"</span>"),o+="</span> "},_formatShareList:function(e){var a=this;return(e=_.toArray(e)).sort(function(e,a){return e.shareWithDisplayName.localeCompare(a.shareWithDisplayName)}),$.map(e,function(e){return a._formatRemoteShare(e.shareWith,e.shareWithDisplayName,t("core","Shared with"))})},markFileAsShared:function(e,a,n){var s,i,l,r,o=e.find('.fileactions .action[data-action="Share"]'),d=e.data("type"),h=o.find(".icon"),c=e.attr("data-share-owner-id"),u=e.attr("data-share-owner"),p="icon-shared";if(o.removeClass("shared-style"),"dir"===d&&(a||n||c))r=n?OC.MimeType.getIconUrl("dir-public"):OC.MimeType.getIconUrl("dir-shared"),e.find(".filename .thumbnail").css("background-image","url("+r+")"),e.attr("data-icon",r);else if("dir"===d){var m=e.attr("data-e2eencrypted"),f=e.attr("data-mounttype");"true"===m?(r=OC.MimeType.getIconUrl("dir-encrypted"),e.attr("data-icon",r)):f&&0===f.indexOf("external")?(r=OC.MimeType.getIconUrl("dir-external"),e.attr("data-icon",r)):(r=OC.MimeType.getIconUrl("dir"),e.removeAttr("data-icon")),e.find(".filename .thumbnail").css("background-image","url("+r+")")}a||c?(i=e.data("share-recipient-data"),o.addClass("shared-style"),l="<span>"+t("core","Shared")+"</span>",c?(s=t("core","Shared by"),l=this._formatRemoteShare(c,u,s)):i&&(l=this._formatShareList(i)),o.html(l).prepend(h),(c||i)&&(o.find(".avatar").each(function(){$(this).avatar($(this).data("username"),32)}),o.find("span[title]").tooltip({placement:"top"}))):o.html('<span class="hidden-visually">'+t("core","Shared")+"</span>").prepend(h);n&&(p="icon-public"),h.removeClass("icon-shared icon-public").addClass(p)},showDropDown:function(e,a,t,n,s,i){var l=new OC.Share.ShareConfigModel,r={itemType:e,itemSource:a,possiblePermissions:s},o=new OC.Share.ShareItemModel(r,{configModel:l}),d=new OC.Share.ShareDialogView({id:"dropdown",model:o,configModel:l,className:"drop shareDropDown",attributes:{"data-item-source-name":i,"data-item-type":e,"data-item-source":a}});d.setShowLink(n);var h=d.render().$el;h.appendTo(t),h.slideDown(OC.menuSpeed,function(){OC.Share.droppedDown=!0}),o.fetch()},hideDropDown:function(e){OC.Share.currentShares=null,$("#dropdown").slideUp(OC.menuSpeed,function(){OC.Share.droppedDown=!1,$("#dropdown").remove(),"undefined"!=typeof FileActions&&$("tr").removeClass("mouseOver"),e&&e.call()})},dirname:function(e){return e.replace(/\\/g,"/").replace(/\/[^\/]*$/,"")}}),$(document).ready(function(){if("undefined"!=typeof monthNames){var e=new Date;e.setDate(e.getDate()+1),$.datepicker.setDefaults({monthNames:monthNames,monthNamesShort:monthNamesShort,dayNames:dayNames,dayNamesMin:dayNamesMin,dayNamesShort:dayNamesShort,firstDay:firstDay,minDate:e})}$(this).click(function(e){var a=$(e.target),t=!a.is(".drop, .ui-datepicker-next, .ui-datepicker-prev, .ui-icon")&&!a.closest("#ui-datepicker-div").length&&!a.closest(".ui-autocomplete").length;OC.Share&&OC.Share.droppedDown&&t&&0===$("#dropdown").has(e.target).length&&OC.Share.hideDropDown()})})}]);
 //# sourceMappingURL=share_backend.js.map
\ No newline at end of file
index 4d6b7dbd9699958e856ec95e4ac5c71511883726..2ad49a0201f9345aa703d962731f5e49dacc1faa 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./core/js/merged-share-backend.js","webpack:///./core/js/shareconfigmodel.js","webpack:///./core/js/sharetemplates.js","webpack:///./core/js/shareitemmodel.js","webpack:///./core/js/sharesocialmanager.js","webpack:///./core/js/sharedialogresharerinfoview.js","webpack:///./core/js/sharedialoglinkshareview.js","webpack:///./core/js/sharedialogshareelistview.js","webpack:///./core/js/sharedialogview.js","webpack:///./core/js/share.js"],"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","__webpack_exports__","OC","Share","Types","ShareConfigModel","Backbone","Model","extend","defaults","publicUploadEnabled","enforcePasswordForPublicLink","oc_appconfig","core","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","isDefaultExpireDateEnabled","defaultExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isMailShareAllowed","undefined","shareByMailEnabled","defaultExpireDate","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","shareByMail","enforcePasswordProtection","allowGroupSharing","isPublicUploadEnabled","$","data","isShareWithLinkAllowed","val","getFederatedShareDocLink","federatedCloudShareDoc","getDefaultExpirationDateString","expireDateString","this","date","moment","utc","expireAfterDays","add","format","template","templates","Handlebars","Templates","1","container","depth0","helpers","partials","stack1","alias1","nullContext","nolinkShares","hash","fn","program","inverse","noop","each","linkShares","2","helper","alias2","helperMissing","alias4","escapeExpression","_typeof","newShareId","newShareLabel","showPending","newShareTitle","unless","3","5","pendingPopoverMenu","7","alias3","cid","linkShareCreationDate","linkShareLabel","shareLinkURL","copyLabel","8","popoverMenu","10","noSharingPlaceholder","11","compiler","main","shareAllowed","useData","publicUploadRValue","publicUploadRChecked","publicUploadRLabel","publicUploadRWValue","publicUploadRWChecked","publicUploadRWLabel","publicUploadWValue","publicUploadWChecked","publicUploadWLabel","publicEditingChecked","publicEditingLabel","9","isPasswordByTalkSet","passwordByTalkLabel","13","15","expireDate","17","19","21","url","newWindow","iconClass","label","publicUpload","publicEditing","hideDownload","hideDownloadLabel","isPasswordSet","isPasswordEnforced","enablePasswordLabel","passwordPlaceholder","showPasswordByTalkCheckBox","hasExpireDate","isExpirationEnforced","expireDateLabel","expirationDate","expirationLabel","expirationDatePlaceholder","maxDate","addNoteLabel","hasNote","shareNote","shareId","social","unshareLinkLabel","enforcedPasswordLabel","minPasswordLength","reshareOwner","sharedByText","hasShareNote","isShareWithCurrentUser","shareType","shareWith","modSeed","shareWithAvatar","shareWithDisplayName","shareWithTitle","canUpdateShareSettings","editPermissionPossible","canEditLabel","shareInitiator","shareInitiatorText","unshareLabel","sharees","linkReshares","sharePermissionPossible","isMailShare","hasSharePermission","sharePermission","canShareLabel","4","6","createPermissionPossible","updatePermissionPossible","deletePermissionPossible","hasCreatePermission","createPermission","createPermissionLabel","hasUpdatePermission","updatePermission","updatePermissionLabel","14","hasDeletePermission","deletePermission","deletePermissionLabel","16","passwordLabel","password","passwordValue","isTalkEnabled","secureDropMode","readPermission","secureDropLabel","20","22","24","passwordByTalkPlaceholder","26","28","30","isFolder","isNoteAvailable","shareLabel","sharePlaceholder","isSharingAllowed","SHARE_RESPONSE_INT_PROPS","ShareItemModel","_linkShareId","initialize","attributes","options","_","isUndefined","configModel","fileInfoModel","bindAll","allowPublicUploadStatus","permissions","saveLinkShare","expiration","shareIndex","findIndex","share","id","length","updateShare","passwordChanged","sendPasswordByTalk","PERMISSION_READ","SHARE_TYPE_LINK","addShare","defaultPermissions","getCapabilities","PERMISSION_ALL","possiblePermissions","PERMISSION_UPDATE","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_SHARE","path","getFullPath","_addOrUpdateShare","type","_getUrl","dataType","attrs","encodeURIComponent","ajaxSettings","self","ajax","always","isFunction","complete","done","fetch","success","fail","xhr","msg","result","responseJSON","ocs","meta","message","error","dialogs","alert","removeShare","isPublicUploadAllowed","isPublicEditingAllowed","isHideFileListSet","isFile","hasReshare","reshare","isObject","uid_owner","hasUserShares","getSharesWithCurrentItem","hasLinkShares","getReshareOwner","getReshareOwnerDisplayname","displayname_owner","getReshareNote","note","getReshareWith","share_with","getReshareWithDisplayName","share_with_displayname","getReshareType","share_type","getExpireDate","_shareExpireDate","getNote","_shareNote","shares","fileId","filter","item_source","getShareWith","getShareWithDisplayName","getShareWithAvatar","share_with_avatar","getSharedBy","getSharedByDisplayName","getFileOwnerUid","uid_file_owner","findShareWithIndex","isArray","getShareType","_shareHasPermission","permission","getPermissions","hasReadPermission","editPermissionState","hcp","hup","hdp","linkSharePermissions","base","params","linkToOCS","buildQueryString","_fetchShares","reshares","_fetchReshare","_reshareFetched","Deferred","resolve","shared_with_me","_groupReshares","superShare","shift","combinedPermissions","SHARE_TYPE_USER","SHARE_TYPE_GROUP","model","trigger","deferred","when","data1","data2","sharesMap","shareItem","set","parse","_legacyFillCurrentShares","statuses","currentShares","itemShares","currentShareStatus","link","push","console","warn","currentUser","allowPublicEditingStatus","hideFileListStatus","map","prop","parseInt","reject","file_source","window","location","protocol","host","token","generateUrl","fullPath","isDirectory","linkTo","hide_download","send_password_by_talk","_parseTime","time","isString","isNaN","getShareTypes","pluck","uniq","Social","SocialModel","SocialCollection","Collection","comparator","ShareDialogResharerInfoView","View","tagName","className","_template","view","on","render","$el","empty","reshareTemplate","ownerDisplayName","group","owner","escape","SHARE_TYPE_CIRCLE","circle","SHARE_TYPE_ROOM","conversation","html","find","$this","avatar","contactsMenu","PASSWORD_PLACEHOLDER_MESSAGE","PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL","ShareDialogLinkShareView","showLink","events","click .share-menu .icon-more","change .hideDownloadCheckbox","click input.share-pass-submit","keyup input.linkPassText","change .showPasswordCheckbox","change .passwordByTalkCheckbox","change .publicEditingCheckbox","click .linkText","click .pop-up","change .publicUploadRadio","click .expireDate","change .datepicker","click .datepicker","click .share-add","click .share-note-delete","click .share-note-submit","click .unshare","click .new-share","submit .enforcedPassForm","previousLinkShares","previous","clipboard","Clipboard","e","$trigger","tooltip","attr","placement","delay","$menu","next","$linkTextMenu","$input","closest","showMenu","actionMsg","test","navigator","userAgent","removeClass","select","newShare","event","$li","target","$loading","hasClass","addClass","hideMenus","shareData","defaultExpireDays","focus","$newShare","response","Notification","showTemporary","then","enforcedPasswordSet","preventDefault","onLinkTextClick","onHideDownloadChange","$checkbox","siblings","is","obj","onShowPasswordClick","slideToggle","menuSpeed","toggleClass","Util","isIE","onPasswordKeyUp","keyCode","onPasswordEntered","parent","$container","onPasswordByTalkChange","onAllowPublicEditingChange","onPublicUploadChange","currentTarget","showNoteForm","stopPropagation","$element","$form","deleteNote","sendNote","updateNote","prev","trim","$submit","$error","hide","method","show","setTimeout","linkShareTemplate","templateData","passwordPlaceholderInitial","publicEditable","minDate","Date","setDate","getDate","datepicker","setDefaults","dateFormat","oc_capabilities","password_policy","minLength","popoverBase","urlLabel","mailPrivatePlaceholder","mailButtonText","pendingPopover","pendingPopoverMenuTemplate","getShareeList","replace","popover","getPopoverObject","popoverMenuTemplate","delegateEvents","autosize","onToggleMenu","isPasswordEnabledByDefault","onPopUpClick","left","screen","width","top","height","open","href","onExpireDateChange","datePicker","state","showDatePicker","setExpirationDate","expirationDatePicker","onSelect","onChangeExpirationDate","list","index","getShareeObject","stime","oc_appswebroots","shareTime","isNumber","stripTime","getTime","onUnshare","eq","remove","ShareDialogShareeListView","_menuOpen","_renderPermissionChange","click .permissions","click .password","click .passwordByTalk","click .secureDrop","keyup input.passwordField","focusout input.passwordField","sharedBy","sharedByDisplayName","fileOwnerUid","SHARE_TYPE_REMOTE","SHARE_TYPE_REMOTE_GROUP","SHARE_TYPE_EMAIL","oc_current_user","sharer","hasPassword","isRemoteShare","isRemoteGroupShare","isCircleShare","isFileSharedByMail","getShareProperties","crudsLabel","triangleSImage","imagePath","universal","getLinkReshares","shareInitiatorDisplayName","permissionChangeShareId","shareWithIndex","sharee","replaceWith","css","imageplaceholder","_this","forEach","$edit","datePickerClass","datePickerInput","expireDateCheckbox","liSelector","log","onMailSharePasswordProtectChange","element","passwordContainerClass","passwordContainer","loading","inputClass","passwordField","passwordByTalkElement","passwordByTalkState","passwordByTalkContainerClass","onMailSharePasswordProtectByTalkChange","passwordByTalkContainer","passwordByTalkField","passwordElement","passwordState","onMailSharePasswordKeyUp","onMailSharePasswordEntered","startsWith","blur","onPermissionChange","checked","$checkboxes","not","numberChecked","$editCb","checkbox","enableCb","elem","onSecureDropChange","ShareDialogView","_templates","_showLink","_lookup","_lookupAllowed","resharerInfoView","linkShareView","shareeListView","_lastSuggestions","_lastRecommendations","_pendingOperationsCount","focus .shareWithField","input .shareWithField","click .shareWithConfirm","_onRequest","_onEndRequest","subViewOptions","subViews","Plugins","attach","onShareWithFieldChanged","onShareWithFieldFocus","$shareWithField","autocomplete","_getSuggestions","searchTerm","perPage","lookup","promise","search","itemType","statuscode","users","groups","remotes","remote_groups","emails","circles","rooms","usersLength","groupsLength","remotesLength","remoteGroupsLength","emailsLength","circlesLength","roomsLength","j","splice","sharesLength","exact","exactUsers","exactGroups","exactRemotes","exactRemoteGroups","exactEmails","exactCircles","exactRooms","exactMatches","concat","remoteGroups","lookupEnabled","grouped","sort","a","b","aProperty","bProperty","previousUuid","groupedLength","uuid","merged","moreResultsAvailable","oc_config","Math","min","max","_getRecommendations","recommendationHandler","suggestions","info","autocompleteHandler","term","$confirm","count","title","append","autocompleteRenderItem","ul","item","icon","text","escapeHTML","description","getTranslatedType","circleInfo","circleOwner","insert","appendTo","RegExp","_onSelectRecipient","debug","stopImmediatePropagation","_confirmShare","restoreUI","_toggleLoading","_loading","_loadingOnce","defer","baseTemplate","_renderSharePlaceholderPart","$shareField","source","numberOfItems","size","_renderItem","setShowLink","allowRemoteSharing","allowMailSharing","SHARE_TYPE_GUEST","_REMOTE_OWNER_REGEXP","droppedDown","loadIcons","fileList","callback","dirInfo","subfiles","it","updateIcons","$fileList","currentDir","OCA","Files","App","getCurrentDirectory","hasLink","img","file","shareFolder","markFileAsShared","dir","last","actions","files","image","prepend","dirname","updateIcon","itemSource","$tr","filterAttr","String","_formatRemoteShare","parts","exec","userName","userDomain","server","_formatShareList","recipients","_parent","toArray","localeCompare","recipient","hasShares","avatars","shareFolderIcon","action","ownerId","MimeType","getIconUrl","isEncrypted","mountType","indexOf","removeAttr","showDropDown","filename","itemModel","dialogView","data-item-source-name","data-item-type","data-item-source","$dialog","slideDown","hideDropDown","slideUp","FileActions","document","ready","monthNames","monthNamesShort","dayNames","dayNamesMin","dayNamesShort","firstDay","click","isMatched","has"],"mappings":"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","file":"share_backend.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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import './shareconfigmodel.js';\nimport './sharetemplates.js';\nimport './shareitemmodel.js';\nimport './sharesocialmanager.js';\nimport './sharedialogresharerinfoview.js';\nimport './sharedialoglinkshareview.js';\nimport './sharedialogshareelistview.js';\nimport './sharedialogview.js';\nimport './share.js';\n","/*\n * Copyright (c) 2015\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 moment, oc_appconfig, oc_config */\n\n(function() {\n\tif (!OC.Share) {\n\t\tOC.Share = {};\n\t\tOC.Share.Types = {};\n\t}\n\n\t// FIXME: the config model should populate its own model attributes based on\n\t// the old DOM-based config\n\tvar ShareConfigModel = OC.Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\tpublicUploadEnabled: false,\n\t\t\tenforcePasswordForPublicLink: oc_appconfig.core.enforcePasswordForPublicLink,\n\t\t\tenableLinkPasswordByDefault: oc_appconfig.core.enableLinkPasswordByDefault,\n\t\t\tisDefaultExpireDateEnforced: oc_appconfig.core.defaultExpireDateEnforced === true,\n\t\t\tisDefaultExpireDateEnabled: oc_appconfig.core.defaultExpireDateEnabled === true,\n\t\t\tisRemoteShareAllowed: oc_appconfig.core.remoteShareAllowed,\n\t\t\tisMailShareAllowed: oc_appconfig.shareByMailEnabled !== undefined,\n\t\t\tdefaultExpireDate: oc_appconfig.core.defaultExpireDate,\n\t\t\tisResharingAllowed: oc_appconfig.core.resharingAllowed,\n\t\t\tisPasswordForMailSharesRequired: (oc_appconfig.shareByMail === undefined) ? false : oc_appconfig.shareByMail.enforcePasswordProtection,\n\t\t\tallowGroupSharing: oc_appconfig.core.allowGroupSharing\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisPublicUploadEnabled: function() {\n\t\t\tvar publicUploadEnabled = $('#filestable').data('allow-public-upload');\n\t\t\treturn publicUploadEnabled === 'yes';\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisShareWithLinkAllowed: function() {\n\t\t\treturn $('#allowShareWithLink').val() === 'yes';\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetFederatedShareDocLink: function() {\n\t\t\treturn oc_appconfig.core.federatedCloudShareDoc;\n\t\t},\n\n\t\tgetDefaultExpirationDateString: function () {\n\t\t\tvar expireDateString = '';\n\t\t\tif (this.get('isDefaultExpireDateEnabled')) {\n\t\t\t\tvar date = moment.utc();\n\t\t\t\tvar expireAfterDays = this.get('defaultExpireDate');\n\t\t\t\tdate.add(expireAfterDays, 'days');\n\t\t\t\texpireDateString = date.format('YYYY-MM-DD 00:00:00');\n\t\t\t}\n\t\t\treturn expireDateString;\n\t\t}\n\t});\n\n\n\tOC.Share.ShareConfigModel = ShareConfigModel;\n})();\n","(function() {\n  var template = Handlebars.template, templates = OC.Share.Templates = OC.Share.Templates || {};\ntemplates['sharedialoglinkshareview'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {});\n\n  return \"<ul class=\\\"shareWithList\\\">\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.nolinkShares : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.linkShares : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"</ul>\\n\";\n},\"2\":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 data-share-id=\\\"\"\n    + alias4(((helper = (helper = helpers.newShareId || (depth0 != null ? depth0.newShareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newShareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t<div class=\\\"avatar icon-public-white\\\"></div>\\n\t\t\t<span class=\\\"username\\\">\"\n    + alias4(((helper = (helper = helpers.newShareLabel || (depth0 != null ? depth0.newShareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newShareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t<span class=\\\"sharingOptionsGroup\\\">\\n\t\t\t\t<div class=\\\"share-menu\\\">\\n\t\t\t\t\t<a href=\\\"#\\\" class=\\\"icon icon-add new-share has-tooltip \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.newShareTitle || (depth0 != null ? depth0.newShareTitle : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newShareTitle\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></a>\\n\t\t\t\t\t<span class=\\\"icon icon-loading-small \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\"></span>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t\t</div>\\n\t\t\t</span>\\n\t\t</li>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    return \"hidden\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper;\n\n  return \"\t\t\t\t\t\t\"\n    + ((stack1 = ((helper = (helper = helpers.pendingPopoverMenu || (depth0 != null ? depth0.pendingPopoverMenu : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"pendingPopoverMenu\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"7\":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 data-share-id=\\\"\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t<div class=\\\"avatar icon-public-white\\\"></div>\\n\t\t\t<span class=\\\"username\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.linkShareCreationDate || (depth0 != null ? depth0.linkShareCreationDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"linkShareCreationDate\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.linkShareLabel || (depth0 != null ? depth0.linkShareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"linkShareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t\\n\t\t\t<span class=\\\"sharingOptionsGroup\\\">\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"clipboard-button icon icon-clippy has-tooltip\\\" data-clipboard-text=\\\"\"\n    + alias4(((helper = (helper = helpers.shareLinkURL || (depth0 != null ? depth0.shareLinkURL : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareLinkURL\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.copyLabel || (depth0 != null ? depth0.copyLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"copyLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></a>\\n\t\t\t\t<div class=\\\"share-menu\\\">\\n\t\t\t\t\t<a href=\\\"#\\\" class=\\\"icon icon-more \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\"></a>\\n\t\t\t\t\t<span class=\\\"icon icon-loading-small \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\"></span>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.program(8, data, 0),\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t\t</div>\\n\t\t\t</span>\\n\t\t</li>\\n\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper;\n\n  return \"\t\t\t\t\t\t\"\n    + ((stack1 = ((helper = (helper = helpers.popoverMenu || (depth0 != null ? depth0.popoverMenu : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"popoverMenu\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.noSharingPlaceholder : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"11\":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 \"<input id=\\\"shareWith-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"shareWithField\\\" type=\\\"text\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.noSharingPlaceholder || (depth0 != null ? depth0.noSharingPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"noSharingPlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" disabled=\\\"disabled\\\" />\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.shareAllowed : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(10, data, 0),\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});\ntemplates['sharedialoglinkshareview_popover_menu'] = 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\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"radio\\\" name=\\\"publicUpload\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.publicUploadRValue || (depth0 != null ? depth0.publicUploadRValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRValue\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"sharingDialogAllowPublicUpload-r-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radio publicUploadRadio\\\" \"\n    + ((stack1 = ((helper = (helper = helpers.publicUploadRChecked || (depth0 != null ? depth0.publicUploadRChecked : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRChecked\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"sharingDialogAllowPublicUpload-r-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.publicUploadRLabel || (depth0 != null ? depth0.publicUploadRLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"radio\\\" name=\\\"publicUpload\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.publicUploadRWValue || (depth0 != null ? depth0.publicUploadRWValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRWValue\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"sharingDialogAllowPublicUpload-rw-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radio publicUploadRadio\\\" \"\n    + ((stack1 = ((helper = (helper = helpers.publicUploadRWChecked || (depth0 != null ? depth0.publicUploadRWChecked : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRWChecked\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"sharingDialogAllowPublicUpload-rw-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.publicUploadRWLabel || (depth0 != null ? depth0.publicUploadRWLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRWLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"radio\\\" name=\\\"publicUpload\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.publicUploadWValue || (depth0 != null ? depth0.publicUploadWValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadWValue\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"sharingDialogAllowPublicUpload-w-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radio publicUploadRadio\\\" \"\n    + ((stack1 = ((helper = (helper = helpers.publicUploadWChecked || (depth0 != null ? depth0.publicUploadWChecked : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadWChecked\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"sharingDialogAllowPublicUpload-w-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.publicUploadWLabel || (depth0 != null ? depth0.publicUploadWLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadWLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\";\n},\"3\":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\t<li id=\\\"allowPublicEditingWrapper\\\">\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"checkbox\\\" name=\\\"allowPublicEditing\\\" id=\\\"sharingDialogAllowPublicEditing-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"checkbox publicEditingCheckbox\\\" \"\n    + ((stack1 = ((helper = (helper = helpers.publicEditingChecked || (depth0 != null ? depth0.publicEditingChecked : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicEditingChecked\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"sharingDialogAllowPublicEditing-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.publicEditingLabel || (depth0 != null ? depth0.publicEditingLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicEditingLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    return \"checked=\\\"checked\\\"\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    return \"disabled=\\\"disabled\\\"\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    return \"hidden\";\n},\"11\":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\t<li>\\n\t\t\t\t<span class=\\\"shareOption menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"checkbox\\\" name=\\\"passwordByTalk\\\" id=\\\"passwordByTalk-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"checkbox passwordByTalkCheckbox\\\"\\n\t\t\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isPasswordByTalkSet : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"passwordByTalk-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.passwordByTalkLabel || (depth0 != null ? depth0.passwordByTalkLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordByTalkLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    return \"datepicker\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return container.escapeExpression(((helper = (helper = helpers.expireDate || (depth0 != null ? depth0.expireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"expireDate\",\"hash\":{},\"data\":data}) : helper)));\n},\"17\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return container.escapeExpression(((helper = (helper = helpers.defaultExpireDate || (depth0 != null ? depth0.defaultExpireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"defaultExpireDate\",\"hash\":{},\"data\":data}) : helper)));\n},\"19\":function(container,depth0,helpers,partials,data) {\n    return \"readonly\";\n},\"21\":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 \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"menuitem pop-up\\\" data-url=\\\"\"\n    + alias4(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-window=\\\"\"\n    + alias4(((helper = (helper = helpers.newWindow || (depth0 != null ? depth0.newWindow : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newWindow\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t\t\t<span class=\\\"icon \"\n    + alias4(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"iconClass\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></span>\\n\t\t\t\t\t<span>\"\n    + alias4(((helper = (helper = helpers.label || (depth0 != null ? depth0.label : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"label\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\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 \"<div class=\\\"popovermenu menu\\\">\\n\t<ul>\\n\t\t<li class=\\\"hidden linkTextMenu\\\">\\n\t\t\t<span class=\\\"menuitem icon-link-text\\\">\\n\t\t\t\t<input id=\\\"linkText-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"linkText\\\" type=\\\"text\\\" readonly=\\\"readonly\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.shareLinkURL || (depth0 != null ? depth0.shareLinkURL : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareLinkURL\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t\t</span>\\n\t\t</li>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.publicUpload : 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.publicEditing : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"checkbox\\\" name=\\\"hideDownload\\\" id=\\\"sharingDialogHideDownload-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"checkbox hideDownloadCheckbox\\\"\\n\t\t\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hideDownload : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"sharingDialogHideDownload-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.hideDownloadLabel || (depth0 != null ? depth0.hideDownloadLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hideDownloadLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<input type=\\\"checkbox\\\" name=\\\"showPassword\\\" id=\\\"showPassword-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"checkbox showPasswordCheckbox\\\"\\n\t\t\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isPasswordSet : 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.isPasswordEnforced : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" value=\\\"1\\\" />\\n\t\t\t\t\t<label for=\\\"showPassword-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.enablePasswordLabel || (depth0 != null ? depth0.enablePasswordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"enablePasswordLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li class=\\\"\"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" linkPassMenu\\\">\\n\t\t\t\t<span class=\\\"menuitem icon-share-pass\\\">\\n\t\t\t\t\t<input id=\\\"linkPassText-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"linkPassText\\\" type=\\\"password\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordPlaceholder || (depth0 != null ? depth0.passwordPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordPlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" autocomplete=\\\"new-password\\\" />\\n\t\t\t\t\t<input type=\\\"submit\\\" class=\\\"icon-confirm share-pass-submit\\\" value=\\\"\\\" />\\n\t\t\t\t\t<span class=\\\"icon icon-loading-small hidden\\\"></span>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.showPasswordByTalkCheckBox : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t<li>\\n\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t<input id=\\\"expireDate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"expirationDate\\\" class=\\\"expireDate checkbox\\\"\\n\t\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasExpireDate : 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.isExpirationEnforced : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t<label for=\\\"expireDate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.expireDateLabel || (depth0 != null ? depth0.expireDateLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expireDateLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t</span>\\n\t\t</li>\\n\t\t<li class=\\\"\"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t<span class=\\\"menuitem icon-expiredate expirationDateContainer-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t\t<label for=\\\"expirationDatePicker-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"hidden-visually\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.expirationDate || (depth0 != null ? depth0.expirationDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationDate\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.expirationLabel || (depth0 != null ? depth0.expirationLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t<!-- do not use the datepicker if enforced -->\\n\t\t\t\t<input id=\\\"expirationDatePicker-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"\"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isExpirationEnforced : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" type=\\\"text\\\"\\n\t\t\t\t\tplaceholder=\\\"\"\n    + alias4(((helper = (helper = helpers.expirationDatePlaceholder || (depth0 != null ? depth0.expirationDatePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationDatePlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" value=\\\"\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(15, data, 0),\"inverse\":container.program(17, data, 0),\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\"\\n\t\t\t\t\tdata-max-date=\\\"\"\n    + alias4(((helper = (helper = helpers.maxDate || (depth0 != null ? depth0.maxDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"maxDate\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isExpirationEnforced : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t</span>\\n\t\t\t</li>\\n\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"share-add\\\">\\n\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t<span class=\\\"icon icon-edit\\\"></span>\\n\t\t\t\t<span>\"\n    + alias4(((helper = (helper = helpers.addNoteLabel || (depth0 != null ? depth0.addNoteLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"addNoteLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t\t<input type=\\\"button\\\" class=\\\"share-note-delete icon-delete \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasNote : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t</a>\\n\t\t</li>\\n\t\t<li class=\\\"share-note-form share-note-link \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasNote : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t<span class=\\\"menuitem icon-note\\\">\\n\t\t\t\t<textarea class=\\\"share-note\\\">\"\n    + alias4(((helper = (helper = helpers.shareNote || (depth0 != null ? depth0.shareNote : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareNote\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</textarea>\\n\t\t\t\t<input type=\\\"submit\\\" class=\\\"icon-confirm share-note-submit\\\" value=\\\"\\\" id=\\\"add-note-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t\t</span>\\n\t\t</li>\\n\"\n    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.social : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(21, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"unshare\\\"><span class=\\\"icon-loading-small hidden\\\"></span><span class=\\\"icon icon-delete\\\"></span><span>\"\n    + alias4(((helper = (helper = helpers.unshareLinkLabel || (depth0 != null ? depth0.unshareLinkLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"unshareLinkLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span></a>\\n\t\t</li>\\n\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"new-share\\\">\\n\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t<span class=\\\"icon icon-add\\\"></span>\\n\t\t\t\t<span>\"\n    + alias4(((helper = (helper = helpers.newShareLabel || (depth0 != null ? depth0.newShareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newShareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t</a>\\n\t\t</li>\\n\t</ul>\\n</div>\\n\";\n},\"useData\":true});\ntemplates['sharedialoglinkshareview_popover_menu_pending'] = template({\"1\":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 \"\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem icon-info\\\">\\n\t\t\t\t\t<p>\"\n    + alias4(((helper = (helper = helpers.enforcedPasswordLabel || (depth0 != null ? depth0.enforcedPasswordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"enforcedPasswordLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</p>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li class=\\\"linkPassMenu\\\">\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<form autocomplete=\\\"off\\\" class=\\\"enforcedPassForm\\\">\\n\t\t\t\t\t\t<input id=\\\"enforcedPassText\\\" required class=\\\"enforcedPassText\\\" type=\\\"password\\\"\\n\t\t\t\t\t\t\tplaceholder=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordPlaceholder || (depth0 != null ? depth0.passwordPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordPlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" autocomplete=\\\"enforcedPassText\\\" minlength=\\\"\"\n    + alias4(((helper = (helper = helpers.minPasswordLength || (depth0 != null ? depth0.minPasswordLength : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"minPasswordLength\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t\t\t\t\t<input type=\\\"submit\\\" value=\\\" \\\" class=\\\"primary icon-checkmark-white\\\">\\n\t\t\t\t\t</form>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return \"<div class=\\\"popovermenu open menu pending\\\">\\n\t<ul>\\n\"\n    + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isPasswordEnforced : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t</ul>\\n</div>\\n\";\n},\"useData\":true});\ntemplates['sharedialogresharerinfoview'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return \"<div class=\\\"share-note\\\">\"\n    + container.escapeExpression(((helper = (helper = helpers.shareNote || (depth0 != null ? depth0.shareNote : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"shareNote\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</div>\";\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 \"<span class=\\\"reshare\\\">\\n\t<div class=\\\"avatar\\\" data-userName=\\\"\"\n    + alias4(((helper = (helper = helpers.reshareOwner || (depth0 != null ? depth0.reshareOwner : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"reshareOwner\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></div>\\n\t\"\n    + alias4(((helper = (helper = helpers.sharedByText || (depth0 != null ? depth0.sharedByText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"sharedByText\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\n</span>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasShareNote : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"useData\":true});\ntemplates['sharedialogshareelistview'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isShareWithCurrentUser : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"2\":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 data-share-id=\\\"\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-share-type=\\\"\"\n    + alias4(((helper = (helper = helpers.shareType || (depth0 != null ? depth0.shareType : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareType\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-share-with=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWith || (depth0 != null ? depth0.shareWith : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWith\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t<div class=\\\"avatar \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.modSeed : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" data-username=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWith || (depth0 != null ? depth0.shareWith : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWith\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-avatar=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWithAvatar || (depth0 != null ? depth0.shareWithAvatar : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWithAvatar\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-displayname=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWithDisplayName || (depth0 != null ? depth0.shareWithDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWithDisplayName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.modSeed : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"></div>\\n\t\t\t<span class=\\\"username\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWithTitle || (depth0 != null ? depth0.shareWithTitle : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWithTitle\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.shareWithDisplayName || (depth0 != null ? depth0.shareWithDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWithDisplayName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.canUpdateShareSettings : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t</li>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    return \"imageplaceholderseed\";\n},\"5\":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 \"data-seed=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWith || (depth0 != null ? depth0.shareWith : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWith\",\"hash\":{},\"data\":data}) : helper)))\n    + \" \"\n    + alias4(((helper = (helper = helpers.shareType || (depth0 != null ? depth0.shareType : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareType\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {});\n\n  return \"\t\t\t<span class=\\\"sharingOptionsGroup\\\">\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.editPermissionPossible : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t\t<div tabindex=\\\"0\\\" class=\\\"share-menu\\\"><span class=\\\"icon icon-more\\\"></span>\\n\t\t\t\t\t\"\n    + ((stack1 = ((helper = (helper = helpers.popoverMenu || (depth0 != null ? depth0.popoverMenu : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(alias1,{\"name\":\"popoverMenu\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \"\\n\t\t\t\t</div>\\n\t\t\t</span>\\n\";\n},\"8\":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 \"\t\t\t\t\t<span>\\n\t\t\t\t\t\t<input id=\\\"canEdit-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"edit\\\" class=\\\"permissions checkbox\\\" />\\n\t\t\t\t\t\t<label for=\\\"canEdit-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.canEditLabel || (depth0 != null ? depth0.canEditLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"canEditLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\";\n},\"10\":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 \"\t\t<li data-share-id=\\\"\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-share-type=\\\"\"\n    + alias4(((helper = (helper = helpers.shareType || (depth0 != null ? depth0.shareType : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareType\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t<div class=\\\"avatar\\\" data-username=\\\"\"\n    + alias4(((helper = (helper = helpers.shareInitiator || (depth0 != null ? depth0.shareInitiator : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareInitiator\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></div>\\n\t\t\t<span class=\\\"has-tooltip username\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.shareInitiator || (depth0 != null ? depth0.shareInitiator : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareInitiator\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.shareInitiatorText || (depth0 != null ? depth0.shareInitiatorText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareInitiatorText\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t<span class=\\\"sharingOptionsGroup\\\">\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"unshare\\\"><span class=\\\"icon-loading-small hidden\\\"></span><span class=\\\"icon icon-delete\\\"></span><span class=\\\"hidden-visually\\\">\"\n    + alias4(((helper = (helper = helpers.unshareLabel || (depth0 != null ? depth0.unshareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"unshareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span></a>\\n\t\t\t</span>\\n\t\t</li>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {});\n\n  return \"<ul id=\\\"shareWithList\\\" class=\\\"shareWithList\\\">\\n\"\n    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.sharees : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.linkReshares : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"</ul>\\n\";\n},\"useData\":true});\ntemplates['sharedialogshareelistview_popover_menu'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return \" \"\n    + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.sharePermissionPossible : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" \";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return \" \"\n    + ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isMailShare : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" \";\n},\"3\":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\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<input id=\\\"canShare-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"share\\\" class=\\\"permissions checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasSharePermission : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" data-permissions=\\\"\"\n    + alias4(((helper = (helper = helpers.sharePermission || (depth0 != null ? depth0.sharePermission : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"sharePermission\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t\t\t\t<label for=\\\"canShare-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.canShareLabel || (depth0 != null ? depth0.canShareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"canShareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t\t</li>\\n\t\t\t\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    return \"checked=\\\"checked\\\"\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {});\n\n  return \"\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.createPermissionPossible : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.updatePermissionPossible : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.deletePermissionPossible : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isMailShare : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"8\":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\t\t\t\t<li>\\n\t\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t\t<input id=\\\"canCreate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"create\\\" class=\\\"permissions checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasCreatePermission : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" data-permissions=\\\"\"\n    + alias4(((helper = (helper = helpers.createPermission || (depth0 != null ? depth0.createPermission : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"createPermission\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\t\t\t\t\t\t<label for=\\\"canCreate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.createPermissionLabel || (depth0 != null ? depth0.createPermissionLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"createPermissionLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\t\t\t\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isMailShare : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"11\":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\t\t\t\t<li>\\n\t\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t\t<input id=\\\"canUpdate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"update\\\" class=\\\"permissions checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasUpdatePermission : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" data-permissions=\\\"\"\n    + alias4(((helper = (helper = helpers.updatePermission || (depth0 != null ? depth0.updatePermission : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"updatePermission\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\t\t\t\t\t\t<label for=\\\"canUpdate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.updatePermissionLabel || (depth0 != null ? depth0.updatePermissionLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"updatePermissionLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\t\t\t\t\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isMailShare : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"14\":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\t\t\t\t<li>\\n\t\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t\t<input id=\\\"canDelete-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"delete\\\" class=\\\"permissions checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasDeletePermission : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" data-permissions=\\\"\"\n    + alias4(((helper = (helper = helpers.deletePermission || (depth0 != null ? depth0.deletePermission : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"deletePermission\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\t\t\t\t\t\t<label for=\\\"canDelete-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.deletePermissionLabel || (depth0 != null ? depth0.deletePermissionLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"deletePermissionLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\t\t\t\t\";\n},\"16\":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 ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasCreatePermission : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(17, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<input id=\\\"password-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"password\\\" class=\\\"password checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" />\\n\t\t\t\t\t<label for=\\\"password-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.passwordLabel || (depth0 != null ? depth0.passwordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li class=\\\"passwordMenu-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t\t<span class=\\\"passwordContainer-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" icon-passwordmail menuitem\\\">\\n\t\t\t\t\t<label for=\\\"passwordField-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"hidden-visually\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.password || (depth0 != null ? depth0.password : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"password\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.passwordLabel || (depth0 != null ? depth0.passwordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t<input id=\\\"passwordField-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"passwordField\\\" type=\\\"password\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordPlaceholder || (depth0 != null ? depth0.passwordPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordPlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordValue || (depth0 != null ? depth0.passwordValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordValue\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" autocomplete=\\\"new-password\\\" />\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isTalkEnabled : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"17\":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\t\t<li>\\n\t\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t\t<input id=\\\"secureDrop-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"secureDrop\\\" class=\\\"checkbox secureDrop\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.secureDropMode : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" data-permissions=\\\"\"\n    + alias4(((helper = (helper = helpers.readPermission || (depth0 != null ? depth0.readPermission : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"readPermission\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\t\t\t\t\t\t<label for=\\\"secureDrop-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.secureDropLabel || (depth0 != null ? depth0.secureDropLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"secureDropLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isPasswordForMailSharesRequired : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(20, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"20\":function(container,depth0,helpers,partials,data) {\n    return \"disabled=\\\"\\\"\";\n},\"22\":function(container,depth0,helpers,partials,data) {\n    return \"hidden\";\n},\"24\":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\t\t<li>\\n\t\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t\t<input id=\\\"passwordByTalk-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"passwordByTalk\\\" class=\\\"passwordByTalk checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isPasswordByTalkSet : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t\t<label for=\\\"passwordByTalk-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.passwordByTalkLabel || (depth0 != null ? depth0.passwordByTalkLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordByTalkLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\t\t\t\t<li class=\\\"passwordByTalkMenu-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isPasswordByTalkSet : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t\t\t<span class=\\\"passwordByTalkContainer-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" icon-passwordtalk menuitem\\\">\\n\t\t\t\t\t\t<label for=\\\"passwordByTalkField-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"hidden-visually\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.password || (depth0 != null ? depth0.password : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"password\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.passwordByTalkLabel || (depth0 != null ? depth0.passwordByTalkLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordByTalkLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t\t<input id=\\\"passwordByTalkField-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"passwordField\\\" type=\\\"password\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordByTalkPlaceholder || (depth0 != null ? depth0.passwordByTalkPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordByTalkPlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordValue || (depth0 != null ? depth0.passwordValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordValue\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" autocomplete=\\\"new-password\\\" />\\n\t\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return container.escapeExpression(((helper = (helper = helpers.expireDate || (depth0 != null ? depth0.expireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"expireDate\",\"hash\":{},\"data\":data}) : helper)));\n},\"28\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return container.escapeExpression(((helper = (helper = helpers.defaultExpireDate || (depth0 != null ? depth0.defaultExpireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"defaultExpireDate\",\"hash\":{},\"data\":data}) : helper)));\n},\"30\":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\t<li>\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"share-add\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<span class=\\\"icon icon-edit\\\"></span>\\n\t\t\t\t\t<span>\"\n    + alias4(((helper = (helper = helpers.addNoteLabel || (depth0 != null ? depth0.addNoteLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"addNoteLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t\t\t<input type=\\\"button\\\" class=\\\"share-note-delete icon-delete \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasNote : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\t\t\t<li class=\\\"share-note-form \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasNote : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t\t<span class=\\\"menuitem icon-note\\\">\\n\t\t\t\t\t<textarea class=\\\"share-note\\\">\"\n    + alias4(((helper = (helper = helpers.shareNote || (depth0 != null ? depth0.shareNote : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareNote\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</textarea>\\n\t\t\t\t\t<input type=\\\"submit\\\" class=\\\"icon-confirm share-note-submit\\\" value=\\\"\\\" id=\\\"add-note-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t\t\t</span>\\n\t\t\t</li>\\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 \"<div class=\\\"popovermenu bubble hidden menu\\\">\\n\t<ul>\\n\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isResharingAllowed : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isFolder : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isMailShare : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t<li>\\n\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t<input id=\\\"expireDate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"expirationDate\\\" class=\\\"expireDate checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" />\\n\t\t\t\t<label for=\\\"expireDate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.expireDateLabel || (depth0 != null ? depth0.expireDateLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expireDateLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t</span>\\n\t\t</li>\\n\t\t<li class=\\\"expirationDateMenu-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t<span class=\\\"expirationDateContainer-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" icon-expiredate menuitem\\\">\\n\t\t\t\t<label for=\\\"expirationDatePicker-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"hidden-visually\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.expirationDate || (depth0 != null ? depth0.expirationDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationDate\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.expirationLabel || (depth0 != null ? depth0.expirationLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t<input id=\\\"expirationDatePicker-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"datepicker\\\" type=\\\"text\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.expirationDatePlaceholder || (depth0 != null ? depth0.expirationDatePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationDatePlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" value=\\\"\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.program(28, data, 0),\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" />\\n\t\t\t</span>\\n\t\t</li>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isNoteAvailable : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(30, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"unshare\\\"><span class=\\\"icon-loading-small hidden\\\"></span><span class=\\\"icon icon-delete\\\"></span><span>\"\n    + alias4(((helper = (helper = helpers.unshareLabel || (depth0 != null ? depth0.unshareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"unshareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span></a>\\n\t\t</li>\\n\t</ul>\\n</div>\\n\";\n},\"useData\":true});\ntemplates['sharedialogview'] = template({\"1\":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 \"\t<label for=\\\"shareWith-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"hidden-visually\\\">\"\n    + alias4(((helper = (helper = helpers.shareLabel || (depth0 != null ? depth0.shareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t<div class=\\\"oneline\\\">\\n\t\t<input id=\\\"shareWith-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"shareWithField\\\" type=\\\"text\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.sharePlaceholder || (depth0 != null ? depth0.sharePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"sharePlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t<span class=\\\"shareWithLoading icon-loading-small hidden\\\"></span>\\n\t\t<span class=\\\"shareWithConfirm icon icon-confirm\\\"></span>\\n\t</div>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return \"<div class=\\\"resharerInfoView subView\\\"></div>\\n\"\n    + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isSharingAllowed : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"<div class=\\\"linkShareView subView\\\"></div>\\n<div class=\\\"shareeListView subView\\\"></div>\\n<div class=\\\"loading hidden\\\" style=\\\"height: 50px\\\"></div>\\n\";\n},\"useData\":true});\n})();","/*\n * Copyright (c) 2015\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(!OC.Share) {\n\t\tOC.Share = {};\n\t\tOC.Share.Types = {};\n\t}\n\n\t/**\n\t * @typedef {object} OC.Share.Types.LinkShareInfo\n\t * @property {string} token\n\t * @property {bool} hideDownload\n\t * @property {string|null} password\n\t * @property {bool} sendPasswordByTalk\n\t * @property {number} permissions\n\t * @property {Date} expiration\n\t * @property {number} stime share time\n\t */\n\n\t/**\n\t * @typedef {object} OC.Share.Types.Reshare\n\t * @property {string} uid_owner\n\t * @property {number} share_type\n\t * @property {string} share_with\n\t * @property {string} displayname_owner\n\t * @property {number} permissions\n\t */\n\n\t/**\n\t * @typedef {object} OC.Share.Types.ShareInfo\n\t * @property {number} share_type\n\t * @property {number} permissions\n\t * @property {number} file_source optional\n\t * @property {number} item_source\n\t * @property {string} token\n\t * @property {string} share_with\n\t * @property {string} share_with_displayname\n\t * @property {string} share_with_avatar\n\t * @property {string} mail_send\n\t * @property {Date} expiration optional?\n\t * @property {number} stime optional?\n\t * @property {string} uid_owner\n\t * @property {string} displayname_owner\n\t */\n\n\t/**\n\t * @typedef {object} OC.Share.Types.ShareItemInfo\n\t * @property {OC.Share.Types.Reshare} reshare\n\t * @property {OC.Share.Types.ShareInfo[]} shares\n\t * @property {OC.Share.Types.LinkShareInfo|undefined} linkShare\n\t */\n\n\t/**\n\t * These properties are sometimes returned by the server as strings instead\n\t * of integers, so we need to convert them accordingly...\n\t */\n\tvar SHARE_RESPONSE_INT_PROPS = [\n\t\t'id', 'file_parent', 'mail_send', 'file_source', 'item_source', 'permissions',\n\t\t'storage', 'share_type', 'parent', 'stime'\n\t];\n\n\t/**\n\t * @class OCA.Share.ShareItemModel\n\t * @classdesc\n\t *\n\t * Represents the GUI of the share dialogue\n\t *\n\t * // FIXME: use OC Share API once #17143 is done\n\t *\n\t * // TODO: this really should be a collection of share item models instead,\n\t * where the link share is one of them\n\t */\n\tvar ShareItemModel = OC.Backbone.Model.extend({\n\t\t/**\n\t\t * share id of the link share, if applicable\n\t\t */\n\t\t_linkShareId: null,\n\n\t\tinitialize: function(attributes, options) {\n\t\t\tif(!_.isUndefined(options.configModel)) {\n\t\t\t\tthis.configModel = options.configModel;\n\t\t\t}\n\t\t\tif(!_.isUndefined(options.fileInfoModel)) {\n\t\t\t\t/** @type {OC.Files.FileInfo} **/\n\t\t\t\tthis.fileInfoModel = options.fileInfoModel;\n\t\t\t}\n\n\t\t\t_.bindAll(this, 'addShare');\n\t\t},\n\n\t\tdefaults: {\n\t\t\tallowPublicUploadStatus: false,\n\t\t\tpermissions: 0,\n\t\t\tlinkShares: []\n\t\t},\n\n\t\t/**\n\t\t * Saves the current link share information.\n\t\t *\n\t\t * This will trigger an ajax call and, if successful, refetch the model\n\t\t * afterwards. Callbacks \"success\", \"error\" and \"complete\" can be given\n\t\t * in the options object; \"success\" is called after a successful save\n\t\t * once the model is refetch, \"error\" is called after a failed save, and\n\t\t * \"complete\" is called both after a successful save and after a failed\n\t\t * save. Note that \"complete\" is called before \"success\" and \"error\" are\n\t\t * called (unlike in jQuery, in which it is called after them); this\n\t\t * ensures that \"complete\" is called even if refetching the model fails.\n\t\t *\n\t\t * TODO: this should be a separate model\n\t\t */\n\t\tsaveLinkShare: function(attributes, options) {\n\t\t\toptions = options || {};\n\t\t\tattributes = _.extend({}, attributes);\n\n\t\t\tvar shareId = null;\n\t\t\tvar call;\n\n\t\t\t// oh yeah...\n\t\t\tif (attributes.expiration) {\n\t\t\t\tattributes.expireDate = attributes.expiration;\n\t\t\t\tdelete attributes.expiration;\n\t\t\t}\n\n\t\t\tvar linkShares = this.get('linkShares');\n\t\t\tvar shareIndex = _.findIndex(linkShares, function(share) {return share.id === attributes.cid})\n\n\t\t\tif (linkShares.length > 0 && shareIndex !== -1) {\n\t\t\t\tshareId = linkShares[shareIndex].id;\n\n\t\t\t\t// note: update can only update a single value at a time\n\t\t\t\tcall = this.updateShare(shareId, attributes, options);\n\t\t\t} else {\n\t\t\t\tattributes = _.defaults(attributes, {\n\t\t\t\t\thideDownload: false,\n\t\t\t\t\tpassword: '',\n\t\t\t\t\tpasswordChanged: false,\n\t\t\t\t\tsendPasswordByTalk: false,\n\t\t\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\t\t\texpireDate: this.configModel.getDefaultExpirationDateString(),\n\t\t\t\t\tshareType: OC.Share.SHARE_TYPE_LINK\n\t\t\t\t});\n\n\t\t\t\tcall = this.addShare(attributes, options);\n\t\t\t}\n\n\t\t\treturn call;\n\t\t},\n\n\t\taddShare: function(attributes, options) {\n\t\t\tvar shareType = attributes.shareType;\n\t\t\tattributes = _.extend({}, attributes);\n\n\t\t\t// get default permissions\n\t\t\tvar defaultPermissions = OC.getCapabilities()['files_sharing']['default_permissions'] || OC.PERMISSION_ALL;\n\t\t\tvar possiblePermissions = OC.PERMISSION_READ;\n\n\t\t\tif (this.updatePermissionPossible()) {\n\t\t\t\tpossiblePermissions = possiblePermissions | OC.PERMISSION_UPDATE;\n\t\t\t}\n\t\t\tif (this.createPermissionPossible()) {\n\t\t\t\tpossiblePermissions = possiblePermissions | OC.PERMISSION_CREATE;\n\t\t\t}\n\t\t\tif (this.deletePermissionPossible()) {\n\t\t\t\tpossiblePermissions = possiblePermissions | OC.PERMISSION_DELETE;\n\t\t\t}\n\t\t\tif (this.configModel.get('isResharingAllowed') && (this.sharePermissionPossible())) {\n\t\t\t\tpossiblePermissions = possiblePermissions | OC.PERMISSION_SHARE;\n\t\t\t}\n\n\t\t\tattributes.permissions = defaultPermissions & possiblePermissions;\n\t\t\tif (_.isUndefined(attributes.path)) {\n\t\t\t\tattributes.path = this.fileInfoModel.getFullPath();\n\t\t\t}\n\n\t\t\treturn this._addOrUpdateShare({\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: this._getUrl('shares'),\n\t\t\t\tdata: attributes,\n\t\t\t\tdataType: 'json'\n\t\t\t}, options);\n\t\t},\n\n\t\tupdateShare: function(shareId, attrs, options) {\n\t\t\treturn this._addOrUpdateShare({\n\t\t\t\ttype: 'PUT',\n\t\t\t\turl: this._getUrl('shares/' + encodeURIComponent(shareId)),\n\t\t\t\tdata: attrs,\n\t\t\t\tdataType: 'json'\n\t\t\t}, options);\n\t\t},\n\n\t\t_addOrUpdateShare: function(ajaxSettings, options) {\n\t\t\tvar self = this;\n\t\t\toptions = options || {};\n\n\t\t\treturn $.ajax(\n\t\t\t\tajaxSettings\n\t\t\t).always(function() {\n\t\t\t\tif (_.isFunction(options.complete)) {\n\t\t\t\t\toptions.complete(self);\n\t\t\t\t}\n\t\t\t}).done(function() {\n\t\t\t\tself.fetch().done(function() {\n\t\t\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t\t\toptions.success(self);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}).fail(function(xhr) {\n\t\t\t\tvar msg = t('core', 'Error');\n\t\t\t\tvar result = xhr.responseJSON;\n\t\t\t\tif (result && result.ocs && result.ocs.meta) {\n\t\t\t\t\tmsg = result.ocs.meta.message;\n\t\t\t\t}\n\n\t\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\t\toptions.error(self, msg);\n\t\t\t\t} else {\n\t\t\t\t\tOC.dialogs.alert(msg, t('core', 'Error while sharing'));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Deletes the share with the given id\n\t\t *\n\t\t * @param {int} shareId share id\n\t\t * @return {jQuery}\n\t\t */\n\t\tremoveShare: function(shareId, options) {\n\t\t\tvar self = this;\n\t\t\toptions = options || {};\n\t\t\treturn $.ajax({\n\t\t\t\ttype: 'DELETE',\n\t\t\t\turl: this._getUrl('shares/' + encodeURIComponent(shareId)),\n\t\t\t}).done(function() {\n\t\t\t\tself.fetch({\n\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t\t\t\toptions.success(self);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}).fail(function(xhr) {\n\t\t\t\tvar msg = t('core', 'Error');\n\t\t\t\tvar result = xhr.responseJSON;\n\t\t\t\tif (result.ocs && result.ocs.meta) {\n\t\t\t\t\tmsg = result.ocs.meta.message;\n\t\t\t\t}\n\n\t\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\t\toptions.error(self, msg);\n\t\t\t\t} else {\n\t\t\t\t\tOC.dialogs.alert(msg, t('core', 'Error removing share'));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisPublicUploadAllowed: function() {\n\t\t\treturn this.get('allowPublicUploadStatus');\n\t\t},\n\n\t\tisPublicEditingAllowed: function() {\n\t\t\treturn this.get('allowPublicEditingStatus');\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisHideFileListSet: function() {\n\t\t\treturn this.get('hideFileListStatus');\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisFolder: function() {\n\t\t\treturn this.get('itemType') === 'folder';\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisFile: function() {\n\t\t\treturn this.get('itemType') === 'file';\n\t\t},\n\n\t\t/**\n\t\t * whether this item has reshare information\n\t\t * @returns {boolean}\n\t\t */\n\t\thasReshare: function() {\n\t\t\tvar reshare = this.get('reshare');\n\t\t\treturn _.isObject(reshare) && !_.isUndefined(reshare.uid_owner);\n\t\t},\n\n\t\t/**\n\t\t * whether this item has user share information\n\t\t * @returns {boolean}\n\t\t */\n\t\thasUserShares: function() {\n\t\t\treturn this.getSharesWithCurrentItem().length > 0;\n\t\t},\n\n\t\t/**\n\t\t * Returns whether this item has link shares\n\t\t *\n\t\t * @return {bool} true if a link share exists, false otherwise\n\t\t */\n\t\thasLinkShares: function() {\n\t\t\tvar linkShares = this.get('linkShares');\n\t\t\tif (linkShares && linkShares.length > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetReshareOwner: function() {\n\t\t\treturn this.get('reshare').uid_owner;\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetReshareOwnerDisplayname: function() {\n\t\t\treturn this.get('reshare').displayname_owner;\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetReshareNote: function() {\n\t\t\treturn this.get('reshare').note;\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetReshareWith: function() {\n\t\t\treturn this.get('reshare').share_with;\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetReshareWithDisplayName: function() {\n\t\t\tvar reshare = this.get('reshare');\n\t\t\treturn reshare.share_with_displayname || reshare.share_with;\n\t\t},\n\n\t\t/**\n\t\t * @returns {number}\n\t\t */\n\t\tgetReshareType: function() {\n\t\t\treturn this.get('reshare').share_type;\n\t\t},\n\n\t\tgetExpireDate: function(shareIndex) {\n\t\t\treturn this._shareExpireDate(shareIndex);\n\t\t},\n\n\t\tgetNote: function(shareIndex) {\n\t\t\treturn this._shareNote(shareIndex);\n\t\t},\n\n\t\t/**\n\t\t * Returns all share entries that only apply to the current item\n\t\t * (file/folder)\n\t\t *\n\t\t * @return {Array.<OC.Share.Types.ShareInfo>}\n\t\t */\n\t\tgetSharesWithCurrentItem: function() {\n\t\t\tvar shares = this.get('shares') || [];\n\t\t\tvar fileId = this.fileInfoModel.get('id');\n\t\t\treturn _.filter(shares, function(share) {\n\t\t\t\treturn share.item_source === fileId;\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetShareWith: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.share_with;\n\t\t},\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetShareWithDisplayName: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.share_with_displayname;\n\t\t},\n\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetShareWithAvatar: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.share_with_avatar;\n\t\t},\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetSharedBy: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.uid_owner;\n\t\t},\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetSharedByDisplayName: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.displayname_owner;\n\t\t},\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetFileOwnerUid: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.uid_file_owner;\n\t\t},\n\n\t\t/**\n\t\t * returns the array index of a sharee for a provided shareId\n\t\t *\n\t\t * @param shareId\n\t\t * @returns {number}\n\t\t */\n\t\tfindShareWithIndex: function(shareId) {\n\t\t\tvar shares = this.get('shares');\n\t\t\tif(!_.isArray(shares)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\tfor(var i = 0; i < shares.length; i++) {\n\t\t\t\tvar shareWith = shares[i];\n\t\t\t\tif(shareWith.id === shareId) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow \"Unknown Sharee\";\n\t\t},\n\n\t\tgetShareType: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.share_type;\n\t\t},\n\n\t\t/**\n\t\t * whether a share from shares has the requested permission\n\t\t *\n\t\t * @param {number} shareIndex\n\t\t * @param {number} permission\n\t\t * @returns {boolean}\n\t\t * @private\n\t\t */\n\t\t_shareHasPermission: function(shareIndex, permission) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn (share.permissions & permission) === permission;\n\t\t},\n\n\n\t\t_shareExpireDate: function(shareIndex) {\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\tvar date2 = share.expiration;\n\t\t\treturn date2;\n\t\t},\n\n\n\t\t_shareNote: function(shareIndex) {\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.note;\n\t\t},\n\n\t\t/**\n\t\t * @return {int}\n\t\t */\n\t\tgetPermissions: function() {\n\t\t\treturn this.get('permissions');\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tsharePermissionPossible: function() {\n\t\t\treturn (this.get('permissions') & OC.PERMISSION_SHARE) === OC.PERMISSION_SHARE;\n\t\t},\n\n\t\t/**\n\t\t * @param {number} shareIndex\n\t\t * @returns {boolean}\n\t\t */\n\t\thasSharePermission: function(shareIndex) {\n\t\t\treturn this._shareHasPermission(shareIndex, OC.PERMISSION_SHARE);\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tcreatePermissionPossible: function() {\n\t\t\treturn (this.get('permissions') & OC.PERMISSION_CREATE) === OC.PERMISSION_CREATE;\n\t\t},\n\n\t\t/**\n\t\t * @param {number} shareIndex\n\t\t * @returns {boolean}\n\t\t */\n\t\thasCreatePermission: function(shareIndex) {\n\t\t\treturn this._shareHasPermission(shareIndex, OC.PERMISSION_CREATE);\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tupdatePermissionPossible: function() {\n\t\t\treturn (this.get('permissions') & OC.PERMISSION_UPDATE) === OC.PERMISSION_UPDATE;\n\t\t},\n\n\t\t/**\n\t\t * @param {number} shareIndex\n\t\t * @returns {boolean}\n\t\t */\n\t\thasUpdatePermission: function(shareIndex) {\n\t\t\treturn this._shareHasPermission(shareIndex, OC.PERMISSION_UPDATE);\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tdeletePermissionPossible: function() {\n\t\t\treturn (this.get('permissions') & OC.PERMISSION_DELETE) === OC.PERMISSION_DELETE;\n\t\t},\n\n\t\t/**\n\t\t * @param {number} shareIndex\n\t\t * @returns {boolean}\n\t\t */\n\t\thasDeletePermission: function(shareIndex) {\n\t\t\treturn this._shareHasPermission(shareIndex, OC.PERMISSION_DELETE);\n\t\t},\n\n\t\thasReadPermission: function(shareIndex) {\n\t\t\treturn this._shareHasPermission(shareIndex, OC.PERMISSION_READ);\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\teditPermissionPossible: function() {\n\t\t\treturn    this.createPermissionPossible()\n\t\t\t\t   || this.updatePermissionPossible()\n\t\t\t\t   || this.deletePermissionPossible();\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t *     The state that the 'can edit' permission checkbox should have.\n\t\t *     Possible values:\n\t\t *     - empty string: no permission\n\t\t *     - 'checked': all applicable permissions\n\t\t *     - 'indeterminate': some but not all permissions\n\t\t */\n\t\teditPermissionState: function(shareIndex) {\n\t\t\tvar hcp = this.hasCreatePermission(shareIndex);\n\t\t\tvar hup = this.hasUpdatePermission(shareIndex);\n\t\t\tvar hdp = this.hasDeletePermission(shareIndex);\n\t\t\tif (this.isFile()) {\n\t\t\t\tif (hcp || hup || hdp) {\n\t\t\t\t\treturn 'checked';\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tif (!hcp && !hup && !hdp) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tif (   (this.createPermissionPossible() && !hcp)\n\t\t\t\t|| (this.updatePermissionPossible() && !hup)\n\t\t\t\t|| (this.deletePermissionPossible() && !hdp)   ) {\n\t\t\t\treturn 'indeterminate';\n\t\t\t}\n\t\t\treturn 'checked';\n\t\t},\n\n\t\t/**\n\t\t * @returns {int}\n\t\t */\n\t\tlinkSharePermissions: function(shareId) {\n\t\t\tvar linkShares = this.get('linkShares');\n\t\t\tvar shareIndex = _.findIndex(linkShares, function(share) {return share.id === shareId})\n\n\t\t\tif (!this.hasLinkShares()) {\n\t\t\t\treturn -1;\n\t\t\t} else if (linkShares.length > 0 && shareIndex !== -1) {\n\t\t\t\treturn linkShares[shareIndex].permissions;\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\n\t\t_getUrl: function(base, params) {\n\t\t\tparams = _.extend({format: 'json'}, params || {});\n\t\t\treturn OC.linkToOCS('apps/files_sharing/api/v1', 2) + base + '?' + OC.buildQueryString(params);\n\t\t},\n\n\t\t_fetchShares: function() {\n\t\t\tvar path = this.fileInfoModel.getFullPath();\n\t\t\treturn $.ajax({\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: this._getUrl('shares', {path: path, reshares: true})\n\t\t\t});\n\t\t},\n\n\t\t_fetchReshare: function() {\n\t\t\t// only fetch original share once\n\t\t\tif (!this._reshareFetched) {\n\t\t\t\tvar path = this.fileInfoModel.getFullPath();\n\t\t\t\tthis._reshareFetched = true;\n\t\t\t\treturn $.ajax({\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\turl: this._getUrl('shares', {path: path, shared_with_me: true})\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn $.Deferred().resolve([{\n\t\t\t\t\tocs: {\n\t\t\t\t\t\tdata: [this.get('reshare')]\n\t\t\t\t\t}\n\t\t\t\t}]);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Group reshares into a single super share element.\n\t\t * Does this by finding the most precise share and\n\t\t * combines the permissions to be the most permissive.\n\t\t *\n\t\t * @param {Array} reshares\n\t\t * @return {Object} reshare\n\t\t */\n\t\t_groupReshares: function(reshares) {\n\t\t\tif (!reshares || !reshares.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar superShare = reshares.shift();\n\t\t\tvar combinedPermissions = superShare.permissions;\n\t\t\t_.each(reshares, function(reshare) {\n\t\t\t\t// use share have higher priority than group share\n\t\t\t\tif (reshare.share_type === OC.Share.SHARE_TYPE_USER && superShare.share_type === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\t\tsuperShare = reshare;\n\t\t\t\t}\n\t\t\t\tcombinedPermissions |= reshare.permissions;\n\t\t\t});\n\n\t\t\tsuperShare.permissions = combinedPermissions;\n\t\t\treturn superShare;\n\t\t},\n\n\t\tfetch: function(options) {\n\t\t\tvar model = this;\n\t\t\tthis.trigger('request', this);\n\n\t\t\tvar deferred = $.when(\n\t\t\t\tthis._fetchShares(),\n\t\t\t\tthis._fetchReshare()\n\t\t\t);\n\t\t\tdeferred.done(function(data1, data2) {\n\t\t\t\tmodel.trigger('sync', 'GET', this);\n\t\t\t\tvar sharesMap = {};\n\t\t\t\t_.each(data1[0].ocs.data, function(shareItem) {\n\t\t\t\t\tsharesMap[shareItem.id] = shareItem;\n\t\t\t\t});\n\n\t\t\t\tvar reshare = false;\n\t\t\t\tif (data2[0].ocs.data.length) {\n\t\t\t\t\treshare = model._groupReshares(data2[0].ocs.data);\n\t\t\t\t}\n\n\t\t\t\tmodel.set(model.parse({\n\t\t\t\t\tshares: sharesMap,\n\t\t\t\t\treshare: reshare\n\t\t\t\t}));\n\n\t\t\t\tif(!_.isUndefined(options) && _.isFunction(options.success)) {\n\t\t\t\t\toptions.success();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn deferred;\n\t\t},\n\n\t\t/**\n\t\t * Updates OC.Share.itemShares and OC.Share.statuses.\n\t\t *\n\t\t * This is required in case the user navigates away and comes back,\n\t\t * the share statuses from the old arrays are still used to fill in the icons\n\t\t * in the file list.\n\t\t */\n\t\t_legacyFillCurrentShares: function(shares) {\n\t\t\tvar fileId = this.fileInfoModel.get('id');\n\t\t\tif (!shares || !shares.length) {\n\t\t\t\tdelete OC.Share.statuses[fileId];\n\t\t\t\tOC.Share.currentShares = {};\n\t\t\t\tOC.Share.itemShares = [];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar currentShareStatus = OC.Share.statuses[fileId];\n\t\t\tif (!currentShareStatus) {\n\t\t\t\tcurrentShareStatus = {link: false};\n\t\t\t\tOC.Share.statuses[fileId] = currentShareStatus;\n\t\t\t}\n\t\t\tcurrentShareStatus.link = false;\n\n\t\t\tOC.Share.currentShares = {};\n\t\t\tOC.Share.itemShares = [];\n\t\t\t_.each(shares,\n\t\t\t\t/**\n\t\t\t\t * @param {OC.Share.Types.ShareInfo} share\n\t\t\t\t */\n\t\t\t\tfunction(share) {\n\t\t\t\t\tif (share.share_type === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\tOC.Share.itemShares[share.share_type] = true;\n\t\t\t\t\t\tcurrentShareStatus.link = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!OC.Share.itemShares[share.share_type]) {\n\t\t\t\t\t\t\tOC.Share.itemShares[share.share_type] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tOC.Share.itemShares[share.share_type].push(share.share_with);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\tparse: function(data) {\n\t\t\tif(data === false) {\n\t\t\t\tconsole.warn('no data was returned');\n\t\t\t\tthis.trigger('fetchError');\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tvar permissions = this.fileInfoModel.get('permissions');\n\t\t\tif(!_.isUndefined(data.reshare) && !_.isUndefined(data.reshare.permissions) && data.reshare.uid_owner !== OC.currentUser) {\n\t\t\t\tpermissions = permissions & data.reshare.permissions;\n\t\t\t}\n\n\t\t\tvar allowPublicUploadStatus = false;\n\t\t\tif(!_.isUndefined(data.shares)) {\n\t\t\t\t$.each(data.shares, function (key, value) {\n\t\t\t\t\tif (value.share_type === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\tallowPublicUploadStatus = (value.permissions & OC.PERMISSION_CREATE) ? true : false;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar allowPublicEditingStatus = true;\n\t\t\tif(!_.isUndefined(data.shares)) {\n\t\t\t\t$.each(data.shares, function (key, value) {\n\t\t\t\t\tif (value.share_type === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\tallowPublicEditingStatus = (value.permissions & OC.PERMISSION_UPDATE) ? true : false;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\tvar hideFileListStatus = false;\n\t\t\tif(!_.isUndefined(data.shares)) {\n\t\t\t\t$.each(data.shares, function (key, value) {\n\t\t\t\t\tif (value.share_type === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\thideFileListStatus = (value.permissions & OC.PERMISSION_READ) ? false : true;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t/** @type {OC.Share.Types.ShareInfo[]} **/\n\t\t\tvar shares = _.map(data.shares, function(share) {\n\t\t\t\t// properly parse some values because sometimes the server\n\t\t\t\t// returns integers as string...\n\t\t\t\tvar i;\n\t\t\t\tfor (i = 0; i < SHARE_RESPONSE_INT_PROPS.length; i++) {\n\t\t\t\t\tvar prop = SHARE_RESPONSE_INT_PROPS[i];\n\t\t\t\t\tif (!_.isUndefined(share[prop])) {\n\t\t\t\t\t\tshare[prop] = parseInt(share[prop], 10);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn share;\n\t\t\t});\n\n\t\t\tthis._legacyFillCurrentShares(shares);\n\n\t\t\tvar linkShares =  [];\n\t\t\t// filter out the share by link\n\t\t\tshares = _.reject(shares,\n\t\t\t\t/**\n\t\t\t\t * @param {OC.Share.Types.ShareInfo} share\n\t\t\t\t */\n\t\t\t\tfunction(share) {\n\t\t\t\t\tvar isShareLink =\n\t\t\t\t\t\tshare.share_type === OC.Share.SHARE_TYPE_LINK\n\t\t\t\t\t\t&& (   share.file_source === this.get('itemSource')\n\t\t\t\t\t\t|| share.item_source === this.get('itemSource'));\n\n\t\t\t\t\tif (isShareLink) {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Ignore reshared link shares for now\n\t\t\t\t\t\t * FIXME: Find a way to display properly\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (share.uid_owner !== OC.currentUser) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar link = window.location.protocol + '//' + window.location.host;\n\t\t\t\t\t\tif (!share.token) {\n\t\t\t\t\t\t\t// pre-token link\n\t\t\t\t\t\t\tvar fullPath = this.fileInfoModel.get('path') + '/' +\n\t\t\t\t\t\t\t\tthis.fileInfoModel.get('name');\n\t\t\t\t\t\t\tvar location = '/' + OC.currentUser + '/files' + fullPath;\n\t\t\t\t\t\t\tvar type = this.fileInfoModel.isDirectory() ? 'folder' : 'file';\n\t\t\t\t\t\t\tlink += OC.linkTo('', 'public.php') + '?service=files&' +\n\t\t\t\t\t\t\t\ttype + '=' + encodeURIComponent(location);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlink += OC.generateUrl('/s/') + share.token;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlinkShares.push(_.extend({}, share, {\n\t\t\t\t\t\t\t// hide_download is returned as an int, so force it\n\t\t\t\t\t\t\t// to a boolean\n\t\t\t\t\t\t\thideDownload: !!share.hide_download,\n\t\t\t\t\t\t\tpassword: share.share_with,\n\t\t\t\t\t\t\tsendPasswordByTalk: share.send_password_by_talk\n\t\t\t\t\t\t}));\n\n\t\t\t\t\t\treturn share;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\treshare: data.reshare,\n\t\t\t\tshares: shares,\n\t\t\t\tlinkShares: linkShares,\n\t\t\t\tpermissions: permissions,\n\t\t\t\tallowPublicUploadStatus: allowPublicUploadStatus,\n\t\t\t\tallowPublicEditingStatus: allowPublicEditingStatus,\n\t\t\t\thideFileListStatus: hideFileListStatus\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Parses a string to an valid integer (unix timestamp)\n\t\t * @param time\n\t\t * @returns {*}\n\t\t * @internal Only used to work around a bug in the backend\n\t\t */\n\t\t_parseTime: function(time) {\n\t\t\tif (_.isString(time)) {\n\t\t\t\t// skip empty strings and hex values\n\t\t\t\tif (time === '' || (time.length > 1 && time[0] === '0' && time[1] === 'x')) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\ttime = parseInt(time, 10);\n\t\t\t\tif(isNaN(time)) {\n\t\t\t\t\ttime = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn time;\n\t\t},\n\n\t\t/**\n\t\t * Returns a list of share types from the existing shares.\n\t\t *\n\t\t * @return {Array.<int>} array of share types\n\t\t */\n\t\tgetShareTypes: function() {\n\t\t\tvar result;\n\t\t\tresult = _.pluck(this.getSharesWithCurrentItem(), 'share_type');\n\t\t\tif (this.hasLinkShares()) {\n\t\t\t\tresult.push(OC.Share.SHARE_TYPE_LINK);\n\t\t\t}\n\t\t\treturn _.uniq(result);\n\t\t}\n\t});\n\n\tOC.Share.ShareItemModel = ShareItemModel;\n})();\n","/**\n * @copyright 2017, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\tif (!OC.Share) {\n\t\tOC.Share = {};\n\t}\n\n\tOC.Share.Social = {};\n\n\tvar SocialModel = OC.Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\t/** used for sorting social buttons */\n\t\t\tkey: null,\n\t\t\t/** url to open, {{reference}} will be replaced with the link */\n\t\t\turl: null,\n\t\t\t/** Name to show in the tooltip */\n\t\t\tname: null,\n\t\t\t/** Icon class to display */\n\t\t\ticonClass: null,\n\t\t\t/** Open in new windows */\n\t\t\tnewWindow: true\n\t\t}\n\t});\n\n\tOC.Share.Social.Model = SocialModel;\n\n\tvar SocialCollection = OC.Backbone.Collection.extend({\n\t\tmodel: OC.Share.Social.Model,\n\n\t\tcomparator: 'key'\n\t});\n\n\n\tOC.Share.Social.Collection = new SocialCollection;\n})();\n","/*\n * Copyright (c) 2015\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/* globals Handlebars */\n\n(function() {\n\tif (!OC.Share) {\n\t\tOC.Share = {};\n\t}\n\n\t/**\n\t * @class OCA.Share.ShareDialogView\n\t * @member {OC.Share.ShareItemModel} model\n\t * @member {jQuery} $el\n\t * @memberof OCA.Sharing\n\t * @classdesc\n\t *\n\t * Represents the GUI of the share dialogue\n\t *\n\t */\n\tvar ShareDialogResharerInfoView = OC.Backbone.View.extend({\n\t\t/** @type {string} **/\n\t\tid: 'shareDialogResharerInfo',\n\n\t\t/** @type {string} **/\n\t\ttagName: 'div',\n\n\t\t/** @type {string} **/\n\t\tclassName: 'reshare',\n\n\t\t/** @type {OC.Share.ShareConfigModel} **/\n\t\tconfigModel: undefined,\n\n\t\t/** @type {Function} **/\n\t\t_template: undefined,\n\n\t\tinitialize: function(options) {\n\t\t\tvar view = this;\n\n\t\t\tthis.model.on('change:reshare', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tif(!_.isUndefined(options.configModel)) {\n\t\t\t\tthis.configModel = options.configModel;\n\t\t\t} else {\n\t\t\t\tthrow 'missing OC.Share.ShareConfigModel';\n\t\t\t}\n\t\t},\n\n\t\trender: function() {\n\t\t\tif (!this.model.hasReshare()\n\t\t\t\t|| this.model.getReshareOwner() === OC.currentUser)\n\t\t\t{\n\t\t\t\tthis.$el.empty();\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tvar reshareTemplate = this.template();\n\t\t\tvar ownerDisplayName = this.model.getReshareOwnerDisplayname();\n\t\t\tvar shareNote = this.model.getReshareNote();\n\t\t\t\n\t\t\tvar sharedByText = '';\n\n\t\t\tif (this.model.getReshareType() === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\tsharedByText = t(\n\t\t\t\t\t'core',\n\t\t\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t\t\t{\n\t\t\t\t\t\tgroup: this.model.getReshareWithDisplayName(),\n\t\t\t\t\t\towner: ownerDisplayName\n\t\t\t\t\t},\n\t\t\t\t\tundefined,\n\t\t\t\t\t{escape: false}\n\t\t\t\t);\n\t\t\t} else if (this.model.getReshareType() === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\tsharedByText = t(\n\t\t\t\t\t'core',\n\t\t\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t\t\t{\n\t\t\t\t\t\tcircle: this.model.getReshareWithDisplayName(),\n\t\t\t\t\t\towner: ownerDisplayName\n\t\t\t\t\t},\n\t\t\t\t\tundefined,\n\t\t\t\t\t{escape: false}\n\t\t\t\t);\n\t\t\t} else if (this.model.getReshareType() === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\tif (this.model.get('reshare').share_with_displayname) {\n\t\t\t\t\tsharedByText = t(\n\t\t\t\t\t\t'core',\n\t\t\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconversation: this.model.getReshareWithDisplayName(),\n\t\t\t\t\t\t\towner: ownerDisplayName\n\t\t\t\t\t\t},\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{escape: false}\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tsharedByText = t(\n\t\t\t\t\t\t'core',\n\t\t\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\towner: ownerDisplayName\n\t\t\t\t\t\t},\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{escape: false}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsharedByText = t(\n\t\t\t\t\t'core',\n\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t{ owner: ownerDisplayName },\n\t\t\t\t\tundefined,\n\t\t\t\t\t{escape: false}\n\t\t\t\t);\n\t\t\t}\n\n\n\n\t\t\tthis.$el.html(reshareTemplate({\n\t\t\t\treshareOwner: this.model.getReshareOwner(),\n\t\t\t\tsharedByText: sharedByText,\n\t\t\t\tshareNote: shareNote,\n\t\t\t\thasShareNote: shareNote !== ''\n\t\t\t}));\n\n\t\t\tthis.$el.find('.avatar').each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\t$this.avatar($this.data('username'), 32);\n\t\t\t});\n\n\t\t\tthis.$el.find('.reshare').contactsMenu(\n\t\t\t\tthis.model.getReshareOwner(),\n\t\t\t\tOC.Share.SHARE_TYPE_USER,\n\t\t\t\tthis.$el);\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * @returns {Function} from Handlebars\n\t\t * @private\n\t\t */\n\t\ttemplate: function () {\n\t\t\treturn OC.Share.Templates['sharedialogresharerinfoview'];\n\t\t}\n\n\t});\n\n\tOC.Share.ShareDialogResharerInfoView = ShareDialogResharerInfoView;\n\n})();\n","/*\n * Copyright (c) 2015\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/* globals Clipboard, Handlebars */\n\n(function() {\n\tif (!OC.Share) {\n\t\tOC.Share = {};\n\t}\n\n\tvar PASSWORD_PLACEHOLDER = '**********';\n\tvar PASSWORD_PLACEHOLDER_MESSAGE = t('core', 'Choose a password for the public link');\n\tvar PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL = t('core', 'Choose a password for the public link or press the \"Enter\" key');\n\n\t/**\n\t * @class OCA.Share.ShareDialogLinkShareView\n\t * @member {OC.Share.ShareItemModel} model\n\t * @member {jQuery} $el\n\t * @memberof OCA.Sharing\n\t * @classdesc\n\t *\n\t * Represents the GUI of the share dialogue\n\t *\n\t */\n\tvar ShareDialogLinkShareView = OC.Backbone.View.extend({\n\t\t/** @type {string} **/\n\t\tid: 'shareDialogLinkShare',\n\n\t\t/** @type {OC.Share.ShareConfigModel} **/\n\t\tconfigModel: undefined,\n\n\t\t/** @type {boolean} **/\n\t\tshowLink: true,\n\n\t\t/** @type {boolean} **/\n\t\tshowPending: false,\n\n\t\t/** @type {string} **/\n\t\tpassword: '',\n\n\t\t/** @type {string} **/\n\t\tnewShareId: 'new-share',\n\n\t\tevents: {\n\t\t\t// open menu\n\t\t\t'click .share-menu .icon-more': 'onToggleMenu',\n\t\t\t// hide download\n\t\t\t'change .hideDownloadCheckbox': 'onHideDownloadChange',\n\t\t\t// password\n\t\t\t'click input.share-pass-submit': 'onPasswordEntered', \n\t\t\t'keyup input.linkPassText': 'onPasswordKeyUp', // check for the enter key\n\t\t\t'change .showPasswordCheckbox': 'onShowPasswordClick',\n\t\t\t'change .passwordByTalkCheckbox': 'onPasswordByTalkChange',\n\t\t\t'change .publicEditingCheckbox': 'onAllowPublicEditingChange',\n\t\t\t// copy link url\n\t\t\t'click .linkText': 'onLinkTextClick',\n\t\t\t// social\n\t\t\t'click .pop-up': 'onPopUpClick',\n\t\t\t// permission change\n\t\t\t'change .publicUploadRadio': 'onPublicUploadChange',\n\t\t\t// expire date\n\t\t\t'click .expireDate' : 'onExpireDateChange',\n\t\t\t'change .datepicker': 'onChangeExpirationDate',\n\t\t\t'click .datepicker' : 'showDatePicker',\n\t\t\t// note\n\t\t\t'click .share-add': 'showNoteForm',\n\t\t\t'click .share-note-delete': 'deleteNote',\n\t\t\t'click .share-note-submit': 'updateNote',\n\t\t\t// remove\n\t\t\t'click .unshare': 'onUnshare',\n\t\t\t// new share\n\t\t\t'click .new-share': 'newShare',\n\t\t\t// enforced pass set\n\t\t\t'submit .enforcedPassForm': 'enforcedPasswordSet',\n\t\t},\n\n\t\tinitialize: function(options) {\n\t\t\tvar view = this;\n\n\t\t\tthis.model.on('change:permissions', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tthis.model.on('change:itemType', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tthis.model.on('change:allowPublicUploadStatus', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tthis.model.on('change:hideFileListStatus', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tthis.model.on('change:linkShares', function(model, linkShares) {\n\t\t\t\t// The \"Password protect by Talk\" item is shown only when there\n\t\t\t\t// is a password. Unfortunately there is no fine grained\n\t\t\t\t// rendering of items in the link shares, so the whole view\n\t\t\t\t// needs to be rendered again when the password of a share\n\t\t\t\t// changes.\n\t\t\t\t// Note that this event handler is concerned only about password\n\t\t\t\t// changes; other changes in the link shares does not trigger\n\t\t\t\t// a rendering, so the view must be rendered again as needed in\n\t\t\t\t// those cases (for example, when a link share is removed).\n\t\t\t\t\n\t\t\t\tvar previousLinkShares = model.previous('linkShares');\n\t\t\t\tif (previousLinkShares.length !== linkShares.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar i;\n\t\t\t\tfor (i = 0; i < linkShares.length; i++) {\n\t\t\t\t\tif (linkShares[i].id !== previousLinkShares[i].id) {\n\t\t\t\t\t\t// A resorting should never happen, but just in case.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (linkShares[i].password !== previousLinkShares[i].password) {\n\t\t\t\t\t\tview.render();\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(!_.isUndefined(options.configModel)) {\n\t\t\t\tthis.configModel = options.configModel;\n\t\t\t} else {\n\t\t\t\tthrow 'missing OC.Share.ShareConfigModel';\n\t\t\t}\n\n\t\t\tvar clipboard = new Clipboard('.clipboard-button');\n\t\t\tclipboard.on('success', function(e) {\n\t\t\t\tvar $trigger = $(e.trigger);\n\n\t\t\t\t$trigger.tooltip('hide')\n\t\t\t\t\t.attr('data-original-title', t('core', 'Copied!'))\n\t\t\t\t\t.tooltip('fixTitle')\n\t\t\t\t\t.tooltip({placement: 'bottom', trigger: 'manual'})\n\t\t\t\t\t.tooltip('show');\n\t\t\t\t_.delay(function() {\n\t\t\t\t\t$trigger.tooltip('hide')\n\t\t\t\t\t\t.attr('data-original-title', t('core', 'Copy link'))\n\t\t\t\t\t\t.tooltip('fixTitle')\n\t\t\t\t}, 3000);\n\t\t\t});\n\t\t\tclipboard.on('error', function (e) {\n\t\t\t\tvar $trigger = $(e.trigger);\n\t\t\t\tvar $menu = $trigger.next('.share-menu').find('.popovermenu');\n\t\t\t\tvar $linkTextMenu = $menu.find('li.linkTextMenu');\n\t\t\t\tvar $input = $linkTextMenu.find('.linkText');\n\n\t\t\t\tvar $li = $trigger.closest('li[data-share-id]');\n\t\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\t\t// show menu\n\t\t\t\tOC.showMenu(null, $menu);\n\n\t\t\t\tvar actionMsg = '';\n\t\t\t\tif (/iPhone|iPad/i.test(navigator.userAgent)) {\n\t\t\t\t\tactionMsg = t('core', 'Not supported!');\n\t\t\t\t} else if (/Mac/i.test(navigator.userAgent)) {\n\t\t\t\t\tactionMsg = t('core', 'Press ⌘-C to copy.');\n\t\t\t\t} else {\n\t\t\t\t\tactionMsg = t('core', 'Press Ctrl-C to copy.');\n\t\t\t\t}\n\n\t\t\t\t$linkTextMenu.removeClass('hidden');\n\t\t\t\t$input.select();\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t\t.attr('data-original-title', actionMsg)\n\t\t\t\t\t.tooltip('fixTitle')\n\t\t\t\t\t.tooltip({placement: 'bottom', trigger: 'manual'})\n\t\t\t\t\t.tooltip('show');\n\t\t\t\t_.delay(function () {\n\t\t\t\t\t$input.tooltip('hide');\n\t\t\t\t\t$input.attr('data-original-title', t('core', 'Copy'))\n\t\t\t\t\t\t  .tooltip('fixTitle');\n\t\t\t\t}, 3000);\n\t\t\t});\n\t\t},\n\n\t\tnewShare: function(event) {\n\t\t\tvar self = this;\n\t\t\tvar $target = $(event.target);\n\t\t\tvar $li = $target.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $loading = $li.find('.share-menu > .icon-loading-small');\n\n\t\t\tif(!$loading.hasClass('hidden') && this.password === '') {\n\t\t\t\t// in process\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// hide all icons and show loading\n\t\t\t$li.find('.icon').addClass('hidden');\n\t\t\t$loading.removeClass('hidden');\n\n\t\t\t// hide menu\n\t\t\tOC.hideMenus();\n\n\t\t\tvar shareData = {}\n\n\t\t\tvar isPasswordEnforced = this.configModel.get('enforcePasswordForPublicLink');\n\t\t\tvar isExpirationEnforced = this.configModel.get('isDefaultExpireDateEnforced');\n\n\t\t\t// set default expire date\n\t\t\tif (isExpirationEnforced) {\n\t\t\t\tvar defaultExpireDays = this.configModel.get('defaultExpireDate');\n\t\t\t\tvar expireDate = moment().add(defaultExpireDays, 'day').format('DD-MM-YYYY')\n\t\t\t\tshareData.expireDate = expireDate;\n\t\t\t}\n\n\t\t\t// if password is set, add to data\n\t\t\tif (isPasswordEnforced && this.password !== '') {\n\t\t\t\tshareData.password = this.password\n\t\t\t}\n\n\t\t\tvar newShareId = false;\n\n\t\t\t// We need a password before the share creation\n\t\t\tif (isPasswordEnforced && !this.showPending && this.password === '') {\n\t\t\t\tthis.showPending = shareId;\n\t\t\t\tvar self = this.render();\n\t\t\t\tself.$el.find('.pending #enforcedPassText').focus();\n\t\t\t} else {\n\t\t\t\t// else, we have a password or it is not enforced\n\t\t\t\t$.when(this.model.saveLinkShare(shareData, {\n\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t\t$li.find('.icon').removeClass('hidden');\n\t\t\t\t\t\tself.render();\n\t\t\t\t\t\t// open the menu by default\n\t\t\t\t\t\t// we can only do that after the render\n\t\t\t\t\t\tif (newShareId) {\n\t\t\t\t\t\t\tvar shares = self.$el.find('li[data-share-id]');\n\t\t\t\t\t\t\tvar $newShare = self.$el.find('li[data-share-id=\"'+newShareId+'\"]');\n\t\t\t\t\t\t\t// only open the menu by default if this is the first share\n\t\t\t\t\t\t\tif ($newShare && shares.length === 1) {\n\t\t\t\t\t\t\t\tvar $menu = $newShare.find('.popovermenu');\n\t\t\t\t\t\t\t\tOC.showMenu(null, $menu);\n\t\t\t\t\t\t\t}\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\t// empty function to override the default Dialog warning\n\t\t\t\t\t}\n\t\t\t\t})).fail(function(response) {\n\t\t\t\t\t// password failure? Show error\n\t\t\t\t\tself.password = ''\n\t\t\t\t\tif (isPasswordEnforced && response && response.responseJSON && response.responseJSON.ocs.meta && response.responseJSON.ocs.meta.message) {\n\t\t\t\t\t\tvar $input = self.$el.find('.pending #enforcedPassText')\n\t\t\t\t\t\t$input.tooltip('destroy');\n\t\t\t\t\t\t$input.attr('title', response.responseJSON.ocs.meta.message);\n\t\t\t\t\t\t$input.tooltip({placement: 'bottom', trigger: 'manual'});\n\t\t\t\t\t\t$input.tooltip('show');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Unable to create a link share'));\n\t\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t\t$li.find('.icon').removeClass('hidden');\n\t\t\t\t\t}\n\t\t\t\t}).then(function(response) {\n\t\t\t\t\t// resolve before success\n\t\t\t\t\tnewShareId = response.ocs.data.id\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tenforcedPasswordSet: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tvar $form = $(event.target);\n\t\t\tvar $input = $form.find('input.enforcedPassText');\n\t\t\tthis.password = $input.val();\n\t\t\tthis.showPending = false;\n\t\t\tthis.newShare(event);\n\t\t},\n\n\t\tonLinkTextClick: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar $el = $li.find('.linkText');\n\t\t\t$el.focus();\n\t\t\t$el.select();\n\t\t},\n\n\t\tonHideDownloadChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $checkbox = $li.find('.hideDownloadCheckbox');\n\t\t\t$checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');\n\n\t\t\tvar hideDownload = false;\n\t\t\tif($checkbox.is(':checked')) {\n\t\t\t\thideDownload = true;\n\t\t\t}\n\n\t\t\tthis.model.saveLinkShare({\n\t\t\t\thideDownload: hideDownload,\n\t\t\t\tcid: shareId\n\t\t\t}, {\n\t\t\t\tsuccess: function() {\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t},\n\t\t\t\terror: function(obj, msg) {\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Unable to toggle this option'));\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tonShowPasswordClick: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\t$li.find('.linkPass').slideToggle(OC.menuSpeed);\n\t\t\t$li.find('.linkPassMenu').toggleClass('hidden');\n\t\t\tif(!$li.find('.showPasswordCheckbox').is(':checked')) {\n\t\t\t\tthis.model.saveLinkShare({\n\t\t\t\t\tpassword: '',\n\t\t\t\t\tcid: shareId\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (!OC.Util.isIE()) {\n\t\t\t\t\t$li.find('.linkPassText').focus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tonPasswordKeyUp: function(event) {\n\t\t\tif(event.keyCode === 13) {\n\t\t\t\tthis.onPasswordEntered(event);\n\t\t\t}\n\t\t},\n\n\t\tonPasswordEntered: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $loading = $li.find('.linkPassMenu .icon-loading-small');\n\t\t\tif (!$loading.hasClass('hidden')) {\n\t\t\t\t// still in process\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar $input = $li.find('.linkPassText');\n\t\t\t$input.removeClass('error');\n\t\t\t$input.parent().find('input').removeClass('error');\n\t\t\tvar password = $input.val();\n\n\t\t\tif ($li.find('.linkPassText').attr('placeholder') === PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL) {\n\n\t\t\t\t// in IE9 the password might be the placeholder due to bugs in the placeholders polyfill\n\t\t\t\tif(password === PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL) {\n\t\t\t\t\tpassword = '';\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// in IE9 the password might be the placeholder due to bugs in the placeholders polyfill\n\t\t\t\tif(password === '' || password === PASSWORD_PLACEHOLDER || password === PASSWORD_PLACEHOLDER_MESSAGE) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$loading\n\t\t\t\t.removeClass('hidden')\n\t\t\t\t.addClass('inlineblock');\n\n\t\t\tthis.model.saveLinkShare({\n\t\t\t\tpassword: password,\n\t\t\t\tcid: shareId\n\t\t\t}, {\n\t\t\t\tcomplete: function(model) {\n\t\t\t\t\t$loading.removeClass('inlineblock').addClass('hidden');\n\t\t\t\t},\n\t\t\t\terror: function(model, msg) {\n\t\t\t\t\t// Add visual feedback to both the input and the submit button\n\t\t\t\t\t$input.parent().find('input').addClass('error');\n\n\t\t\t\t\t// destroy old tooltips\n\t\t\t\t\tvar $container = $input.parent();\n\t\t\t\t\t$container.tooltip('destroy');\n\t\t\t\t\t$input.addClass('error');\n\t\t\t\t\t$container.attr('title', msg);\n\t\t\t\t\t$container.tooltip({placement: 'bottom', trigger: 'manual'});\n\t\t\t\t\t$container.tooltip('show');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tonPasswordByTalkChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $checkbox = $li.find('.passwordByTalkCheckbox');\n\t\t\t$checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');\n\n\t\t\tvar sendPasswordByTalk = false;\n\t\t\tif($checkbox.is(':checked')) {\n\t\t\t\tsendPasswordByTalk = true;\n\t\t\t}\n\n\t\t\tthis.model.saveLinkShare({\n\t\t\t\tsendPasswordByTalk: sendPasswordByTalk,\n\t\t\t\tcid: shareId\n\t\t\t}, {\n\t\t\t\tsuccess: function() {\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t},\n\t\t\t\terror: function(obj, msg) {\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Unable to toggle this option'));\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tonAllowPublicEditingChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $checkbox = $li.find('.publicEditingCheckbox');\n\t\t\t$checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');\n\n\t\t\tvar permissions = OC.PERMISSION_READ;\n\t\t\tif($checkbox.is(':checked')) {\n\t\t\t\tpermissions = OC.PERMISSION_UPDATE | OC.PERMISSION_READ;\n\t\t\t}\n\n\t\t\tthis.model.saveLinkShare({\n\t\t\t\tpermissions: permissions,\n\t\t\t\tcid: shareId\n\t\t\t}, {\n\t\t\t\tsuccess: function() {\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t},\n\t\t\t\terror: function(obj, msg) {\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Unable to toggle this option'));\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\tonPublicUploadChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar permissions = event.currentTarget.value;\n\t\t\tthis.model.saveLinkShare({\n\t\t\t\tpermissions: permissions,\n\t\t\t\tcid: shareId\n\t\t\t});\n\t\t},\n\n\t\tshowNoteForm: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar $menu = $element.closest('li');\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\n\t\t\t// show elements\n\t\t\t$menu.find('.share-note-delete').toggleClass('hidden');\n\t\t\t$form.toggleClass('hidden');\n\t\t\t$form.find('textarea').focus();\n\t\t},\n\n\t\tdeleteNote: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $menu = $element.closest('li');\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\n\t\t\t$form.find('.share-note').val('');\n\n\t\t\t$form.addClass('hidden');\n\t\t\t$menu.find('.share-note-delete').addClass('hidden');\n\n\t\t\tself.sendNote('', shareId, $menu);\n\t\t},\n\n\t\tupdateNote: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $form = $element.closest('li.share-note-form');\n\t\t\tvar $menu = $form.prev('li');\n\t\t\tvar message = $form.find('.share-note').val().trim();\n\n\t\t\tif (message.length < 1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.sendNote(message, shareId, $menu);\n\t\t},\n\n\t\tsendNote: function(note, shareId, $menu) {\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\t\t\tvar $submit = $form.find('input.share-note-submit');\n\t\t\tvar $error = $form.find('input.share-note-error');\n\n\t\t\t$submit.prop('disabled', true);\n\t\t\t$menu.find('.icon-loading-small').removeClass('hidden');\n\t\t\t$menu.find('.icon-edit').hide();\n\n\t\t\tvar complete = function() {\n\t\t\t\t$submit.prop('disabled', false);\n\t\t\t\t$menu.find('.icon-loading-small').addClass('hidden');\n\t\t\t\t$menu.find('.icon-edit').show();\n\t\t\t};\n\t\t\tvar error = function() {\n\t\t\t\t$error.show();\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$error.hide();\n\t\t\t\t}, 3000);\n\t\t\t};\n\n\t\t\t// send data\n\t\t\t$.ajax({\n\t\t\t\tmethod: 'PUT',\n\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1/shares',2) + shareId + '?' + OC.buildQueryString({format: 'json'}),\n\t\t\t\tdata: { note: note },\n\t\t\t\tcomplete : complete,\n\t\t\t\terror: error\n\t\t\t});\n\t\t},\n\n\t\trender: function() {\n\t\t\tthis.$el.find('.has-tooltip').tooltip();\n\n\t\t\t// reset previously set passwords\n\t\t\tthis.password = '';\n\n\t\t\tvar linkShareTemplate = this.template();\n\t\t\tvar resharingAllowed = this.model.sharePermissionPossible();\n\n\t\t\tif(!resharingAllowed\n\t\t\t\t|| !this.showLink\n\t\t\t\t|| !this.configModel.isShareWithLinkAllowed())\n\t\t\t{\n\t\t\t\tvar templateData = {shareAllowed: false};\n\t\t\t\tif (!resharingAllowed) {\n\t\t\t\t\t// add message\n\t\t\t\t\ttemplateData.noSharingPlaceholder = t('core', 'Resharing is not allowed');\n\t\t\t\t}\n\t\t\t\tthis.$el.html(linkShareTemplate(templateData));\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tvar publicUpload =\n\t\t\t\tthis.model.isFolder()\n\t\t\t\t&& this.model.createPermissionPossible()\n\t\t\t\t&& this.configModel.isPublicUploadEnabled();\n\n\n\t\t\tvar publicEditingChecked = '';\n\t\t\tif(this.model.isPublicEditingAllowed()) {\n\t\t\t\tpublicEditingChecked = 'checked=\"checked\"';\n\t\t\t}\n\n\t\t\tvar isPasswordEnforced = this.configModel.get('enforcePasswordForPublicLink');\n\t\t\tvar isPasswordEnabledByDefault = this.configModel.get('enableLinkPasswordByDefault') === true;\n\t\t\tvar passwordPlaceholderInitial = this.configModel.get('enforcePasswordForPublicLink')\n\t\t\t\t? PASSWORD_PLACEHOLDER_MESSAGE : PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL;\n\n\t\t\tvar publicEditable =\n\t\t\t\t!this.model.isFolder()\n\t\t\t\t&& this.model.updatePermissionPossible();\n\n\t\t\tvar isExpirationEnforced = this.configModel.get('isDefaultExpireDateEnforced');\n\n\t\t\t// what if there is another date picker on that page?\n\t\t\tvar minDate = new Date();\n\t\t\t// min date should always be the next day\n\t\t\tminDate.setDate(minDate.getDate()+1);\n\n\t\t\t$.datepicker.setDefaults({\n\t\t\t\tminDate: minDate\n\t\t\t});\n\n\t\t\tthis.$el.find('.datepicker').datepicker({dateFormat : 'dd-mm-yy'});\n\n\t\t\tvar minPasswordLength = 4\n\t\t\t// password policy?\n\t\t\tif(oc_capabilities.password_policy && oc_capabilities.password_policy.minLength) {\n\t\t\t\tminPasswordLength = oc_capabilities.password_policy.minLength;\n\t\t\t}\n\n\t\t\tvar popoverBase = {\n\t\t\t\turlLabel: t('core', 'Link'),\n\t\t\t\thideDownloadLabel: t('core', 'Hide download'),\n\t\t\t\tenablePasswordLabel: isPasswordEnforced ? t('core', 'Password protection enforced') : t('core', 'Password protect'),\n\t\t\t\tpasswordLabel: t('core', 'Password'),\n\t\t\t\tpasswordPlaceholderInitial: passwordPlaceholderInitial,\n\t\t\t\tpublicUpload: publicUpload,\n\t\t\t\tpublicEditing: publicEditable,\n\t\t\t\tpublicEditingChecked: publicEditingChecked,\n\t\t\t\tpublicEditingLabel: t('core', 'Allow editing'),\n\t\t\t\tmailPrivatePlaceholder: t('core', 'Email link to person'),\n\t\t\t\tmailButtonText: t('core', 'Send'),\n\t\t\t\tpublicUploadRWLabel: t('core', 'Allow upload and editing'),\n\t\t\t\tpublicUploadRLabel: t('core', 'Read only'),\n\t\t\t\tpublicUploadWLabel: t('core', 'File drop (upload only)'),\n\t\t\t\tpublicUploadRWValue: OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ | OC.PERMISSION_DELETE,\n\t\t\t\tpublicUploadRValue: OC.PERMISSION_READ,\n\t\t\t\tpublicUploadWValue: OC.PERMISSION_CREATE,\n\t\t\t\texpireDateLabel: isExpirationEnforced ? t('core', 'Expiration date enforced') : t('core', 'Set expiration date'),\n\t\t\t\texpirationLabel: t('core', 'Expiration'),\n\t\t\t\texpirationDatePlaceholder: t('core', 'Expiration date'),\n\t\t\t\tisExpirationEnforced: isExpirationEnforced,\n\t\t\t\tisPasswordEnforced: isPasswordEnforced,\n\t\t\t\tdefaultExpireDate: moment().add(1, 'day').format('DD-MM-YYYY'), // Can't expire today\n\t\t\t\taddNoteLabel: t('core', 'Note to recipient'),\n\t\t\t\tunshareLabel: t('core', 'Unshare'),\n\t\t\t\tunshareLinkLabel: t('core', 'Delete share link'),\n\t\t\t\tnewShareLabel: t('core', 'Add another link'),\n\t\t\t};\n\n\t\t\tvar pendingPopover = {\n\t\t\t\tisPasswordEnforced: isPasswordEnforced,\n\t\t\t\tenforcedPasswordLabel: t('core', 'Password protection for links is mandatory'),\n\t\t\t\tpasswordPlaceholder: passwordPlaceholderInitial,\n\t\t\t\tminPasswordLength: minPasswordLength,\n\t\t\t};\n\t\t\tvar pendingPopoverMenu = this.pendingPopoverMenuTemplate(_.extend({}, pendingPopover))\n\n\t\t\tvar linkShares = this.getShareeList();\n\t\t\tif(_.isArray(linkShares)) {\n\t\t\t\tfor (var i = 0; i < linkShares.length; i++) {\n\t\t\t\t\tvar social = [];\n\t\t\t\t\tOC.Share.Social.Collection.each(function (model) {\n\t\t\t\t\t\tvar url = model.get('url');\n\t\t\t\t\t\turl = url.replace('{{reference}}', linkShares[i].shareLinkURL);\n\t\t\t\t\t\tsocial.push({\n\t\t\t\t\t\t\turl: url,\n\t\t\t\t\t\t\tlabel: t('core', 'Share to {name}', {name: model.get('name')}),\n\t\t\t\t\t\t\tname: model.get('name'),\n\t\t\t\t\t\t\ticonClass: model.get('iconClass'),\n\t\t\t\t\t\t\tnewWindow: model.get('newWindow')\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tvar popover = this.getPopoverObject(linkShares[i])\n\t\t\t\t\tlinkShares[i].popoverMenu = this.popoverMenuTemplate(_.extend({}, popoverBase, popover, {social: social}));\n\t\t\t\t\tlinkShares[i].pendingPopoverMenu = pendingPopoverMenu\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.$el.html(linkShareTemplate({\n\t\t\t\tlinkShares: linkShares,\n\t\t\t\tshareAllowed: true,\n\t\t\t\tnolinkShares: linkShares.length === 0,\n\t\t\t\tnewShareLabel: t('core', 'Share link'),\n\t\t\t\tnewShareTitle: t('core', 'New share link'),\n\t\t\t\tpendingPopoverMenu: pendingPopoverMenu,\n\t\t\t\tshowPending: this.showPending === this.newShareId,\n\t\t\t\tnewShareId: this.newShareId,\n\t\t\t}));\n\n\t\t\tthis.delegateEvents();\n\n\t\t\t// new note autosize\n\t\t\tautosize(this.$el.find('.share-note-form .share-note'));\n\n\t\t\treturn this;\n\t\t},\n\n\t\tonToggleMenu: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar $menu = $li.find('.sharingOptionsGroup .popovermenu');\n\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\tOC.showMenu(null, $menu);\n\n\t\t\t// focus the password if not set and enforced\n\t\t\tvar isPasswordEnabledByDefault = this.configModel.get('enableLinkPasswordByDefault') === true;\n\t\t\tvar haspassword = $menu.find('.linkPassText').val() !== '';\n\n\t\t\tif (!haspassword && isPasswordEnabledByDefault) {\n\t\t\t\t$menu.find('.linkPassText').focus();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @returns {Function} from Handlebars\n\t\t * @private\n\t\t */\n\t\ttemplate: function () {\n\t\t\treturn OC.Share.Templates['sharedialoglinkshareview'];\n\t\t},\n\n\t\t/**\n\t\t * renders the popover template and returns the resulting HTML\n\t\t *\n\t\t * @param {Object} data\n\t\t * @returns {string}\n\t\t */\n\t\tpopoverMenuTemplate: function(data) {\n\t\t\treturn OC.Share.Templates['sharedialoglinkshareview_popover_menu'](data);\n\t\t},\n\n\t\t/**\n\t\t * renders the pending popover template and returns the resulting HTML\n\t\t *\n\t\t * @param {Object} data\n\t\t * @returns {string}\n\t\t */\n\t\tpendingPopoverMenuTemplate: function(data) {\n\t\t\treturn OC.Share.Templates['sharedialoglinkshareview_popover_menu_pending'](data);\n\t\t},\n\n\t\tonPopUpClick: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\tvar url = $(event.currentTarget).data('url');\n\t\t\tvar newWindow = $(event.currentTarget).data('window');\n\t\t\t$(event.currentTarget).tooltip('hide');\n\t\t\tif (url) {\n\t\t\t\tif (newWindow === true) {\n\t\t\t\t\tvar width = 600;\n\t\t\t\t\tvar height = 400;\n\t\t\t\t\tvar left = (screen.width / 2) - (width / 2);\n\t\t\t\t\tvar top = (screen.height / 2) - (height / 2);\n\n\t\t\t\t\twindow.open(url, 'name', 'width=' + width + ', height=' + height + ', top=' + top + ', left=' + left);\n\t\t\t\t} else {\n\t\t\t\t\twindow.location.href = url;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tonExpireDateChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar expirationDatePicker = '#expirationDateContainer-' + shareId;\n\t\t\tvar datePicker = $(expirationDatePicker);\n\t\t\tvar state = $element.prop('checked');\n\t\t\tdatePicker.toggleClass('hidden', !state);\n\n\t\t\tif (!state) {\n\t\t\t\t// disabled, let's hide the input and\n\t\t\t\t// set the expireDate to nothing\n\t\t\t\t$element.closest('li').next('li').addClass('hidden');\n\t\t\t\tthis.setExpirationDate('', shareId);\n\t\t\t} else {\n\t\t\t\t// enabled, show the input and the datepicker\n\t\t\t\t$element.closest('li').next('li').removeClass('hidden');\n\t\t\t\tthis.showDatePicker(event);\n\n\t\t\t}\n\t\t},\n\n\t\tshowDatePicker: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar maxDate = $element.data('max-date');\n\t\t\tvar expirationDatePicker = '#expirationDatePicker-' + shareId;\n\t\t\tvar self = this;\n\n\t\t\t$(expirationDatePicker).datepicker({\n\t\t\t\tdateFormat : 'dd-mm-yy',\n\t\t\t\tonSelect: function (expireDate) {\n\t\t\t\t\tself.setExpirationDate(expireDate, shareId);\n\t\t\t\t},\n\t\t\t\tmaxDate: maxDate\n\t\t\t});\n\t\t\t$(expirationDatePicker).datepicker('show');\n\t\t\t$(expirationDatePicker).focus();\n\n\t\t},\n\n\t\tsetExpirationDate: function(expireDate, shareId) {\n\t\t\tthis.model.saveLinkShare({expireDate: expireDate, cid: shareId});\n\t\t},\n\n\t\tonChangeExpirationDate: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar expireDate = $element.val();\n\t\t\tvar li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar expirationDatePicker = '#expirationDatePicker-' + shareId;\n\n\t\t\tthis.setExpirationDate(expireDate, shareId);\n\t\t\t$(expirationDatePicker).datepicker('hide');\n\t\t},\n\n\t\t/**\n\t\t * get an array of sharees' share properties\n\t\t *\n\t\t * @returns {Array}\n\t\t */\n\t\tgetShareeList: function() {\n\t\t\tvar shares = this.model.get('linkShares');\n\n\t\t\tif(!this.model.hasLinkShares()) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tvar list = [];\n\t\t\tfor(var index = 0; index < shares.length; index++) {\n\t\t\t\tvar share = this.getShareeObject(index);\n\t\t\t\t// first empty {} is necessary, otherwise we get in trouble\n\t\t\t\t// with references\n\t\t\t\tlist.push(_.extend({}, share));\n\t\t\t}\n\n\t\t\treturn list;\n\t\t},\n\n\t\t/**\n\t\t *\n\t\t * @param {OC.Share.Types.ShareInfo} shareInfo\n\t\t * @returns {object}\n\t\t */\n\t\tgetShareeObject: function(shareIndex) {\n\t\t\tvar share = this.model.get('linkShares')[shareIndex];\n\n\t\t\treturn _.extend({}, share, {\n\t\t\t\tcid: share.id,\n\t\t\t\tshareAllowed: true,\n\t\t\t\tlinkShareLabel: share.label ? share.label : t('core', 'Share link'),\n\t\t\t\tpopoverMenu: {},\n\t\t\t\tshareLinkURL: share.url,\n\t\t\t\tnewShareTitle: t('core', 'New share link'),\n\t\t\t\tcopyLabel: t('core', 'Copy link'),\n\t\t\t\tshowPending: this.showPending === share.id,\n\t\t\t\tlinkShareCreationDate: t('core', 'Created on {time}', { time: moment(share.stime * 1000).format('LLLL') })\n\t\t\t})\n\t\t},\n\n\t\tgetPopoverObject: function(share) {\n\t\t\tvar publicUploadRWChecked = '';\n\t\t\tvar publicUploadRChecked = '';\n\t\t\tvar publicUploadWChecked = '';\n\n\t\t\tswitch (this.model.linkSharePermissions(share.id)) {\n\t\t\t\tcase OC.PERMISSION_READ:\n\t\t\t\t\tpublicUploadRChecked = 'checked';\n\t\t\t\t\tbreak;\n\t\t\t\tcase OC.PERMISSION_CREATE:\n\t\t\t\t\tpublicUploadWChecked = 'checked';\n\t\t\t\t\tbreak;\n\t\t\t\tcase OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ | OC.PERMISSION_DELETE:\n\t\t\t\t\tpublicUploadRWChecked = 'checked';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar isPasswordSet = !!share.password;\n\t\t\tvar isPasswordEnabledByDefault = this.configModel.get('enableLinkPasswordByDefault') === true;\n\t\t\tvar isPasswordEnforced = this.configModel.get('enforcePasswordForPublicLink');\n\t\t\tvar isExpirationEnforced = this.configModel.get('isDefaultExpireDateEnforced');\n\t\t\tvar defaultExpireDays = this.configModel.get('defaultExpireDate');\n\t\t\tvar hasExpireDate = !!share.expiration || isExpirationEnforced;\n\n\t\t\tvar expireDate;\n\t\t\tif (hasExpireDate) {\n\t\t\t\texpireDate = moment(share.expiration, 'YYYY-MM-DD').format('DD-MM-YYYY');\n\t\t\t}\n\n\t\t\tvar isTalkEnabled = oc_appswebroots['spreed'] !== undefined;\n\t\t\tvar sendPasswordByTalk = share.sendPasswordByTalk;\n\n\t\t\tvar hideDownload = share.hideDownload;\n\n\t\t\tvar maxDate = null;\n\n\t\t\tif(hasExpireDate) {\n\t\t\t\tif(isExpirationEnforced) {\n\t\t\t\t\t// TODO: hack: backend returns string instead of integer\n\t\t\t\t\tvar shareTime = share.stime;\n\t\t\t\t\tif (_.isNumber(shareTime)) {\n\t\t\t\t\t\tshareTime = new Date(shareTime * 1000);\n\t\t\t\t\t}\n\t\t\t\t\tif (!shareTime) {\n\t\t\t\t\t\tshareTime = new Date(); // now\n\t\t\t\t\t}\n\t\t\t\t\tshareTime = OC.Util.stripTime(shareTime).getTime();\n\t\t\t\t\tmaxDate = new Date(shareTime + defaultExpireDays * 24 * 3600 * 1000);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcid: share.id,\n\t\t\t\tshareLinkURL: share.url,\n\t\t\t\tpasswordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,\n\t\t\t\tisPasswordSet: isPasswordSet || isPasswordEnabledByDefault || isPasswordEnforced,\n\t\t\t\tshowPasswordByTalkCheckBox: isTalkEnabled && isPasswordSet,\n\t\t\t\tpasswordByTalkLabel: t('core', 'Password protect by Talk'),\n\t\t\t\tisPasswordByTalkSet: sendPasswordByTalk,\n\t\t\t\tpublicUploadRWChecked: publicUploadRWChecked,\n\t\t\t\tpublicUploadRChecked: publicUploadRChecked,\n\t\t\t\tpublicUploadWChecked: publicUploadWChecked,\n\t\t\t\thasExpireDate: hasExpireDate,\n\t\t\t\texpireDate: expireDate,\n\t\t\t\tshareNote: share.note,\n\t\t\t\thasNote: share.note !== '',\n\t\t\t\tmaxDate: maxDate,\n\t\t\t\thideDownload: hideDownload,\n\t\t\t\tisExpirationEnforced: isExpirationEnforced,\n\t\t\t}\n\t\t},\n\n\t\tonUnshare: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tif (!$element.is('a')) {\n\t\t\t\t$element = $element.closest('a');\n\t\t\t}\n\n\t\t\tvar $loading = $element.find('.icon-loading-small').eq(0);\n\t\t\tif(!$loading.hasClass('hidden')) {\n\t\t\t\t// in process\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t$loading.removeClass('hidden');\n\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\n\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\tself.model.removeShare(shareId, {\n\t\t\t\tsuccess: function() {\n\t\t\t\t\t$li.remove();\n\t\t\t\t\tself.render()\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\tOC.Notification.showTemporary(t('core', 'Could not unshare'));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn false;\n\t\t},\n\n\n\t});\n\n\tOC.Share.ShareDialogLinkShareView = ShareDialogLinkShareView;\n\n})();\n","/* global OC, Handlebars */\n\n/*\n * Copyright (c) 2015\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/* globals Handlebars */\n\n(function() {\n\n\tvar PASSWORD_PLACEHOLDER = '**********';\n\tvar PASSWORD_PLACEHOLDER_MESSAGE = t('core', 'Choose a password for the mail share');\n\n\tif (!OC.Share) {\n\t\tOC.Share = {};\n\t}\n\n\t/**\n\t * @class OCA.Share.ShareDialogShareeListView\n\t * @member {OC.Share.ShareItemModel} model\n\t * @member {jQuery} $el\n\t * @memberof OCA.Sharing\n\t * @classdesc\n\t *\n\t * Represents the sharee list part in the GUI of the share dialogue\n\t *\n\t */\n\tvar ShareDialogShareeListView = OC.Backbone.View.extend({\n\t\t/** @type {string} **/\n\t\tid: 'shareDialogLinkShare',\n\n\t\t/** @type {OC.Share.ShareConfigModel} **/\n\t\tconfigModel: undefined,\n\n\t\t_menuOpen: false,\n\n\t\t/** @type {boolean|number} **/\n\t\t_renderPermissionChange: false,\n\n\t\tevents: {\n\t\t\t'click .unshare': 'onUnshare',\n\t\t\t'click .share-add': 'showNoteForm',\n\t\t\t'click .share-note-delete': 'deleteNote',\n\t\t\t'click .share-note-submit': 'updateNote',\n\t\t\t'click .share-menu .icon-more': 'onToggleMenu',\n\t\t\t'click .permissions': 'onPermissionChange',\n\t\t\t'click .expireDate' : 'onExpireDateChange',\n\t\t\t'click .password' : 'onMailSharePasswordProtectChange',\n\t\t\t'click .passwordByTalk' : 'onMailSharePasswordProtectByTalkChange',\n\t\t\t'click .secureDrop' : 'onSecureDropChange',\n\t\t\t'keyup input.passwordField': 'onMailSharePasswordKeyUp',\n\t\t\t'focusout input.passwordField': 'onMailSharePasswordEntered',\n\t\t\t'change .datepicker': 'onChangeExpirationDate',\n\t\t\t'click .datepicker' : 'showDatePicker'\n\t\t},\n\n\t\tinitialize: function(options) {\n\t\t\tif(!_.isUndefined(options.configModel)) {\n\t\t\t\tthis.configModel = options.configModel;\n\t\t\t} else {\n\t\t\t\tthrow 'missing OC.Share.ShareConfigModel';\n\t\t\t}\n\n\t\t\tvar view = this;\n\t\t\tthis.model.on('change:shares', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t *\n\t\t * @param {OC.Share.Types.ShareInfo} shareInfo\n\t\t * @returns {object}\n\t\t */\n\t\tgetShareeObject: function(shareIndex) {\n\t\t\tvar shareWith = this.model.getShareWith(shareIndex);\n\t\t\tvar shareWithDisplayName = this.model.getShareWithDisplayName(shareIndex);\n\t\t\tvar shareWithAvatar = this.model.getShareWithAvatar(shareIndex);\n\t\t\tvar shareWithTitle = '';\n\t\t\tvar shareType = this.model.getShareType(shareIndex);\n\t\t\tvar sharedBy = this.model.getSharedBy(shareIndex);\n\t\t\tvar sharedByDisplayName = this.model.getSharedByDisplayName(shareIndex);\n\t\t\tvar fileOwnerUid = this.model.getFileOwnerUid(shareIndex);\n\n\t\t\tvar hasPermissionOverride = {};\n\t\t\tif (shareType === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\tshareWithDisplayName = shareWithDisplayName + \" (\" + t('core', 'group') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\tshareWithDisplayName = shareWithDisplayName + \" (\" + t('core', 'remote') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\tshareWithDisplayName = shareWithDisplayName + \" (\" + t('core', 'remote group') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\tshareWithDisplayName = shareWithDisplayName + \" (\" + t('core', 'email') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\tshareWithDisplayName = shareWithDisplayName + \" (\" + t('core', 'conversation') + ')';\n\t\t\t}\n\n\t\t\tif (shareType === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\tshareWithTitle = shareWith + \" (\" + t('core', 'group') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\tshareWithTitle = shareWith + \" (\" + t('core', 'remote') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\tshareWithTitle = shareWith + \" (\" + t('core', 'remote group') + ')';\n\t\t\t}\n\t\t\telse if (shareType === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\tshareWithTitle = shareWith + \" (\" + t('core', 'email') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\tshareWithTitle = shareWith;\n\t\t\t\t// Force \"shareWith\" in the template to a safe value, as the\n\t\t\t\t// original \"shareWith\" returned by the model may contain\n\t\t\t\t// problematic characters like \"'\".\n\t\t\t\tshareWith = 'circle-' + shareIndex;\n\t\t\t}\n\n\t\t\tif (sharedBy !== oc_current_user) {\n\t\t\t\tvar empty = shareWithTitle === '';\n\t\t\t\tif (!empty) {\n\t\t\t\t\tshareWithTitle += ' (';\n\t\t\t\t}\n\t\t\t\tshareWithTitle += t('core', 'shared by {sharer}', {sharer: sharedByDisplayName});\n\t\t\t\tif (!empty) {\n\t\t\t\t\tshareWithTitle += ')';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar share = this.model.get('shares')[shareIndex];\n\t\t\tvar password = share.password;\n\t\t\tvar hasPassword = password !== null && password !== '';\n\t\t\tvar sendPasswordByTalk = share.send_password_by_talk;\n\n\t\t\tvar shareNote = this.model.getNote(shareIndex);\n\n\t\t\treturn _.extend(hasPermissionOverride, {\n\t\t\t\tcid: this.cid,\n\t\t\t\thasSharePermission: this.model.hasSharePermission(shareIndex),\n\t\t\t\teditPermissionState: this.model.editPermissionState(shareIndex),\n\t\t\t\thasCreatePermission: this.model.hasCreatePermission(shareIndex),\n\t\t\t\thasUpdatePermission: this.model.hasUpdatePermission(shareIndex),\n\t\t\t\thasDeletePermission: this.model.hasDeletePermission(shareIndex),\n\t\t\t\tsharedBy: sharedBy,\n\t\t\t\tsharedByDisplayName: sharedByDisplayName,\n\t\t\t\tshareWith: shareWith,\n\t\t\t\tshareWithDisplayName: shareWithDisplayName,\n\t\t\t\tshareWithAvatar: shareWithAvatar,\n\t\t\t\tshareWithTitle: shareWithTitle,\n\t\t\t\tshareType: shareType,\n\t\t\t\tshareId: this.model.get('shares')[shareIndex].id,\n\t\t\t\tmodSeed: shareWithAvatar || (shareType !== OC.Share.SHARE_TYPE_USER && shareType !== OC.Share.SHARE_TYPE_CIRCLE && shareType !== OC.Share.SHARE_TYPE_ROOM),\n\t\t\t\towner: fileOwnerUid,\n\t\t\t\tisShareWithCurrentUser: (shareType === OC.Share.SHARE_TYPE_USER && shareWith === oc_current_user),\n\t\t\t\tcanUpdateShareSettings: (sharedBy === oc_current_user || fileOwnerUid === oc_current_user),\n\t\t\t\tisRemoteShare: shareType === OC.Share.SHARE_TYPE_REMOTE,\n\t\t\t\tisRemoteGroupShare: shareType === OC.Share.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tisNoteAvailable: shareType !== OC.Share.SHARE_TYPE_REMOTE && shareType !== OC.Share.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tisMailShare: shareType === OC.Share.SHARE_TYPE_EMAIL,\n\t\t\t\tisCircleShare: shareType === OC.Share.SHARE_TYPE_CIRCLE,\n\t\t\t\tisFileSharedByMail: shareType === OC.Share.SHARE_TYPE_EMAIL && !this.model.isFolder(),\n\t\t\t\tisPasswordSet: hasPassword && !sendPasswordByTalk,\n\t\t\t\tisPasswordByTalkSet: hasPassword && sendPasswordByTalk,\n\t\t\t\tisTalkEnabled: oc_appswebroots['spreed'] !== undefined,\n\t\t\t\tsecureDropMode: !this.model.hasReadPermission(shareIndex),\n\t\t\t\thasExpireDate: this.model.getExpireDate(shareIndex) !== null,\n\t\t\t\tshareNote: shareNote,\n\t\t\t\thasNote: shareNote !== '',\n\t\t\t\texpireDate: moment(this.model.getExpireDate(shareIndex), 'YYYY-MM-DD').format('DD-MM-YYYY'),\n\t\t\t\t// The password placeholder does not take into account if\n\t\t\t\t// sending the password by Talk is enabled or not; when\n\t\t\t\t// switching from sending the password by Talk to sending the\n\t\t\t\t// password by email the password is reused and the share\n\t\t\t\t// updated, so the placeholder already shows the password in the\n\t\t\t\t// brief time between disabling sending the password by email\n\t\t\t\t// and receiving the updated share.\n\t\t\t\tpasswordPlaceholder: hasPassword ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,\n\t\t\t\tpasswordByTalkPlaceholder: (hasPassword && sendPasswordByTalk)? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,\n\t\t\t});\n\t\t},\n\n\t\tgetShareProperties: function() {\n\t\t\treturn {\n\t\t\t\tunshareLabel: t('core', 'Unshare'),\n\t\t\t\taddNoteLabel: t('core', 'Note to recipient'),\n\t\t\t\tcanShareLabel: t('core', 'Can reshare'),\n\t\t\t\tcanEditLabel: t('core', 'Can edit'),\n\t\t\t\tcreatePermissionLabel: t('core', 'Can create'),\n\t\t\t\tupdatePermissionLabel: t('core', 'Can change'),\n\t\t\t\tdeletePermissionLabel: t('core', 'Can delete'),\n\t\t\t\tsecureDropLabel: t('core', 'File drop (upload only)'),\n\t\t\t\texpireDateLabel: t('core', 'Set expiration date'),\n\t\t\t\tpasswordLabel: t('core', 'Password protect'),\n\t\t\t\tpasswordByTalkLabel: t('core', 'Password protect by Talk'),\n\t\t\t\tcrudsLabel: t('core', 'Access control'),\n\t\t\t\texpirationDatePlaceholder: t('core', 'Expiration date'),\n\t\t\t\tdefaultExpireDate: moment().add(1, 'day').format('DD-MM-YYYY'), // Can't expire today\n\t\t\t\ttriangleSImage: OC.imagePath('core', 'actions/triangle-s'),\n\t\t\t\tisResharingAllowed: this.configModel.get('isResharingAllowed'),\n\t\t\t\tisPasswordForMailSharesRequired: this.configModel.get('isPasswordForMailSharesRequired'),\n\t\t\t\tsharePermissionPossible: this.model.sharePermissionPossible(),\n\t\t\t\teditPermissionPossible: this.model.editPermissionPossible(),\n\t\t\t\tcreatePermissionPossible: this.model.createPermissionPossible(),\n\t\t\t\tupdatePermissionPossible: this.model.updatePermissionPossible(),\n\t\t\t\tdeletePermissionPossible: this.model.deletePermissionPossible(),\n\t\t\t\tsharePermission: OC.PERMISSION_SHARE,\n\t\t\t\tcreatePermission: OC.PERMISSION_CREATE,\n\t\t\t\tupdatePermission: OC.PERMISSION_UPDATE,\n\t\t\t\tdeletePermission: OC.PERMISSION_DELETE,\n\t\t\t\treadPermission: OC.PERMISSION_READ,\n\t\t\t\tisFolder: this.model.isFolder()\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * get an array of sharees' share properties\n\t\t *\n\t\t * @returns {Array}\n\t\t */\n\t\tgetShareeList: function() {\n\t\t\tvar universal = this.getShareProperties();\n\n\t\t\tif(!this.model.hasUserShares()) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tvar shares = this.model.get('shares');\n\t\t\tvar list = [];\n\t\t\tfor(var index = 0; index < shares.length; index++) {\n\t\t\t\tvar share = this.getShareeObject(index);\n\n\t\t\t\tif (share.shareType === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// first empty {} is necessary, otherwise we get in trouble\n\t\t\t\t// with references\n\t\t\t\tlist.push(_.extend({}, universal, share));\n\t\t\t}\n\n\t\t\treturn list;\n\t\t},\n\n\t\tgetLinkReshares: function() {\n\t\t\tvar universal = {\n\t\t\t\tunshareLabel: t('core', 'Unshare'),\n\t\t\t};\n\n\t\t\tif(!this.model.hasUserShares()) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tvar shares = this.model.get('shares');\n\t\t\tvar list = [];\n\t\t\tfor(var index = 0; index < shares.length; index++) {\n\t\t\t\tvar share = this.getShareeObject(index);\n\n\t\t\t\tif (share.shareType !== OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// first empty {} is necessary, otherwise we get in trouble\n\t\t\t\t// with references\n\t\t\t\tlist.push(_.extend({}, universal, share, {\n\t\t\t\t\tshareInitiator: shares[index].uid_owner,\n\t\t\t\t\tshareInitiatorText: t('core', '{shareInitiatorDisplayName} shared via link', {shareInitiatorDisplayName: shares[index].displayname_owner})\n\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn list;\n\t\t},\n\n\t\trender: function() {\n\t\t\tif(!this._renderPermissionChange) {\n\t\t\t\tthis.$el.html(this.template({\n\t\t\t\t\tcid: this.cid,\n\t\t\t\t\tsharees: this.getShareeList(),\n\t\t\t\t\tlinkReshares: this.getLinkReshares()\n\t\t\t\t}));\n\n\t\t\t\tthis.$('.avatar').each(function () {\n\t\t\t\t\tvar $this = $(this);\n\n\t\t\t\t\tif ($this.hasClass('imageplaceholderseed')) {\n\t\t\t\t\t\t$this.css({width: 32, height: 32});\n\t\t\t\t\t\tif ($this.data('avatar')) {\n\t\t\t\t\t\t\t$this.css('border-radius', '0%');\n\t\t\t\t\t\t\t$this.css('background', 'url(' + $this.data('avatar') + ') no-repeat');\n\t\t\t\t\t\t\t$this.css('background-size', '31px');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$this.imageplaceholder($this.data('seed'));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//                         user,   size,  ie8fix, hidedefault,  callback, displayname\n\t\t\t\t\t\t$this.avatar($this.data('username'), 32, undefined, undefined, undefined, $this.data('displayname'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis.$('.has-tooltip').tooltip({\n\t\t\t\t\tplacement: 'bottom'\n\t\t\t\t});\n\n\t\t\t\tthis.$('ul.shareWithList > li').each(function() {\n\t\t\t\t\tvar $this = $(this);\n\n\t\t\t\t\tvar shareWith = $this.data('share-with');\n\t\t\t\t\tvar shareType = $this.data('share-type');\n\n\t\t\t\t\t$this.find('div.avatar, span.username').contactsMenu(shareWith, shareType, $this);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvar permissionChangeShareId = parseInt(this._renderPermissionChange, 10);\n\t\t\t\tvar shareWithIndex = this.model.findShareWithIndex(permissionChangeShareId);\n\t\t\t\tvar sharee = this.getShareeObject(shareWithIndex);\n\t\t\t\t$.extend(sharee, this.getShareProperties());\n\t\t\t\tvar $li = this.$('li[data-share-id=' + permissionChangeShareId + ']');\n\t\t\t\t$li.find('.sharingOptionsGroup .popovermenu').replaceWith(this.popoverMenuTemplate(sharee));\n\t\t\t}\n\n\t\t\tvar _this = this;\n\t\t\tthis.getShareeList().forEach(function(sharee) {\n\t\t\t\tvar $edit = _this.$('#canEdit-' + _this.cid + '-' + sharee.shareId);\n\t\t\t\tif($edit.length === 1) {\n\t\t\t\t\t$edit.prop('checked', sharee.editPermissionState === 'checked');\n\t\t\t\t\tif (sharee.isFolder) {\n\t\t\t\t\t\t$edit.prop('indeterminate', sharee.editPermissionState === 'indeterminate');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.$('.popovermenu').on('afterHide', function() {\n\t\t\t\t_this._menuOpen = false;\n\t\t\t});\n\t\t\tthis.$('.popovermenu').on('beforeHide', function() {\n\t\t\t\tvar shareId = parseInt(_this._menuOpen, 10);\n\t\t\t\tif(!_.isNaN(shareId)) {\n\t\t\t\t\tvar datePickerClass = '.expirationDateContainer-' + _this.cid + '-' + shareId;\n\t\t\t\t\tvar datePickerInput = '#expirationDatePicker-' + _this.cid + '-' + shareId;\n\t\t\t\t\tvar expireDateCheckbox = '#expireDate-' + _this.cid + '-' + shareId;\n\t\t\t\t\tif ($(expireDateCheckbox).prop('checked')) {\n\t\t\t\t\t\t$(datePickerInput).removeClass('hidden-visually');\n\t\t\t\t\t\t$(datePickerClass).removeClass('hasDatepicker');\n\t\t\t\t\t\t$(datePickerClass + ' .ui-datepicker').hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (this._menuOpen !== false) {\n\t\t\t\t// Open menu again if it was opened before\n\t\t\t\tvar shareId = parseInt(this._menuOpen, 10);\n\t\t\t\tif(!_.isNaN(shareId)) {\n\t\t\t\t\tvar liSelector = 'li[data-share-id=' + shareId + ']';\n\t\t\t\t\tOC.showMenu(null, this.$(liSelector + ' .sharingOptionsGroup .popovermenu'));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._renderPermissionChange = false;\n\n\t\t\t// new note autosize\n\t\t\tautosize(this.$el.find('.share-note-form .share-note'));\n\n\t\t\tthis.delegateEvents();\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * @returns {Function} from Handlebars\n\t\t * @private\n\t\t */\n\t\ttemplate: function (data) {\n\t\t\tvar sharees = data.sharees;\n\t\t\tif(_.isArray(sharees)) {\n\t\t\t\tfor (var i = 0; i < sharees.length; i++) {\n\t\t\t\t\tdata.sharees[i].popoverMenu = this.popoverMenuTemplate(sharees[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn OC.Share.Templates['sharedialogshareelistview'](data);\n\t\t},\n\n\t\t/**\n\t\t * renders the popover template and returns the resulting HTML\n\t\t *\n\t\t * @param {Object} data\n\t\t * @returns {string}\n\t\t */\n\t\tpopoverMenuTemplate: function(data) {\n\t\t\treturn OC.Share.Templates['sharedialogshareelistview_popover_menu'](data);\n\t\t},\n\n\t\tshowNoteForm: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $menu = $element.closest('li');\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\n\t\t\t// show elements\n\t\t\t$menu.find('.share-note-delete').toggleClass('hidden');\n\t\t\t$form.toggleClass('hidden');\n\t\t\t$form.find('textarea').focus();\n\t\t},\n\n\t\tdeleteNote: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $menu = $element.closest('li');\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\n\t\t\tconsole.log($form.find('.share-note'));\n\t\t\t$form.find('.share-note').val('');\n\t\t\t\n\t\t\t$form.addClass('hidden');\n\t\t\t$menu.find('.share-note-delete').addClass('hidden');\n\n\t\t\tself.sendNote('', shareId, $menu);\n\t\t},\n\n\t\tupdateNote: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $form = $element.closest('li.share-note-form');\n\t\t\tvar $menu = $form.prev('li');\n\t\t\tvar message = $form.find('.share-note').val().trim();\n\n\t\t\tif (message.length < 1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.sendNote(message, shareId, $menu);\n\n\t\t},\n\n\t\tsendNote: function(note, shareId, $menu) {\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\t\t\tvar $submit = $form.find('input.share-note-submit');\n\t\t\tvar $error = $form.find('input.share-note-error');\n\n\t\t\t$submit.prop('disabled', true);\n\t\t\t$menu.find('.icon-loading-small').removeClass('hidden');\n\t\t\t$menu.find('.icon-edit').hide();\n\n\t\t\tvar complete = function() {\n\t\t\t\t$submit.prop('disabled', false);\n\t\t\t\t$menu.find('.icon-loading-small').addClass('hidden');\n\t\t\t\t$menu.find('.icon-edit').show();\n\t\t\t};\n\t\t\tvar error = function() {\n\t\t\t\t$error.show();\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$error.hide();\n\t\t\t\t}, 3000);\n\t\t\t};\n\n\t\t\t// send data\n\t\t\t$.ajax({\n\t\t\t\tmethod: 'PUT',\n\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1/shares',2) + shareId + '?' + OC.buildQueryString({format: 'json'}),\n\t\t\t\tdata: { note: note },\n\t\t\t\tcomplete : complete,\n\t\t\t\terror: error\n\t\t\t});\n\t\t},\n\n\t\tonUnshare: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tif (!$element.is('a')) {\n\t\t\t\t$element = $element.closest('a');\n\t\t\t}\n\n\t\t\tvar $loading = $element.find('.icon-loading-small').eq(0);\n\t\t\tif(!$loading.hasClass('hidden')) {\n\t\t\t\t// in process\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t$loading.removeClass('hidden');\n\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\n\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\tself.model.removeShare(shareId)\n\t\t\t\t.done(function() {\n\t\t\t\t\t$li.remove();\n\t\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Could not unshare'));\n\t\t\t\t});\n\t\t\treturn false;\n\t\t},\n\n\t\tonToggleMenu: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar $menu = $li.find('.sharingOptionsGroup .popovermenu');\n\n\t\t\tOC.showMenu(null, $menu);\n\t\t\tthis._menuOpen = $li.data('share-id');\n\t\t},\n\n\t\tonExpireDateChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar datePickerClass = '.expirationDateContainer-' + this.cid + '-' + shareId;\n\t\t\tvar datePicker = $(datePickerClass);\n\t\t\tvar state = $element.prop('checked');\n\t\t\tdatePicker.toggleClass('hidden', !state);\n\t\t\tif (!state) {\n\t\t\t\t// disabled, let's hide the input and\n\t\t\t\t// set the expireDate to nothing\n\t\t\t\t$element.closest('li').next('li').addClass('hidden');\n\t\t\t\tthis.setExpirationDate(shareId, '');\n\t\t\t} else {\n\t\t\t\t// enabled, show the input and the datepicker\n\t\t\t\t$element.closest('li').next('li').removeClass('hidden');\n\t\t\t\tthis.showDatePicker(event);\n\n\t\t\t}\n\t\t},\n\n\t\tshowDatePicker: function(event) {\n\t\t\tvar element = $(event.target);\n\t\t\tvar li = element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar expirationDatePicker = '#expirationDatePicker-' + this.cid + '-' + shareId;\n\t\t\tvar view = this;\n\t\t\t$(expirationDatePicker).datepicker({\n\t\t\t\tdateFormat : 'dd-mm-yy',\n\t\t\t\tonSelect: function (expireDate) {\n\t\t\t\t\tview.setExpirationDate(shareId, expireDate);\n\t\t\t\t}\n\t\t\t});\n\t\t\t$(expirationDatePicker).focus();\n\n\t\t},\n\n\t\tsetExpirationDate: function(shareId, expireDate) {\n\t\t\tthis.model.updateShare(shareId, {expireDate: expireDate}, {});\n\t\t},\n\n\t\tonMailSharePasswordProtectChange: function(event) {\n\t\t\tvar element = $(event.target);\n\t\t\tvar li = element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar passwordContainerClass = '.passwordMenu-' + this.cid + '-' + shareId;\n\t\t\tvar passwordContainer = $(passwordContainerClass);\n\t\t\tvar loading = this.$el.find(passwordContainerClass + ' .icon-loading-small');\n\t\t\tvar inputClass = '#passwordField-' + this.cid + '-' + shareId;\n\t\t\tvar passwordField = $(inputClass);\n\t\t\tvar state = element.prop('checked');\n\t\t\tvar passwordByTalkElement = $('#passwordByTalk-' + this.cid + '-' + shareId);\n\t\t\tvar passwordByTalkState = passwordByTalkElement.prop('checked');\n\t\t\tif (!state && !passwordByTalkState) {\n\t\t\t\tthis.model.updateShare(shareId, {password: '', sendPasswordByTalk: false});\n\t\t\t\tpasswordField.attr('value', '');\n\t\t\t\tpasswordField.removeClass('error');\n\t\t\t\tpasswordField.tooltip('hide');\n\t\t\t\tloading.addClass('hidden');\n\t\t\t\tpasswordField.attr('placeholder', PASSWORD_PLACEHOLDER_MESSAGE);\n\t\t\t\t// We first need to reset the password field before we hide it\n\t\t\t\tpasswordContainer.toggleClass('hidden', !state);\n\t\t\t} else if (state) {\n\t\t\t\tif (passwordByTalkState) {\n\t\t\t\t\t// Switching from sending the password by Talk to sending\n\t\t\t\t\t// the password by mail can be done keeping the previous\n\t\t\t\t\t// password sent by Talk.\n\t\t\t\t\tthis.model.updateShare(shareId, {sendPasswordByTalk: false});\n\n\t\t\t\t\tvar passwordByTalkContainerClass = '.passwordByTalkMenu-' + this.cid + '-' + shareId;\n\t\t\t\t\tvar passwordByTalkContainer = $(passwordByTalkContainerClass);\n\t\t\t\t\tpasswordByTalkContainer.addClass('hidden');\n\t\t\t\t\tpasswordByTalkElement.prop('checked', false);\n\t\t\t\t}\n\n\t\t\t\tpasswordContainer.toggleClass('hidden', !state);\n\t\t\t\tpasswordField = '#passwordField-' + this.cid + '-' + shareId;\n\t\t\t\tthis.$(passwordField).focus();\n\t\t\t}\n\t\t},\n\n\t\tonMailSharePasswordProtectByTalkChange: function(event) {\n\t\t\tvar element = $(event.target);\n\t\t\tvar li = element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar passwordByTalkContainerClass = '.passwordByTalkMenu-' + this.cid + '-' + shareId;\n\t\t\tvar passwordByTalkContainer = $(passwordByTalkContainerClass);\n\t\t\tvar loading = this.$el.find(passwordByTalkContainerClass + ' .icon-loading-small');\n\t\t\tvar inputClass = '#passwordByTalkField-' + this.cid + '-' + shareId;\n\t\t\tvar passwordByTalkField = $(inputClass);\n\t\t\tvar state = element.prop('checked');\n\t\t\tvar passwordElement = $('#password-' + this.cid + '-' + shareId);\n\t\t\tvar passwordState = passwordElement.prop('checked');\n\t\t\tif (!state) {\n\t\t\t\tthis.model.updateShare(shareId, {password: '', sendPasswordByTalk: false});\n\t\t\t\tpasswordByTalkField.attr('value', '');\n\t\t\t\tpasswordByTalkField.removeClass('error');\n\t\t\t\tpasswordByTalkField.tooltip('hide');\n\t\t\t\tloading.addClass('hidden');\n\t\t\t\tpasswordByTalkField.attr('placeholder', PASSWORD_PLACEHOLDER_MESSAGE);\n\t\t\t\t// We first need to reset the password field before we hide it\n\t\t\t\tpasswordByTalkContainer.toggleClass('hidden', !state);\n\t\t\t} else if (state) {\n\t\t\t\tif (passwordState) {\n\t\t\t\t\t// Enabling sending the password by Talk requires a new\n\t\t\t\t\t// password to be given (the one sent by mail is not reused,\n\t\t\t\t\t// as it would defeat the purpose of checking the identity\n\t\t\t\t\t// of the sharee by Talk if it was already sent by mail), so\n\t\t\t\t\t// the share is not updated until the user explicitly gives\n\t\t\t\t\t// the new password.\n\n\t\t\t\t\tvar passwordContainerClass = '.passwordMenu-' + this.cid + '-' + shareId;\n\t\t\t\t\tvar passwordContainer = $(passwordContainerClass);\n\t\t\t\t\tpasswordContainer.addClass('hidden');\n\t\t\t\t\tpasswordElement.prop('checked', false);\n\t\t\t\t}\n\n\t\t\t\tpasswordByTalkContainer.toggleClass('hidden', !state);\n\t\t\t\tpasswordByTalkField = '#passwordByTalkField-' + this.cid + '-' + shareId;\n\t\t\t\tthis.$(passwordByTalkField).focus();\n\t\t\t}\n\t\t},\n\n\t\tonMailSharePasswordKeyUp: function(event) {\n\t\t\tif(event.keyCode === 13) {\n\t\t\t\tthis.onMailSharePasswordEntered(event);\n\t\t\t}\n\t\t},\n\n\t\tonMailSharePasswordEntered: function(event) {\n\t\t\tvar passwordField = $(event.target);\n\t\t\tvar li = passwordField.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar passwordContainerClass = '.passwordMenu-' + this.cid + '-' + shareId;\n\t\t\tvar passwordByTalkContainerClass = '.passwordByTalkMenu-' + this.cid + '-' + shareId;\n\t\t\tvar sendPasswordByTalk = passwordField.attr('id').startsWith('passwordByTalk');\n\t\t\tvar loading;\n\t\t\tif (sendPasswordByTalk) {\n\t\t\t\tloading = this.$el.find(passwordByTalkContainerClass + ' .icon-loading-small');\n\t\t\t} else {\n\t\t\t\tloading = this.$el.find(passwordContainerClass + ' .icon-loading-small');\n\t\t\t}\n\t\t\tif (!loading.hasClass('hidden')) {\n\t\t\t\t// still in process\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tpasswordField.removeClass('error');\n\t\t\tvar password = passwordField.val();\n\t\t\t// in IE9 the password might be the placeholder due to bugs in the placeholders polyfill\n\t\t\tif(password === '' || password === PASSWORD_PLACEHOLDER || password === PASSWORD_PLACEHOLDER_MESSAGE) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloading\n\t\t\t\t.removeClass('hidden')\n\t\t\t\t.addClass('inlineblock');\n\n\n\t\t\tthis.model.updateShare(shareId, {\n\t\t\t\tpassword: password,\n\t\t\t\tsendPasswordByTalk: sendPasswordByTalk\n\t\t\t}, {\n\t\t\t\terror: function(model, msg) {\n\t\t\t\t\t// destroy old tooltips\n\t\t\t\t\tpasswordField.tooltip('destroy');\n\t\t\t\t\tloading.removeClass('inlineblock').addClass('hidden');\n\t\t\t\t\tpasswordField.addClass('error');\n\t\t\t\t\tpasswordField.attr('title', msg);\n\t\t\t\t\tpasswordField.tooltip({placement: 'bottom', trigger: 'manual'});\n\t\t\t\t\tpasswordField.tooltip('show');\n\t\t\t\t},\n\t\t\t\tsuccess: function(model, msg) {\n\t\t\t\t\tpasswordField.blur();\n\t\t\t\t\tpasswordField.attr('value', '');\n\t\t\t\t\tpasswordField.attr('placeholder', PASSWORD_PLACEHOLDER);\n\t\t\t\t\tloading.removeClass('inlineblock').addClass('hidden');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tonPermissionChange: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\tvar permissions = OC.PERMISSION_READ;\n\n\t\t\tif (this.model.isFolder()) {\n\t\t\t\t// adjust checkbox states\n\t\t\t\tvar $checkboxes = $('.permissions', $li).not('input[name=\"edit\"]').not('input[name=\"share\"]');\n\t\t\t\tvar checked;\n\t\t\t\tif ($element.attr('name') === 'edit') {\n\t\t\t\t\tchecked = $element.is(':checked');\n\t\t\t\t\t// Check/uncheck Create, Update, and Delete checkboxes if Edit is checked/unck\n\t\t\t\t\t$($checkboxes).prop('checked', checked);\n\t\t\t\t\tif (checked) {\n\t\t\t\t\t\tpermissions |= OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar numberChecked = $checkboxes.filter(':checked').length;\n\t\t\t\t\tchecked = numberChecked === $checkboxes.length;\n\t\t\t\t\tvar $editCb = $('input[name=\"edit\"]', $li);\n\t\t\t\t\t$editCb.prop('checked', checked);\n\t\t\t\t\t$editCb.prop('indeterminate', !checked && numberChecked > 0);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($element.attr('name') === 'edit' && $element.is(':checked')) {\n\t\t\t\t\tpermissions |= OC.PERMISSION_UPDATE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$('.permissions', $li).not('input[name=\"edit\"]').filter(':checked').each(function(index, checkbox) {\n\t\t\t\tpermissions |= $(checkbox).data('permissions');\n\t\t\t});\n\n\n\t\t\t/** disable checkboxes during save operation to avoid race conditions **/\n\t\t\t$li.find('input[type=checkbox]').prop('disabled', true);\n\t\t\tvar enableCb = function() {\n\t\t\t\t$li.find('input[type=checkbox]').prop('disabled', false);\n\t\t\t};\n\t\t\tvar errorCb = function(elem, msg) {\n\t\t\t\tOC.dialogs.alert(msg, t('core', 'Error while sharing'));\n\t\t\t\tenableCb();\n\t\t\t};\n\n\t\t\tthis.model.updateShare(shareId, {permissions: permissions}, {error: errorCb, success: enableCb});\n\n\t\t\tthis._renderPermissionChange = shareId;\n\t\t},\n\n\t\tonSecureDropChange: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\tvar permissions = OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE | OC.PERMISSION_READ;\n\t\t\tif ($element.is(':checked')) {\n\t\t\t\tpermissions = OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE;\n\t\t\t}\n\n\t\t\t/** disable checkboxes during save operation to avoid race conditions **/\n\t\t\t$li.find('input[type=checkbox]').prop('disabled', true);\n\t\t\tvar enableCb = function() {\n\t\t\t\t$li.find('input[type=checkbox]').prop('disabled', false);\n\t\t\t};\n\t\t\tvar errorCb = function(elem, msg) {\n\t\t\t\tOC.dialogs.alert(msg, t('core', 'Error while sharing'));\n\t\t\t\tenableCb();\n\t\t\t};\n\n\t\t\tthis.model.updateShare(shareId, {permissions: permissions}, {error: errorCb, success: enableCb});\n\n\t\t\tthis._renderPermissionChange = shareId;\n\t\t}\n\n\t});\n\n\tOC.Share.ShareDialogShareeListView = ShareDialogShareeListView;\n\n})();\n","/*\n * Copyright (c) 2015\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/* globals Handlebars */\n\n(function() {\n\tif(!OC.Share) {\n\t\tOC.Share = {};\n\t}\n\n\t/**\n\t * @class OCA.Share.ShareDialogView\n\t * @member {OC.Share.ShareItemModel} model\n\t * @member {jQuery} $el\n\t * @memberof OCA.Sharing\n\t * @classdesc\n\t *\n\t * Represents the GUI of the share dialogue\n\t *\n\t */\n\tvar ShareDialogView = OC.Backbone.View.extend({\n\t\t/** @type {Object} **/\n\t\t_templates: {},\n\n\t\t/** @type {boolean} **/\n\t\t_showLink: true,\n\n\t\t_lookup: false,\n\n\t\t_lookupAllowed: false,\n\n\t\t/** @type {string} **/\n\t\ttagName: 'div',\n\n\t\t/** @type {OC.Share.ShareConfigModel} **/\n\t\tconfigModel: undefined,\n\n\t\t/** @type {object} **/\n\t\tresharerInfoView: undefined,\n\n\t\t/** @type {object} **/\n\t\tlinkShareView: undefined,\n\n\t\t/** @type {object} **/\n\t\tshareeListView: undefined,\n\n\t\t/** @type {object} **/\n\t\t_lastSuggestions: undefined,\n\n\t\t/** @type {object} **/\n\t\t_lastRecommendations: undefined,\n\n\t\t/** @type {int} **/\n\t\t_pendingOperationsCount: 0,\n\n\t\tevents: {\n\t\t\t'focus .shareWithField': 'onShareWithFieldFocus',\n\t\t\t'input .shareWithField': 'onShareWithFieldChanged',\n\t\t\t'click .shareWithConfirm': '_confirmShare'\n\t\t},\n\n\t\tinitialize: function(options) {\n\t\t\tvar view = this;\n\n\t\t\tthis.model.on('fetchError', function() {\n\t\t\t\tOC.Notification.showTemporary(t('core', 'Share details could not be loaded for this item.'));\n\t\t\t});\n\n\t\t\tif(!_.isUndefined(options.configModel)) {\n\t\t\t\tthis.configModel = options.configModel;\n\t\t\t} else {\n\t\t\t\tthrow 'missing OC.Share.ShareConfigModel';\n\t\t\t}\n\n\t\t\tthis.configModel.on('change:isRemoteShareAllowed', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\t\t\tthis.configModel.on('change:isRemoteGroupShareAllowed', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\t\t\tthis.model.on('change:permissions', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tthis.model.on('request', this._onRequest, this);\n\t\t\tthis.model.on('sync', this._onEndRequest, this);\n\n\t\t\tvar subViewOptions = {\n\t\t\t\tmodel: this.model,\n\t\t\t\tconfigModel: this.configModel\n\t\t\t};\n\n\t\t\tvar subViews = {\n\t\t\t\tresharerInfoView: 'ShareDialogResharerInfoView',\n\t\t\t\tlinkShareView: 'ShareDialogLinkShareView',\n\t\t\t\tshareeListView: 'ShareDialogShareeListView'\n\t\t\t};\n\n\t\t\tfor(var name in subViews) {\n\t\t\t\tvar className = subViews[name];\n\t\t\t\tthis[name] = _.isUndefined(options[name])\n\t\t\t\t\t? new OC.Share[className](subViewOptions)\n\t\t\t\t\t: options[name];\n\t\t\t}\n\n\t\t\t_.bindAll(this,\n\t\t\t\t'autocompleteHandler',\n\t\t\t\t'_onSelectRecipient',\n\t\t\t\t'onShareWithFieldChanged',\n\t\t\t\t'onShareWithFieldFocus'\n\t\t\t);\n\n\t\t\tOC.Plugins.attach('OC.Share.ShareDialogView', this);\n\t\t},\n\n\t\tonShareWithFieldChanged: function() {\n\t\t\tvar $el = this.$el.find('.shareWithField');\n\t\t\tif ($el.val().length < 2) {\n\t\t\t\t$el.removeClass('error').tooltip('hide');\n\t\t\t}\n\t\t},\n\n\t\t/* trigger search after the field was re-selected */\n\t\tonShareWithFieldFocus: function() {\n\t\t\tvar $shareWithField = this.$el.find('.shareWithField');\n\t\t\t$shareWithField.autocomplete(\"search\", $shareWithField.val());\n\t\t},\n\n\t\t_getSuggestions: function(searchTerm, perPage, model, lookup) {\n\t\t\tif (this._lastSuggestions &&\n\t\t\t\tthis._lastSuggestions.searchTerm === searchTerm &&\n\t\t\t\tthis._lastSuggestions.lookup === lookup &&\n\t\t\t\tthis._lastSuggestions.perPage === perPage &&\n\t\t\t\tthis._lastSuggestions.model === model) {\n\t\t\t\treturn this._lastSuggestions.promise;\n\t\t\t}\n\n\t\t\tvar deferred = $.Deferred();\n\t\t\tvar view = this;\n\n\t\t\t$.get(\n\t\t\t\tOC.linkToOCS('apps/files_sharing/api/v1') + 'sharees',\n\t\t\t\t{\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\tsearch: searchTerm,\n\t\t\t\t\tlookup: lookup,\n\t\t\t\t\tperPage: perPage,\n\t\t\t\t\titemType: model.get('itemType')\n\t\t\t\t},\n\t\t\t\tfunction (result) {\n\t\t\t\t\tif (result.ocs.meta.statuscode === 100) {\n\t\t\t\t\t\tvar filter = function(users, groups, remotes, remote_groups, emails, circles, rooms) {\n\t\t\t\t\t\t\tif (typeof(emails) === 'undefined') {\n\t\t\t\t\t\t\t\temails = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof(circles) === 'undefined') {\n\t\t\t\t\t\t\t\tcircles = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof(rooms) === 'undefined') {\n\t\t\t\t\t\t\t\trooms = [];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar usersLength;\n\t\t\t\t\t\t\tvar groupsLength;\n\t\t\t\t\t\t\tvar remotesLength;\n\t\t\t\t\t\t\tvar remoteGroupsLength;\n\t\t\t\t\t\t\tvar emailsLength;\n\t\t\t\t\t\t\tvar circlesLength;\n\t\t\t\t\t\t\tvar roomsLength;\n\n\t\t\t\t\t\t\tvar i, j;\n\n\t\t\t\t\t\t\t//Filter out the current user\n\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\tfor (i = 0; i < usersLength; i++) {\n\t\t\t\t\t\t\t\tif (users[i].value.shareWith === OC.currentUser) {\n\t\t\t\t\t\t\t\t\tusers.splice(i, 1);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Filter out the owner of the share\n\t\t\t\t\t\t\tif (model.hasReshare()) {\n\t\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\t\tfor (i = 0 ; i < usersLength; i++) {\n\t\t\t\t\t\t\t\t\tif (users[i].value.shareWith === model.getReshareOwner()) {\n\t\t\t\t\t\t\t\t\t\tusers.splice(i, 1);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar shares = model.get('shares');\n\t\t\t\t\t\t\tvar sharesLength = shares.length;\n\n\t\t\t\t\t\t\t// Now filter out all sharees that are already shared with\n\t\t\t\t\t\t\tfor (i = 0; i < sharesLength; i++) {\n\t\t\t\t\t\t\t\tvar share = shares[i];\n\n\t\t\t\t\t\t\t\tif (share.share_type === OC.Share.SHARE_TYPE_USER) {\n\t\t\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < usersLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (users[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tusers.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\t\t\t\t\t\tgroupsLength = groups.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < groupsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (groups[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tgroups.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\t\t\t\t\t\tremotesLength = remotes.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < remotesLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (remotes[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tremotes.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\t\t\t\t\t\tremoteGroupsLength = remote_groups.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < remoteGroupsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (remote_groups[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tremote_groups.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\t\t\t\temailsLength = emails.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < emailsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (emails[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\temails.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\t\t\t\t\tcirclesLength = circles.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < circlesLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (circles[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tcircles.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\t\t\t\t\t\troomsLength = rooms.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < roomsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (rooms[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\trooms.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tfilter(\n\t\t\t\t\t\t\tresult.ocs.data.exact.users,\n\t\t\t\t\t\t\tresult.ocs.data.exact.groups,\n\t\t\t\t\t\t\tresult.ocs.data.exact.remotes,\n\t\t\t\t\t\t\tresult.ocs.data.exact.remote_groups,\n\t\t\t\t\t\t\tresult.ocs.data.exact.emails,\n\t\t\t\t\t\t\tresult.ocs.data.exact.circles,\n\t\t\t\t\t\t\tresult.ocs.data.exact.rooms\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar exactUsers   = result.ocs.data.exact.users;\n\t\t\t\t\t\tvar exactGroups  = result.ocs.data.exact.groups;\n\t\t\t\t\t\tvar exactRemotes = result.ocs.data.exact.remotes;\n\t\t\t\t\t\tvar exactRemoteGroups = result.ocs.data.exact.remote_groups;\n\t\t\t\t\t\tvar exactEmails = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.emails) !== 'undefined') {\n\t\t\t\t\t\t\texactEmails = result.ocs.data.exact.emails;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar exactCircles = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.circles) !== 'undefined') {\n\t\t\t\t\t\t\texactCircles = result.ocs.data.exact.circles;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar exactRooms = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.rooms) !== 'undefined') {\n\t\t\t\t\t\t\texactRooms = result.ocs.data.exact.rooms;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar exactMatches = exactUsers.concat(exactGroups).concat(exactRemotes).concat(exactRemoteGroups).concat(exactEmails).concat(exactCircles).concat(exactRooms);\n\n\t\t\t\t\t\tfilter(\n\t\t\t\t\t\t\tresult.ocs.data.users,\n\t\t\t\t\t\t\tresult.ocs.data.groups,\n\t\t\t\t\t\t\tresult.ocs.data.remotes,\n\t\t\t\t\t\t\tresult.ocs.data.remote_groups,\n\t\t\t\t\t\t\tresult.ocs.data.emails,\n\t\t\t\t\t\t\tresult.ocs.data.circles,\n\t\t\t\t\t\t\tresult.ocs.data.rooms\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar users   = result.ocs.data.users;\n\t\t\t\t\t\tvar groups  = result.ocs.data.groups;\n\t\t\t\t\t\tvar remotes = result.ocs.data.remotes;\n\t\t\t\t\t\tvar remoteGroups = result.ocs.data.remote_groups;\n\t\t\t\t\t\tvar lookup = result.ocs.data.lookup;\n\t\t\t\t\t\tvar lookupEnabled = result.ocs.data.lookupEnabled;\n\t\t\t\t\t\tvar emails = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.emails) !== 'undefined') {\n\t\t\t\t\t\t\temails = result.ocs.data.emails;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar circles = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.circles) !== 'undefined') {\n\t\t\t\t\t\t\tcircles = result.ocs.data.circles;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar rooms = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.rooms) !== 'undefined') {\n\t\t\t\t\t\t\trooms = result.ocs.data.rooms;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar suggestions = exactMatches.concat(users).concat(groups).concat(remotes).concat(remoteGroups).concat(emails).concat(circles).concat(rooms).concat(lookup);\n\n\t\t\t\t\t\tfunction dynamicSort(property) {\n\t\t\t\t\t\t\treturn function (a,b) {\n\t\t\t\t\t\t\t\tvar aProperty = '';\n\t\t\t\t\t\t\t\tvar bProperty = '';\n\t\t\t\t\t\t\t\tif (typeof a[property] !== 'undefined') {\n\t\t\t\t\t\t\t\t\taProperty = a[property];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (typeof b[property] !== 'undefined') {\n\t\t\t\t\t\t\t\t\tbProperty = b[property];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn (aProperty < bProperty) ? -1 : (aProperty > bProperty) ? 1 : 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Sort share entries by uuid to properly group them\n\t\t\t\t\t\t */\n\t\t\t\t\t\tvar grouped = suggestions.sort(dynamicSort('uuid'));\n\n\t\t\t\t\t\tvar previousUuid = null;\n\t\t\t\t\t\tvar groupedLength = grouped.length;\n\t\t\t\t\t\tvar result = [];\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * build the result array that only contains all contact entries from\n\t\t\t\t\t\t * merged contacts, if the search term matches its contact name\n\t\t\t\t\t\t */\n\t\t\t\t\t\tfor (var i = 0; i < groupedLength; i++) {\n\t\t\t\t\t\t\tif (typeof grouped[i].uuid !== 'undefined' && grouped[i].uuid === previousUuid) {\n\t\t\t\t\t\t\t\tgrouped[i].merged = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (searchTerm === grouped[i].name || typeof grouped[i].merged === 'undefined') {\n\t\t\t\t\t\t\t\tresult.push(grouped[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpreviousUuid = grouped[i].uuid;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar moreResultsAvailable =\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\toc_config['sharing.maxAutocompleteResults'] > 0\n\t\t\t\t\t\t\t\t&& Math.min(perPage, oc_config['sharing.maxAutocompleteResults'])\n\t\t\t\t\t\t\t\t\t<= Math.max(\n\t\t\t\t\t\t\t\t\t\tusers.length + exactUsers.length,\n\t\t\t\t\t\t\t\t\t\tgroups.length + exactGroups.length,\n\t\t\t\t\t\t\t\t\t\tremoteGroups.length + exactRemoteGroups.length,\n\t\t\t\t\t\t\t\t\t\tremotes.length + exactRemotes.length,\n\t\t\t\t\t\t\t\t\t\temails.length + exactEmails.length,\n\t\t\t\t\t\t\t\t\t\tcircles.length + exactCircles.length,\n\t\t\t\t\t\t\t\t\t\trooms.length + exactRooms.length,\n\t\t\t\t\t\t\t\t\t\tlookup.length\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!view._lookup && lookupEnabled) {\n\t\t\t\t\t\t\tresult.push(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: t('core', 'Search globally'),\n\t\t\t\t\t\t\t\t\tvalue: {},\n\t\t\t\t\t\t\t\t\tlookup: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeferred.resolve(result, exactMatches, moreResultsAvailable, lookupEnabled);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdeferred.reject(result.ocs.meta.message);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t).fail(function() {\n\t\t\t\tdeferred.reject();\n\t\t\t});\n\n\t\t\tthis._lastSuggestions = {\n\t\t\t\tsearchTerm: searchTerm,\n\t\t\t\tlookup: lookup,\n\t\t\t\tperPage: perPage,\n\t\t\t\tmodel: model,\n\t\t\t\tpromise: deferred.promise()\n\t\t\t};\n\n\t\t\treturn this._lastSuggestions.promise;\n\t\t},\n\n\t\t_getRecommendations: function(model) {\n\t\t\tif (this._lastRecommendations &&\n\t\t\t\tthis._lastRecommendations.model === model) {\n\t\t\t\treturn this._lastRecommendations.promise;\n\t\t\t}\n\n\t\t\tvar deferred = $.Deferred();\n\n\t\t\t$.get(\n\t\t\t\tOC.linkToOCS('apps/files_sharing/api/v1') + 'sharees_recommended',\n\t\t\t\t{\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\titemType: model.get('itemType')\n\t\t\t\t},\n\t\t\t\tfunction (result) {\n\t\t\t\t\tif (result.ocs.meta.statuscode === 100) {\n\t\t\t\t\t\tvar filter = function(users, groups, remotes, remote_groups, emails, circles, rooms) {\n\t\t\t\t\t\t\tif (typeof(emails) === 'undefined') {\n\t\t\t\t\t\t\t\temails = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof(circles) === 'undefined') {\n\t\t\t\t\t\t\t\tcircles = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof(rooms) === 'undefined') {\n\t\t\t\t\t\t\t\trooms = [];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar usersLength;\n\t\t\t\t\t\t\tvar groupsLength;\n\t\t\t\t\t\t\tvar remotesLength;\n\t\t\t\t\t\t\tvar remoteGroupsLength;\n\t\t\t\t\t\t\tvar emailsLength;\n\t\t\t\t\t\t\tvar circlesLength;\n\t\t\t\t\t\t\tvar roomsLength;\n\n\t\t\t\t\t\t\tvar i, j;\n\n\t\t\t\t\t\t\t//Filter out the current user\n\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\tfor (i = 0; i < usersLength; i++) {\n\t\t\t\t\t\t\t\tif (users[i].value.shareWith === OC.currentUser) {\n\t\t\t\t\t\t\t\t\tusers.splice(i, 1);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Filter out the owner of the share\n\t\t\t\t\t\t\tif (model.hasReshare()) {\n\t\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\t\tfor (i = 0 ; i < usersLength; i++) {\n\t\t\t\t\t\t\t\t\tif (users[i].value.shareWith === model.getReshareOwner()) {\n\t\t\t\t\t\t\t\t\t\tusers.splice(i, 1);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar shares = model.get('shares');\n\t\t\t\t\t\t\tvar sharesLength = shares.length;\n\n\t\t\t\t\t\t\t// Now filter out all sharees that are already shared with\n\t\t\t\t\t\t\tfor (i = 0; i < sharesLength; i++) {\n\t\t\t\t\t\t\t\tvar share = shares[i];\n\n\t\t\t\t\t\t\t\tif (share.share_type === OC.Share.SHARE_TYPE_USER) {\n\t\t\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < usersLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (users[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tusers.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\t\t\t\t\t\tgroupsLength = groups.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < groupsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (groups[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tgroups.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\t\t\t\t\t\tremotesLength = remotes.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < remotesLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (remotes[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tremotes.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\t\t\t\t\t\tremoteGroupsLength = remote_groups.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < remoteGroupsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (remote_groups[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tremote_groups.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\t\t\t\temailsLength = emails.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < emailsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (emails[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\temails.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\t\t\t\t\tcirclesLength = circles.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < circlesLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (circles[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tcircles.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\t\t\t\t\t\troomsLength = rooms.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < roomsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (rooms[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\trooms.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tfilter(\n\t\t\t\t\t\t\tresult.ocs.data.exact.users,\n\t\t\t\t\t\t\tresult.ocs.data.exact.groups,\n\t\t\t\t\t\t\tresult.ocs.data.exact.remotes,\n\t\t\t\t\t\t\tresult.ocs.data.exact.remote_groups,\n\t\t\t\t\t\t\tresult.ocs.data.exact.emails,\n\t\t\t\t\t\t\tresult.ocs.data.exact.circles,\n\t\t\t\t\t\t\tresult.ocs.data.exact.rooms\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar exactUsers   = result.ocs.data.exact.users;\n\t\t\t\t\t\tvar exactGroups  = result.ocs.data.exact.groups;\n\t\t\t\t\t\tvar exactRemotes = result.ocs.data.exact.remotes || [];\n\t\t\t\t\t\tvar exactRemoteGroups = result.ocs.data.exact.remote_groups || [];\n\t\t\t\t\t\tvar exactEmails = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.emails) !== 'undefined') {\n\t\t\t\t\t\t\texactEmails = result.ocs.data.exact.emails;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar exactCircles = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.circles) !== 'undefined') {\n\t\t\t\t\t\t\texactCircles = result.ocs.data.exact.circles;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar exactRooms = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.rooms) !== 'undefined') {\n\t\t\t\t\t\t\texactRooms = result.ocs.data.exact.rooms;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar exactMatches = exactUsers.concat(exactGroups).concat(exactRemotes).concat(exactRemoteGroups).concat(exactEmails).concat(exactCircles).concat(exactRooms);\n\n\t\t\t\t\t\tfilter(\n\t\t\t\t\t\t\tresult.ocs.data.users,\n\t\t\t\t\t\t\tresult.ocs.data.groups,\n\t\t\t\t\t\t\tresult.ocs.data.remotes,\n\t\t\t\t\t\t\tresult.ocs.data.remote_groups,\n\t\t\t\t\t\t\tresult.ocs.data.emails,\n\t\t\t\t\t\t\tresult.ocs.data.circles,\n\t\t\t\t\t\t\tresult.ocs.data.rooms\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar users   = result.ocs.data.users;\n\t\t\t\t\t\tvar groups  = result.ocs.data.groups;\n\t\t\t\t\t\tvar remotes = result.ocs.data.remotes || [];\n\t\t\t\t\t\tvar remoteGroups = result.ocs.data.remote_groups || [];\n\t\t\t\t\t\tvar lookup = result.ocs.data.lookup || [];\n\t\t\t\t\t\tvar emails = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.emails) !== 'undefined') {\n\t\t\t\t\t\t\temails = result.ocs.data.emails;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar circles = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.circles) !== 'undefined') {\n\t\t\t\t\t\t\tcircles = result.ocs.data.circles;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar rooms = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.rooms) !== 'undefined') {\n\t\t\t\t\t\t\trooms = result.ocs.data.rooms;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar suggestions = exactMatches.concat(users).concat(groups).concat(remotes).concat(remoteGroups).concat(emails).concat(circles).concat(rooms).concat(lookup);\n\n\t\t\t\t\t\tfunction dynamicSort(property) {\n\t\t\t\t\t\t\treturn function (a,b) {\n\t\t\t\t\t\t\t\tvar aProperty = '';\n\t\t\t\t\t\t\t\tvar bProperty = '';\n\t\t\t\t\t\t\t\tif (typeof a[property] !== 'undefined') {\n\t\t\t\t\t\t\t\t\taProperty = a[property];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (typeof b[property] !== 'undefined') {\n\t\t\t\t\t\t\t\t\tbProperty = b[property];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn (aProperty < bProperty) ? -1 : (aProperty > bProperty) ? 1 : 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Sort share entries by uuid to properly group them\n\t\t\t\t\t\t */\n\t\t\t\t\t\tvar grouped = suggestions.sort(dynamicSort('uuid'));\n\n\t\t\t\t\t\tvar previousUuid = null;\n\t\t\t\t\t\tvar groupedLength = grouped.length;\n\t\t\t\t\t\tvar result = [];\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * build the result array that only contains all contact entries from\n\t\t\t\t\t\t * merged contacts, if the search term matches its contact name\n\t\t\t\t\t\t */\n\t\t\t\t\t\tfor (var i = 0; i < groupedLength; i++) {\n\t\t\t\t\t\t\tif (typeof grouped[i].uuid !== 'undefined' && grouped[i].uuid === previousUuid) {\n\t\t\t\t\t\t\t\tgrouped[i].merged = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof grouped[i].merged === 'undefined') {\n\t\t\t\t\t\t\t\tresult.push(grouped[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpreviousUuid = grouped[i].uuid;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar moreResultsAvailable =\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\toc_config['sharing.maxAutocompleteResults'] > 0\n\t\t\t\t\t\t\t\t&& Math.min(perPage, oc_config['sharing.maxAutocompleteResults'])\n\t\t\t\t\t\t\t\t<= Math.max(\n\t\t\t\t\t\t\t\t\tusers.length + exactUsers.length,\n\t\t\t\t\t\t\t\t\tgroups.length + exactGroups.length,\n\t\t\t\t\t\t\t\t\tremoteGroups.length + exactRemoteGroups.length,\n\t\t\t\t\t\t\t\t\tremotes.length + exactRemotes.length,\n\t\t\t\t\t\t\t\t\temails.length + exactEmails.length,\n\t\t\t\t\t\t\t\t\tcircles.length + exactCircles.length,\n\t\t\t\t\t\t\t\t\trooms.length + exactRooms.length,\n\t\t\t\t\t\t\t\t\tlookup.length\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\tdeferred.resolve(result, exactMatches, moreResultsAvailable);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdeferred.reject(result.ocs.meta.message);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t).fail(function() {\n\t\t\t\tdeferred.reject();\n\t\t\t});\n\n\t\t\tthis._lastRecommendations = {\n\t\t\t\tmodel: model,\n\t\t\t\tpromise: deferred.promise()\n\t\t\t};\n\n\t\t\treturn this._lastRecommendations.promise;\n\t\t},\n\n\t\trecommendationHandler: function (response) {\n\t\t\tvar view = this;\n\t\t\tvar $shareWithField = $('.shareWithField');\n\t\t\tthis._getRecommendations(\n\t\t\t\tview.model\n\t\t\t).done(function(suggestions) {\n\t\t\t\tconsole.info('recommendations', suggestions);\n\t\t\t\tif (suggestions.length > 0) {\n\t\t\t\t\t$shareWithField\n\t\t\t\t\t\t.autocomplete(\"option\", \"autoFocus\", true);\n\n\t\t\t\t\tresponse(suggestions);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.info('no sharing recommendations found');\n\t\t\t\t\tresponse();\n\t\t\t\t}\n\t\t\t}).fail(function(message) {\n\t\t\t\tconsole.error('could not load recommendations', message)\n\t\t\t});\n\t\t},\n\n\t\tautocompleteHandler: function (search, response) {\n\t\t\t// If nothing is entered we show recommendations instead of search\n\t\t\t// results\n\t\t\tif (search.term.length === 0) {\n\t\t\t\tconsole.info(search.term, 'empty search term -> using recommendations');\n\t\t\t\tthis.recommendationHandler(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar $shareWithField = $('.shareWithField'),\n\t\t\t\tview = this,\n\t\t\t\t$loading = this.$el.find('.shareWithLoading'),\n\t\t\t\t$confirm = this.$el.find('.shareWithConfirm');\n\n\t\t\tvar count = oc_config['sharing.minSearchStringLength'];\n\t\t\tif (search.term.trim().length < count) {\n\t\t\t\tvar title = n('core',\n\t\t\t\t\t'At least {count} character is needed for autocompletion',\n\t\t\t\t\t'At least {count} characters are needed for autocompletion',\n\t\t\t\t\tcount,\n\t\t\t\t\t{ count: count }\n\t\t\t\t);\n\t\t\t\t$shareWithField.addClass('error')\n\t\t\t\t\t.attr('data-original-title', title)\n\t\t\t\t\t.tooltip('hide')\n\t\t\t\t\t.tooltip({\n\t\t\t\t\t\tplacement: 'bottom',\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t})\n\t\t\t\t\t.tooltip('fixTitle')\n\t\t\t\t\t.tooltip('show');\n\t\t\t\tresponse();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$loading.removeClass('hidden');\n\t\t\t$loading.addClass('inlineblock');\n\t\t\t$confirm.addClass('hidden');\n\t\t\tthis._pendingOperationsCount++;\n\n\t\t\t$shareWithField.removeClass('error')\n\t\t\t\t.tooltip('hide');\n\n\t\t\tvar perPage = parseInt(oc_config['sharing.maxAutocompleteResults'], 10) || 200;\n\t\t\tthis._getSuggestions(\n\t\t\t\tsearch.term.trim(),\n\t\t\t\tperPage,\n\t\t\t\tview.model,\n\t\t\t\tview._lookup\n\t\t\t).done(function(suggestions, exactMatches, moreResultsAvailable) {\n\t\t\t\tview._pendingOperationsCount--;\n\t\t\t\tif (view._pendingOperationsCount === 0) {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$loading.removeClass('inlineblock');\n\t\t\t\t\t$confirm.removeClass('hidden');\n\t\t\t\t}\n\n\t\t\t\tif (suggestions.length > 0) {\n\t\t\t\t\t$shareWithField\n\t\t\t\t\t\t.autocomplete(\"option\", \"autoFocus\", true);\n\n\t\t\t\t\tresponse(suggestions);\n\n\t\t\t\t\t// show a notice that the list is truncated\n\t\t\t\t\t// this is the case if one of the search results is at least as long as the max result config option\n\t\t\t\t\tif(moreResultsAvailable) {\n\t\t\t\t\t\tvar message = t('core', 'This list is maybe truncated - please refine your search term to see more results.');\n\t\t\t\t\t\t$('.ui-autocomplete').append('<li class=\"autocomplete-note\">' + message + '</li>');\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tvar title = t('core', 'No users or groups found for {search}', {search: $shareWithField.val()});\n\t\t\t\t\tif (!view.configModel.get('allowGroupSharing')) {\n\t\t\t\t\t\ttitle = t('core', 'No users found for {search}', {search: $('.shareWithField').val()});\n\t\t\t\t\t}\n\t\t\t\t\t$shareWithField.addClass('error')\n\t\t\t\t\t\t.attr('data-original-title', title)\n\t\t\t\t\t\t.tooltip('hide')\n\t\t\t\t\t\t.tooltip({\n\t\t\t\t\t\t\tplacement: 'top',\n\t\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.tooltip('fixTitle')\n\t\t\t\t\t\t.tooltip('show');\n\t\t\t\t\tresponse();\n\t\t\t\t}\n\t\t\t}).fail(function(message) {\n\t\t\t\tview._pendingOperationsCount--;\n\t\t\t\tif (view._pendingOperationsCount === 0) {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$loading.removeClass('inlineblock');\n\t\t\t\t\t$confirm.removeClass('hidden');\n\t\t\t\t}\n\n\t\t\t\tif (message) {\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'An error occurred (\"{message}\"). Please try again', { message: message }));\n\t\t\t\t} else {\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'An error occurred. Please try again'));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tautocompleteRenderItem: function(ul, item) {\n\t\t\tvar icon = 'icon-user';\n\t\t\tvar text = escapeHTML(item.label);\n\t\t\tvar description = '';\n\t\t\tvar type = '';\n\t\t\tvar getTranslatedType = function(type) {\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase 'HOME':\n\t\t\t\t\t\treturn t('core', 'Home');\n\t\t\t\t\tcase 'WORK':\n\t\t\t\t\t\treturn t('core', 'Work');\n\t\t\t\t\tcase 'OTHER':\n\t\t\t\t\t\treturn t('core', 'Other');\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn '' + type;\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (typeof item.type !== 'undefined' && item.type !== null) {\n\t\t\t\ttype = getTranslatedType(item.type) + ' ';\n\t\t\t}\n\n\t\t\tif (typeof item.name !== 'undefined') {\n\t\t\t\ttext = escapeHTML(item.name);\n\t\t\t}\n\t\t\tif (item.value.shareType === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\ticon = 'icon-contacts-dark';\n\t\t\t} else if (item.value.shareType === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\ticon = 'icon-shared';\n\t\t\t\tdescription += item.value.shareWith;\n\t\t\t} else if (item.value.shareType === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttext = t('core', '{sharee} (remote group)', { sharee: text }, undefined, { escape: false });\n\t\t\t\ticon = 'icon-shared';\n\t\t\t\tdescription += item.value.shareWith;\n\t\t\t} else if (item.value.shareType === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\ticon = 'icon-mail';\n\t\t\t\tdescription += item.value.shareWith;\n\t\t\t} else if (item.value.shareType === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\ttext = t('core', '{sharee} ({type}, {owner})', {sharee: text, type: item.value.circleInfo, owner: item.value.circleOwner}, undefined, {escape: false});\n\t\t\t\ticon = 'icon-circle';\n\t\t\t} else if (item.value.shareType === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\ticon = 'icon-talk';\n\t\t\t}\n\n\t\t\tvar insert = $(\"<div class='share-autocomplete-item'/>\");\n\t\t\tif (item.merged) {\n\t\t\t\tinsert.addClass('merged');\n\t\t\t\ttext = item.value.shareWith;\n\t\t\t\tdescription = type;\n\t\t\t} else if (item.lookup) {\n\t\t\t\ttext = item.label;\n\t\t\t\ticon = false;\n\t\t\t\tinsert.append('<span class=\"icon icon-search search-globally\"></span>');\n\t\t\t} else {\n\t\t\t\tvar avatar = $(\"<div class='avatardiv'></div>\").appendTo(insert);\n\t\t\t\tif (item.value.shareType === OC.Share.SHARE_TYPE_USER || item.value.shareType === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\tavatar.avatar(item.value.shareWith, 32, undefined, undefined, undefined, item.label);\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof item.uuid === 'undefined') {\n\t\t\t\t\t\titem.uuid = text;\n\t\t\t\t\t}\n\t\t\t\t\tavatar.imageplaceholder(item.uuid, text, 32);\n\t\t\t\t}\n\t\t\t\tdescription = type + description;\n\t\t\t}\n\t\t\tif (description !== '') {\n\t\t\t\tinsert.addClass('with-description');\n\t\t\t}\n\n\t\t\t$(\"<div class='autocomplete-item-text'></div>\")\n\t\t\t\t.html(\n\t\t\t\t\ttext.replace(\n\t\t\t\t\tnew RegExp(this.term, \"gi\"),\n\t\t\t\t\t\"<span class='ui-state-highlight'>$&</span>\")\n\t\t\t\t\t+ '<span class=\"autocomplete-item-details\">' + description + '</span>'\n\t\t\t\t)\n\t\t\t\t.appendTo(insert);\n\t\t\tinsert.attr('title', item.value.shareWith);\n\t\t\tif (icon) {\n\t\t\t\tinsert.append('<span class=\"icon ' + icon + '\" title=\"' + text + '\"></span>');\n\t\t\t}\n\t\t\tinsert = $(\"<a>\")\n\t\t\t\t.append(insert);\n\t\t\treturn $(\"<li>\")\n\t\t\t\t.addClass((item.value.shareType === OC.Share.SHARE_TYPE_GROUP) ? 'group' : 'user')\n\t\t\t\t.append(insert)\n\t\t\t\t.appendTo(ul);\n\t\t},\n\n\t\t_onSelectRecipient: function(e, s) {\n\t\t\tvar self = this;\n\n\t\t\tif (e.keyCode == 9) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (typeof s.item.name !== 'undefined') {\n\t\t\t\t\te.target.value = s.item.name;\n\t\t\t\t} else {\n\t\t\t\t\te.target.value = s.item.label;\n\t\t\t\t}\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$(e.target).attr('disabled', false)\n\t\t\t\t\t\t.autocomplete('search', $(e.target).val());\n\t\t\t\t}, 0);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (s.item.lookup) {\n\t\t\t\t// Retrigger search but with global lookup this time\n\t\t\t\tthis._lookup = true;\n\t\t\t\tvar $shareWithField = this.$el.find('.shareWithField');\n\t\t\t\tvar val = $shareWithField.val();\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tconsole.debug('searching again, but globally. search term: ' + val);\n\t\t\t\t\t$shareWithField.autocomplete(\"search\", val);\n\t\t\t\t}, 0);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\te.preventDefault();\n\t\t\t// Ensure that the keydown handler for the input field is not\n\t\t\t// called; otherwise it would try to add the recipient again, which\n\t\t\t// would fail.\n\t\t\te.stopImmediatePropagation();\n\t\t\t$(e.target).attr('disabled', true)\n\t\t\t\t.val(s.item.label);\n\n\t\t\tvar $loading = this.$el.find('.shareWithLoading');\n\t\t\tvar $confirm = this.$el.find('.shareWithConfirm');\n\n\t\t\t$loading.removeClass('hidden');\n\t\t\t$loading.addClass('inlineblock');\n\t\t\t$confirm.addClass('hidden');\n\t\t\tthis._pendingOperationsCount++;\n\n\t\t\tthis.model.addShare(s.item.value, {success: function() {\n\t\t\t\t// Adding a share changes the suggestions.\n\t\t\t\tself._lastSuggestions = undefined;\n\n\t\t\t\t$(e.target).val('')\n\t\t\t\t\t.attr('disabled', false);\n\n\t\t\t\tself._pendingOperationsCount--;\n\t\t\t\tif (self._pendingOperationsCount === 0) {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$loading.removeClass('inlineblock');\n\t\t\t\t\t$confirm.removeClass('hidden');\n\t\t\t\t}\n\t\t\t}, error: function(obj, msg) {\n\t\t\t\tOC.Notification.showTemporary(msg);\n\t\t\t\t$(e.target).attr('disabled', false)\n\t\t\t\t\t.autocomplete('search', $(e.target).val());\n\n\t\t\t\tself._pendingOperationsCount--;\n\t\t\t\tif (self._pendingOperationsCount === 0) {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$loading.removeClass('inlineblock');\n\t\t\t\t\t$confirm.removeClass('hidden');\n\t\t\t\t}\n\t\t\t}});\n\t\t},\n\n\t\t_confirmShare: function() {\n\t\t\tvar self = this;\n\t\t\tvar $shareWithField = $('.shareWithField');\n\t\t\tvar $loading = this.$el.find('.shareWithLoading');\n\t\t\tvar $confirm = this.$el.find('.shareWithConfirm');\n\n\t\t\t$loading.removeClass('hidden');\n\t\t\t$loading.addClass('inlineblock');\n\t\t\t$confirm.addClass('hidden');\n\t\t\tthis._pendingOperationsCount++;\n\n\t\t\t$shareWithField.prop('disabled', true);\n\n\t\t\t// Disabling the autocompletion does not clear its search timeout;\n\t\t\t// removing the focus from the input field does, but only if the\n\t\t\t// autocompletion is not disabled when the field loses the focus.\n\t\t\t// Thus, the field has to be disabled before disabling the\n\t\t\t// autocompletion to prevent an old pending search result from\n\t\t\t// appearing once the field is enabled again.\n\t\t\t$shareWithField.autocomplete('close');\n\t\t\t$shareWithField.autocomplete('disable');\n\n\t\t\tvar restoreUI = function() {\n\t\t\t\tself._pendingOperationsCount--;\n\t\t\t\tif (self._pendingOperationsCount === 0) {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$loading.removeClass('inlineblock');\n\t\t\t\t\t$confirm.removeClass('hidden');\n\t\t\t\t}\n\n\t\t\t\t$shareWithField.prop('disabled', false);\n\t\t\t\t$shareWithField.focus();\n\t\t\t};\n\n\t\t\tvar perPage = parseInt(oc_config['sharing.maxAutocompleteResults'], 10) || 200;\n\t\t\tthis._getSuggestions(\n\t\t\t\t$shareWithField.val(),\n\t\t\t\tperPage,\n\t\t\t\tthis.model,\n\t\t\t\tthis._lookup\n\t\t\t).done(function(suggestions, exactMatches) {\n\t\t\t\tif (suggestions.length === 0) {\n\t\t\t\t\trestoreUI();\n\n\t\t\t\t\t$shareWithField.autocomplete('enable');\n\n\t\t\t\t\t// There is no need to show an error message here; it will\n\t\t\t\t\t// be automatically shown when the autocomplete is activated\n\t\t\t\t\t// again (due to the focus on the field) and it finds no\n\t\t\t\t\t// matches.\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (exactMatches.length !== 1) {\n\t\t\t\t\trestoreUI();\n\n\t\t\t\t\t$shareWithField.autocomplete('enable');\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar actionSuccess = function() {\n\t\t\t\t\t// Adding a share changes the suggestions.\n\t\t\t\t\tself._lastSuggestions = undefined;\n\n\t\t\t\t\t$shareWithField.val('');\n\n\t\t\t\t\trestoreUI();\n\n\t\t\t\t\t$shareWithField.autocomplete('enable');\n\t\t\t\t};\n\n\t\t\t\tvar actionError = function(obj, msg) {\n\t\t\t\t\trestoreUI();\n\n\t\t\t\t\t$shareWithField.autocomplete('enable');\n\n\t\t\t\t\tOC.Notification.showTemporary(msg);\n\t\t\t\t};\n\n\t\t\t\tself.model.addShare(exactMatches[0].value, {\n\t\t\t\t\tsuccess: actionSuccess,\n\t\t\t\t\terror: actionError\n\t\t\t\t});\n\t\t\t}).fail(function(message) {\n\t\t\t\trestoreUI();\n\n\t\t\t\t$shareWithField.autocomplete('enable');\n\n\t\t\t\t// There is no need to show an error message here; it will be\n\t\t\t\t// automatically shown when the autocomplete is activated again\n\t\t\t\t// (due to the focus on the field) and getting the suggestions\n\t\t\t\t// fail.\n\t\t\t});\n\t\t},\n\n\t\t_toggleLoading: function(state) {\n\t\t\tthis._loading = state;\n\t\t\tthis.$el.find('.subView').toggleClass('hidden', state);\n\t\t\tthis.$el.find('.loading').toggleClass('hidden', !state);\n\t\t},\n\n\t\t_onRequest: function() {\n\t\t\t// only show the loading spinner for the first request (for now)\n\t\t\tif (!this._loadingOnce) {\n\t\t\t\tthis._toggleLoading(true);\n\t\t\t}\n\t\t},\n\n\t\t_onEndRequest: function() {\n\t\t\tvar self = this;\n\t\t\tthis._toggleLoading(false);\n\t\t\tif (!this._loadingOnce) {\n\t\t\t\tthis._loadingOnce = true;\n\t\t\t\t// the first time, focus on the share field after the spinner disappeared\n\t\t\t\tif (!OC.Util.isIE()) {\n\t\t\t\t\t_.defer(function () {\n\t\t\t\t\t\tself.$('.shareWithField').focus();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\trender: function() {\n\t\t\tvar self = this;\n\t\t\tvar baseTemplate = OC.Share.Templates['sharedialogview'];\n\n\t\t\tthis.$el.html(baseTemplate({\n\t\t\t\tcid: this.cid,\n\t\t\t\tshareLabel: t('core', 'Share'),\n\t\t\t\tsharePlaceholder: this._renderSharePlaceholderPart(),\n\t\t\t\tisSharingAllowed: this.model.sharePermissionPossible()\n\t\t\t}));\n\n\t\t\tvar $shareField = this.$el.find('.shareWithField');\n\t\t\tif ($shareField.length) {\n\t\t\t\tvar shareFieldKeydownHandler = function(event) {\n\t\t\t\t\tif (event.keyCode !== 13) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tself._confirmShare();\n\n\t\t\t\t\treturn false;\n\t\t\t\t};\n\n\t\t\t\t$shareField.autocomplete({\n\t\t\t\t\tminLength: 0,\n\t\t\t\t\tdelay: 750,\n\t\t\t\t\tfocus: function(event) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t},\n\t\t\t\t\tsource: this.autocompleteHandler,\n\t\t\t\t\tselect: this._onSelectRecipient,\n\t\t\t\t\topen: function() {\n\t\t\t\t\t\tvar autocomplete = $(this).autocomplete('widget');\n\t\t\t\t\t\tvar numberOfItems = autocomplete.find('li').size();\n\t\t\t\t\t\tautocomplete.removeClass('item-count-1');\n\t\t\t\t\t\tautocomplete.removeClass('item-count-2');\n\t\t\t\t\t\tif (numberOfItems <= 2) {\n\t\t\t\t\t\t\tautocomplete.addClass('item-count-' + numberOfItems);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}).data('ui-autocomplete')._renderItem = this.autocompleteRenderItem;\n\n\t\t\t\t$shareField.on('keydown', null, shareFieldKeydownHandler);\n\t\t\t}\n\n\t\t\tthis.resharerInfoView.$el = this.$el.find('.resharerInfoView');\n\t\t\tthis.resharerInfoView.render();\n\n\t\t\tthis.linkShareView.$el = this.$el.find('.linkShareView');\n\t\t\tthis.linkShareView.render();\n\n\t\t\tthis.shareeListView.$el = this.$el.find('.shareeListView');\n\t\t\tthis.shareeListView.render();\n\n\t\t\tthis.$el.find('.hasTooltip').tooltip();\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * sets whether share by link should be displayed or not. Default is\n\t\t * true.\n\t\t *\n\t\t * @param {bool} showLink\n\t\t */\n\t\tsetShowLink: function(showLink) {\n\t\t\tthis._showLink = (typeof showLink === 'boolean') ? showLink : true;\n\t\t\tthis.linkShareView.showLink = this._showLink;\n\t\t},\n\n\t\t_renderSharePlaceholderPart: function () {\n\t\t\tvar allowRemoteSharing = this.configModel.get('isRemoteShareAllowed');\n\t\t\tvar allowMailSharing = this.configModel.get('isMailShareAllowed');\n\n\t\t\tif (!allowRemoteSharing && allowMailSharing) {\n\t\t\t\treturn t('core', 'Name or email address...');\n\t\t\t}\n\t\t\tif (allowRemoteSharing && !allowMailSharing) {\n\t\t\t\treturn t('core', 'Name or federated cloud ID...');\n\t\t\t}\n\t\t\tif (allowRemoteSharing && allowMailSharing) {\n\t\t\t\treturn t('core', 'Name, federated cloud ID or email address...');\n\t\t\t}\n\n\t\t\treturn \tt('core', 'Name...');\n\t\t},\n\n\t});\n\n\tOC.Share.ShareDialogView = ShareDialogView;\n\n})();\n","/* global escapeHTML */\n\n/**\n * @namespace\n */\nOC.Share = _.extend(OC.Share || {}, {\n\tSHARE_TYPE_USER:0,\n\tSHARE_TYPE_GROUP:1,\n\tSHARE_TYPE_LINK:3,\n\tSHARE_TYPE_EMAIL:4,\n\tSHARE_TYPE_REMOTE:6,\n\tSHARE_TYPE_CIRCLE:7,\n\tSHARE_TYPE_GUEST:8,\n\tSHARE_TYPE_REMOTE_GROUP:9,\n\tSHARE_TYPE_ROOM:10,\n\n\t/**\n\t * Regular expression for splitting parts of remote share owners:\n\t * \"user@example.com/path/to/owncloud\"\n\t * \"user@anotherexample.com@example.com/path/to/owncloud\n\t */\n\t_REMOTE_OWNER_REGEXP: new RegExp(\"^([^@]*)@(([^@]*)@)?([^/]*)([/](.*)?)?$\"),\n\n\t/**\n\t * @deprecated use OC.Share.currentShares instead\n\t */\n\titemShares:[],\n\t/**\n\t * Full list of all share statuses\n\t */\n\tstatuses:{},\n\t/**\n\t * Shares for the currently selected file.\n\t * (for which the dropdown is open)\n\t *\n\t * Key is item type and value is an array or\n\t * shares of the given item type.\n\t */\n\tcurrentShares: {},\n\t/**\n\t * Whether the share dropdown is opened.\n\t */\n\tdroppedDown:false,\n\t/**\n\t * Loads ALL share statuses from server, stores them in\n\t * OC.Share.statuses then calls OC.Share.updateIcons() to update the\n\t * files \"Share\" icon to \"Shared\" according to their share status and\n\t * share type.\n\t *\n\t * If a callback is specified, the update step is skipped.\n\t *\n\t * @param itemType item type\n\t * @param fileList file list instance, defaults to OCA.Files.App.fileList\n\t * @param callback function to call after the shares were loaded\n\t */\n\tloadIcons:function(itemType, fileList, callback) {\n\t\tvar path = fileList.dirInfo.path;\n\t\tif (path === '/') {\n\t\t\tpath = '';\n\t\t}\n\t\tpath += '/' + fileList.dirInfo.name;\n\n\t\t// Load all share icons\n\t\t$.get(\n\t\t\tOC.linkToOCS('apps/files_sharing/api/v1', 2) + 'shares',\n\t\t\t{\n\t\t\t\tsubfiles: 'true',\n\t\t\t\tpath: path,\n\t\t\t\tformat: 'json'\n\t\t\t}, function(result) {\n\t\t\t\tif (result && result.ocs.meta.statuscode === 200) {\n\t\t\t\t\tOC.Share.statuses = {};\n\t\t\t\t\t$.each(result.ocs.data, function(it, share) {\n\t\t\t\t\t\tif (!(share.item_source in OC.Share.statuses)) {\n\t\t\t\t\t\t\tOC.Share.statuses[share.item_source] = {link: false};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (share.share_type === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\t\tOC.Share.statuses[share.item_source] = {link: true};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif (_.isFunction(callback)) {\n\t\t\t\t\t\tcallback(OC.Share.statuses);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tOC.Share.updateIcons(itemType, fileList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t},\n\t/**\n\t * Updates the files' \"Share\" icons according to the known\n\t * sharing states stored in OC.Share.statuses.\n\t * (not reloaded from server)\n\t *\n\t * @param itemType item type\n\t * @param fileList file list instance\n\t * defaults to OCA.Files.App.fileList\n\t */\n\tupdateIcons:function(itemType, fileList){\n\t\tvar item;\n\t\tvar $fileList;\n\t\tvar currentDir;\n\t\tif (!fileList && OCA.Files) {\n\t\t\tfileList = OCA.Files.App.fileList;\n\t\t}\n\t\t// fileList is usually only defined in the files app\n\t\tif (fileList) {\n\t\t\t$fileList = fileList.$fileList;\n\t\t\tcurrentDir = fileList.getCurrentDirectory();\n\t\t}\n\t\t// TODO: iterating over the files might be more efficient\n\t\tfor (item in OC.Share.statuses){\n\t\t\tvar iconClass = 'icon-shared';\n\t\t\tvar data = OC.Share.statuses[item];\n\t\t\tvar hasLink = data.link;\n\t\t\t// Links override shared in terms of icon display\n\t\t\tif (hasLink) {\n\t\t\t\ticonClass = 'icon-public';\n\t\t\t}\n\t\t\tif (itemType !== 'file' && itemType !== 'folder') {\n\t\t\t\t$('a.share[data-item=\"'+item+'\"] .icon').removeClass('icon-shared icon-public').addClass(iconClass);\n\t\t\t} else {\n\t\t\t\t// TODO: ultimately this part should be moved to files_sharing app\n\t\t\t\tvar file = $fileList.find('tr[data-id=\"'+item+'\"]');\n\t\t\t\tvar shareFolder = OC.imagePath('core', 'filetypes/folder-shared');\n\t\t\t\tvar img;\n\t\t\t\tif (file.length > 0) {\n\t\t\t\t\tthis.markFileAsShared(file, true, hasLink);\n\t\t\t\t} else {\n\t\t\t\t\tvar dir = currentDir;\n\t\t\t\t\tif (dir.length > 1) {\n\t\t\t\t\t\tvar last = '';\n\t\t\t\t\t\tvar path = dir;\n\t\t\t\t\t\t// Search for possible parent folders that are shared\n\t\t\t\t\t\twhile (path != last) {\n\t\t\t\t\t\t\tif (path === data.path && !data.link) {\n\t\t\t\t\t\t\t\tvar actions = $fileList.find('.fileactions .action[data-action=\"Share\"]');\n\t\t\t\t\t\t\t\tvar files = $fileList.find('.filename');\n\t\t\t\t\t\t\t\tvar i;\n\t\t\t\t\t\t\t\tfor (i = 0; i < actions.length; i++) {\n\t\t\t\t\t\t\t\t\t// TODO: use this.markFileAsShared()\n\t\t\t\t\t\t\t\t\timg = $(actions[i]).find('img');\n\t\t\t\t\t\t\t\t\tif (img.attr('src') !== OC.imagePath('core', 'actions/public')) {\n\t\t\t\t\t\t\t\t\t\timg.attr('src', image);\n\t\t\t\t\t\t\t\t\t\t$(actions[i]).addClass('permanent');\n\t\t\t\t\t\t\t\t\t\t$(actions[i]).html('<span> '+t('core', 'Shared')+'</span>').prepend(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(i = 0; i < files.length; i++) {\n\t\t\t\t\t\t\t\t\tif ($(files[i]).closest('tr').data('type') === 'dir') {\n\t\t\t\t\t\t\t\t\t\t$(files[i]).find('.thumbnail').css('background-image', 'url('+shareFolder+')');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlast = path;\n\t\t\t\t\t\t\tpath = OC.Share.dirname(path);\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}\n\t},\n\tupdateIcon:function(itemType, itemSource) {\n\t\tvar shares = false;\n\t\tvar link = false;\n\t\tvar iconClass = '';\n\t\t$.each(OC.Share.itemShares, function(index) {\n\t\t\tif (OC.Share.itemShares[index]) {\n\t\t\t\tif (index == OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\tif (OC.Share.itemShares[index] == true) {\n\t\t\t\t\t\tshares = true;\n\t\t\t\t\t\ticonClass = 'icon-public';\n\t\t\t\t\t\tlink = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else if (OC.Share.itemShares[index].length > 0) {\n\t\t\t\t\tshares = true;\n\t\t\t\t\ticonClass = 'icon-shared';\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (itemType != 'file' && itemType != 'folder') {\n\t\t\t$('a.share[data-item=\"'+itemSource+'\"] .icon').removeClass('icon-shared icon-public').addClass(iconClass);\n\t\t} else {\n\t\t\tvar $tr = $('tr').filterAttr('data-id', String(itemSource));\n\t\t\tif ($tr.length > 0) {\n\t\t\t\t// it might happen that multiple lists exist in the DOM\n\t\t\t\t// with the same id\n\t\t\t\t$tr.each(function() {\n\t\t\t\t\tOC.Share.markFileAsShared($(this), shares, link);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (shares) {\n\t\t\tOC.Share.statuses[itemSource] = OC.Share.statuses[itemSource] || {};\n\t\t\tOC.Share.statuses[itemSource].link = link;\n\t\t} else {\n\t\t\tdelete OC.Share.statuses[itemSource];\n\t\t}\n\t},\n\t/**\n\t * Format a remote address\n\t *\n\t * @param {String} shareWith userid, full remote share, or whatever\n\t * @param {String} shareWithDisplayName\n\t * @param {String} message\n\t * @return {String} HTML code to display\n\t */\n\t_formatRemoteShare: function(shareWith, shareWithDisplayName, message) {\n\t\tvar parts = this._REMOTE_OWNER_REGEXP.exec(shareWith);\n\t\tif (!parts) {\n\t\t\t// display avatar of the user\n\t\t\tvar avatar = '<span class=\"avatar\" data-username=\"' + escapeHTML(shareWith) + '\" title=\"' + message + \" \" + escapeHTML(shareWithDisplayName) + '\"></span>';\n\t\t\tvar hidden = '<span class=\"hidden-visually\">' + message + ' ' + escapeHTML(shareWithDisplayName) + '</span> ';\n\t\t\treturn avatar + hidden;\n\t\t}\n\n\t\tvar userName = parts[1];\n\t\tvar userDomain = parts[3];\n\t\tvar server = parts[4];\n\t\tvar tooltip = message + ' ' + userName;\n\t\tif (userDomain) {\n\t\t\ttooltip += '@' + userDomain;\n\t\t}\n\t\tif (server) {\n\t\t\tif (!userDomain) {\n\t\t\t\tuserDomain = '…';\n\t\t\t}\n\t\t\ttooltip += '@' + server;\n\t\t}\n\n\t\tvar html = '<span class=\"remoteAddress\" title=\"' + escapeHTML(tooltip) + '\">';\n\t\thtml += '<span class=\"username\">' + escapeHTML(userName) + '</span>';\n\t\tif (userDomain) {\n\t\t\thtml += '<span class=\"userDomain\">@' + escapeHTML(userDomain) + '</span>';\n\t\t}\n\t\thtml += '</span> ';\n\t\treturn html;\n\t},\n\t/**\n\t * Loop over all recipients in the list and format them using\n\t * all kind of fancy magic.\n\t *\n\t * @param {Object} recipients array of all the recipients\n\t * @return {String[]} modified list of recipients\n\t */\n\t_formatShareList: function(recipients) {\n\t\tvar _parent = this;\n\t\trecipients = _.toArray(recipients);\n\t\trecipients.sort(function(a, b) {\n\t\t\treturn a.shareWithDisplayName.localeCompare(b.shareWithDisplayName);\n\t\t});\n\t\treturn $.map(recipients, function(recipient) {\n\t\t\treturn _parent._formatRemoteShare(recipient.shareWith, recipient.shareWithDisplayName, t('core', 'Shared with'));\n\t\t});\n\t},\n\t/**\n\t * Marks/unmarks a given file as shared by changing its action icon\n\t * and folder icon.\n\t *\n\t * @param $tr file element to mark as shared\n\t * @param hasShares whether shares are available\n\t * @param hasLink whether link share is available\n\t */\n\tmarkFileAsShared: function($tr, hasShares, hasLink) {\n\t\tvar action = $tr.find('.fileactions .action[data-action=\"Share\"]');\n\t\tvar type = $tr.data('type');\n\t\tvar icon = action.find('.icon');\n\t\tvar message, recipients, avatars;\n\t\tvar ownerId = $tr.attr('data-share-owner-id');\n\t\tvar owner = $tr.attr('data-share-owner');\n\t\tvar shareFolderIcon;\n\t\tvar iconClass = 'icon-shared';\n\t\taction.removeClass('shared-style');\n\t\t// update folder icon\n\t\tif (type === 'dir' && (hasShares || hasLink || ownerId)) {\n\t\t\tif (hasLink) {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-public');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-shared');\n\t\t\t}\n\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')');\n\t\t\t$tr.attr('data-icon', shareFolderIcon);\n\t\t} else if (type === 'dir') {\n\t\t\tvar isEncrypted = $tr.attr('data-e2eencrypted');\n\t\t\tvar mountType = $tr.attr('data-mounttype');\n\t\t\t// FIXME: duplicate of FileList._createRow logic for external folder,\n\t\t\t// need to refactor the icon logic into a single code path eventually\n\t\t\tif (isEncrypted === 'true') {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-encrypted');\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon);\n\t\t\t} else if (mountType && mountType.indexOf('external') === 0) {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-external');\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon);\n\t\t\t} else {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir');\n\t\t\t\t// back to default\n\t\t\t\t$tr.removeAttr('data-icon');\n\t\t\t}\n\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')');\n\t\t}\n\t\t// update share action text / icon\n\t\tif (hasShares || ownerId) {\n\t\t\trecipients = $tr.data('share-recipient-data');\n\t\t\taction.addClass('shared-style');\n\n\t\t\tavatars = '<span>' + t('core', 'Shared') + '</span>';\n\t\t\t// even if reshared, only show \"Shared by\"\n\t\t\tif (ownerId) {\n\t\t\t\tmessage = t('core', 'Shared by');\n\t\t\t\tavatars = this._formatRemoteShare(ownerId, owner, message);\n\t\t\t} else if (recipients) {\n\t\t\t\tavatars = this._formatShareList(recipients);\n\t\t\t}\n\t\t\taction.html(avatars).prepend(icon);\n\n\t\t\tif (ownerId || recipients) {\n\t\t\t\tvar avatarElement = action.find('.avatar');\n\t\t\t\tavatarElement.each(function () {\n\t\t\t\t\t$(this).avatar($(this).data('username'), 32);\n\t\t\t\t});\n\t\t\t\taction.find('span[title]').tooltip({placement: 'top'});\n\t\t\t}\n\t\t} else {\n\t\t\taction.html('<span class=\"hidden-visually\">' + t('core', 'Shared') + '</span>').prepend(icon);\n\t\t}\n\t\tif (hasLink) {\n\t\t\ticonClass = 'icon-public';\n\t\t}\n\t\ticon.removeClass('icon-shared icon-public').addClass(iconClass);\n\t},\n\tshowDropDown:function(itemType, itemSource, appendTo, link, possiblePermissions, filename) {\n\t\tvar configModel = new OC.Share.ShareConfigModel();\n\t\tvar attributes = {itemType: itemType, itemSource: itemSource, possiblePermissions: possiblePermissions};\n\t\tvar itemModel = new OC.Share.ShareItemModel(attributes, {configModel: configModel});\n\t\tvar dialogView = new OC.Share.ShareDialogView({\n\t\t\tid: 'dropdown',\n\t\t\tmodel: itemModel,\n\t\t\tconfigModel: configModel,\n\t\t\tclassName: 'drop shareDropDown',\n\t\t\tattributes: {\n\t\t\t\t'data-item-source-name': filename,\n\t\t\t\t'data-item-type': itemType,\n\t\t\t\t'data-item-source': itemSource\n\t\t\t}\n\t\t});\n\t\tdialogView.setShowLink(link);\n\t\tvar $dialog = dialogView.render().$el;\n\t\t$dialog.appendTo(appendTo);\n\t\t$dialog.slideDown(OC.menuSpeed, function() {\n\t\t\tOC.Share.droppedDown = true;\n\t\t});\n\t\titemModel.fetch();\n\t},\n\thideDropDown:function(callback) {\n\t\tOC.Share.currentShares = null;\n\t\t$('#dropdown').slideUp(OC.menuSpeed, function() {\n\t\t\tOC.Share.droppedDown = false;\n\t\t\t$('#dropdown').remove();\n\t\t\tif (typeof FileActions !== 'undefined') {\n\t\t\t\t$('tr').removeClass('mouseOver');\n\t\t\t}\n\t\t\tif (callback) {\n\t\t\t\tcallback.call();\n\t\t\t}\n\t\t});\n\t},\n\tdirname:function(path) {\n\t\treturn path.replace(/\\\\/g,'/').replace(/\\/[^\\/]*$/, '');\n\t}\n});\n\n$(document).ready(function() {\n\tif(typeof monthNames != 'undefined'){\n\t\t// min date should always be the next day\n\t\tvar minDate = new Date();\n\t\tminDate.setDate(minDate.getDate()+1);\n\t\t$.datepicker.setDefaults({\n\t\t\tmonthNames: monthNames,\n\t\t\tmonthNamesShort: monthNamesShort,\n\t\t\tdayNames: dayNames,\n\t\t\tdayNamesMin: dayNamesMin,\n\t\t\tdayNamesShort: dayNamesShort,\n\t\t\tfirstDay: firstDay,\n\t\t\tminDate : minDate\n\t\t});\n\t}\n\n\t$(this).click(function(event) {\n\t\tvar target = $(event.target);\n\t\tvar isMatched = !target.is('.drop, .ui-datepicker-next, .ui-datepicker-prev, .ui-icon')\n\t\t\t&& !target.closest('#ui-datepicker-div').length && !target.closest('.ui-autocomplete').length;\n\t\tif (OC.Share && OC.Share.droppedDown && isMatched && $('#dropdown').has(event.target).length === 0) {\n\t\t\tOC.Share.hideDropDown();\n\t\t}\n\t});\n\n\n\n});\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./core/js/merged-share-backend.js","webpack:///./core/js/shareconfigmodel.js","webpack:///./core/js/sharetemplates.js","webpack:///./core/js/shareitemmodel.js","webpack:///./core/js/sharesocialmanager.js","webpack:///./core/js/sharedialogresharerinfoview.js","webpack:///./core/js/sharedialoglinkshareview.js","webpack:///./core/js/sharedialogshareelistview.js","webpack:///./core/js/sharedialogview.js","webpack:///./core/js/share.js"],"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","__webpack_exports__","OC","Share","Types","ShareConfigModel","Backbone","Model","extend","defaults","publicUploadEnabled","enforcePasswordForPublicLink","oc_appconfig","core","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","isDefaultExpireDateEnabled","defaultExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isMailShareAllowed","undefined","shareByMailEnabled","defaultExpireDate","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","shareByMail","enforcePasswordProtection","allowGroupSharing","isPublicUploadEnabled","$","data","isShareWithLinkAllowed","val","getFederatedShareDocLink","federatedCloudShareDoc","getDefaultExpirationDateString","expireDateString","this","date","moment","utc","expireAfterDays","add","format","template","templates","Handlebars","Templates","1","container","depth0","helpers","partials","stack1","alias1","nullContext","nolinkShares","hash","fn","program","inverse","noop","each","linkShares","2","helper","alias2","helperMissing","alias4","escapeExpression","_typeof","newShareId","newShareLabel","showPending","newShareTitle","unless","3","5","pendingPopoverMenu","7","alias3","cid","linkShareCreationDate","linkShareLabel","shareLinkURL","copyLabel","8","popoverMenu","10","noSharingPlaceholder","11","compiler","main","shareAllowed","useData","publicUploadRValue","publicUploadRChecked","publicUploadRLabel","publicUploadRWValue","publicUploadRWChecked","publicUploadRWLabel","publicUploadWValue","publicUploadWChecked","publicUploadWLabel","publicEditingChecked","publicEditingLabel","9","isPasswordByTalkSet","passwordByTalkLabel","13","15","expireDate","17","19","21","url","newWindow","iconClass","label","publicUpload","publicEditing","hideDownload","hideDownloadLabel","isPasswordSet","isPasswordEnforced","enablePasswordLabel","passwordPlaceholder","showPasswordByTalkCheckBox","hasExpireDate","isExpirationEnforced","expireDateLabel","expirationDate","expirationLabel","expirationDatePlaceholder","maxDate","addNoteLabel","hasNote","shareNote","shareId","social","unshareLinkLabel","enforcedPasswordLabel","minPasswordLength","reshareOwner","sharedByText","hasShareNote","isShareWithCurrentUser","shareType","shareWith","modSeed","shareWithAvatar","shareWithDisplayName","shareWithTitle","canUpdateShareSettings","editPermissionPossible","canEditLabel","shareInitiator","shareInitiatorText","unshareLabel","sharees","linkReshares","sharePermissionPossible","isMailShare","hasSharePermission","sharePermission","canShareLabel","4","6","createPermissionPossible","updatePermissionPossible","deletePermissionPossible","hasCreatePermission","createPermission","createPermissionLabel","hasUpdatePermission","updatePermission","updatePermissionLabel","14","hasDeletePermission","deletePermission","deletePermissionLabel","16","passwordLabel","password","passwordValue","isTalkEnabled","secureDropMode","readPermission","secureDropLabel","20","22","24","passwordByTalkPlaceholder","26","28","30","isFolder","isNoteAvailable","shareLabel","sharePlaceholder","isSharingAllowed","SHARE_RESPONSE_INT_PROPS","ShareItemModel","_linkShareId","initialize","attributes","options","_","isUndefined","configModel","fileInfoModel","bindAll","allowPublicUploadStatus","permissions","saveLinkShare","expiration","shareIndex","findIndex","share","id","length","updateShare","passwordChanged","sendPasswordByTalk","PERMISSION_READ","SHARE_TYPE_LINK","addShare","defaultPermissions","getCapabilities","PERMISSION_ALL","possiblePermissions","PERMISSION_UPDATE","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_SHARE","path","getFullPath","_addOrUpdateShare","type","_getUrl","dataType","attrs","encodeURIComponent","ajaxSettings","self","ajax","always","isFunction","complete","done","fetch","success","fail","xhr","msg","result","responseJSON","ocs","meta","message","error","dialogs","alert","removeShare","isPublicUploadAllowed","isPublicEditingAllowed","isHideFileListSet","isFile","hasReshare","reshare","isObject","uid_owner","hasUserShares","getSharesWithCurrentItem","hasLinkShares","getReshareOwner","getReshareOwnerDisplayname","displayname_owner","getReshareNote","note","getReshareWith","share_with","getReshareWithDisplayName","share_with_displayname","getReshareType","share_type","getExpireDate","_shareExpireDate","getNote","_shareNote","shares","fileId","filter","item_source","getShareWith","getShareWithDisplayName","getShareWithAvatar","share_with_avatar","getSharedBy","getSharedByDisplayName","getFileOwnerUid","uid_file_owner","findShareWithIndex","isArray","getShareType","_shareHasPermission","permission","getPermissions","hasReadPermission","editPermissionState","hcp","hup","hdp","linkSharePermissions","base","params","linkToOCS","buildQueryString","_fetchShares","reshares","_fetchReshare","_reshareFetched","Deferred","resolve","shared_with_me","_groupReshares","superShare","shift","combinedPermissions","SHARE_TYPE_USER","SHARE_TYPE_GROUP","model","trigger","deferred","when","data1","data2","sharesMap","shareItem","set","parse","_legacyFillCurrentShares","statuses","currentShares","itemShares","currentShareStatus","link","push","console","warn","currentUser","allowPublicEditingStatus","hideFileListStatus","map","prop","parseInt","reject","file_source","window","location","protocol","host","token","generateUrl","fullPath","isDirectory","linkTo","hide_download","send_password_by_talk","_parseTime","time","isString","isNaN","getShareTypes","pluck","uniq","Social","SocialModel","SocialCollection","Collection","comparator","ShareDialogResharerInfoView","View","tagName","className","_template","view","on","render","$el","empty","reshareTemplate","ownerDisplayName","group","owner","escape","SHARE_TYPE_CIRCLE","circle","SHARE_TYPE_ROOM","conversation","html","find","$this","avatar","contactsMenu","PASSWORD_PLACEHOLDER_MESSAGE","PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL","ShareDialogLinkShareView","showLink","events","click .share-menu .icon-more","change .hideDownloadCheckbox","click input.share-pass-submit","keyup input.linkPassText","change .showPasswordCheckbox","change .passwordByTalkCheckbox","change .publicEditingCheckbox","click .linkText","click .pop-up","change .publicUploadRadio","click .expireDate","change .datepicker","click .datepicker","click .share-add","click .share-note-delete","click .share-note-submit","click .unshare","click .new-share","submit .enforcedPassForm","previousLinkShares","previous","clipboard","Clipboard","e","$trigger","tooltip","attr","placement","delay","$menu","next","$linkTextMenu","$input","closest","showMenu","actionMsg","test","navigator","userAgent","removeClass","select","newShare","event","$li","target","$loading","hasClass","addClass","hideMenus","shareData","defaultExpireDays","focus","$newShare","response","Notification","showTemporary","then","enforcedPasswordSet","preventDefault","onLinkTextClick","onHideDownloadChange","$checkbox","siblings","is","obj","onShowPasswordClick","slideToggle","menuSpeed","toggleClass","Util","isIE","onPasswordKeyUp","keyCode","onPasswordEntered","parent","$container","onPasswordByTalkChange","onAllowPublicEditingChange","onPublicUploadChange","currentTarget","showNoteForm","stopPropagation","$element","$form","deleteNote","sendNote","updateNote","prev","trim","$submit","$error","hide","method","show","setTimeout","linkShareTemplate","templateData","passwordPlaceholderInitial","publicEditable","minDate","Date","setDate","getDate","datepicker","setDefaults","dateFormat","oc_capabilities","password_policy","minLength","popoverBase","urlLabel","mailPrivatePlaceholder","mailButtonText","pendingPopover","pendingPopoverMenuTemplate","getShareeList","replace","popover","getPopoverObject","popoverMenuTemplate","delegateEvents","autosize","onToggleMenu","isPasswordEnabledByDefault","onPopUpClick","left","screen","width","top","height","open","href","onExpireDateChange","datePicker","state","showDatePicker","setExpirationDate","expirationDatePicker","onSelect","onChangeExpirationDate","list","index","getShareeObject","stime","oc_appswebroots","shareTime","isNumber","stripTime","getTime","onUnshare","eq","remove","ShareDialogShareeListView","_menuOpen","_renderPermissionChange","click .permissions","click .password","click .passwordByTalk","click .secureDrop","keyup input.passwordField","focusout input.passwordField","sharedBy","sharedByDisplayName","fileOwnerUid","SHARE_TYPE_REMOTE","SHARE_TYPE_REMOTE_GROUP","SHARE_TYPE_EMAIL","oc_current_user","sharer","hasPassword","isRemoteShare","isRemoteGroupShare","isCircleShare","isFileSharedByMail","getShareProperties","crudsLabel","triangleSImage","imagePath","universal","getLinkReshares","shareInitiatorDisplayName","permissionChangeShareId","shareWithIndex","sharee","replaceWith","css","imageplaceholder","_this","forEach","$edit","datePickerClass","datePickerInput","expireDateCheckbox","liSelector","log","onMailSharePasswordProtectChange","element","passwordContainerClass","passwordContainer","loading","inputClass","passwordField","passwordByTalkElement","passwordByTalkState","passwordByTalkContainerClass","onMailSharePasswordProtectByTalkChange","passwordByTalkContainer","passwordByTalkField","passwordElement","passwordState","onMailSharePasswordKeyUp","onMailSharePasswordEntered","startsWith","blur","onPermissionChange","checked","$checkboxes","not","numberChecked","$editCb","checkbox","enableCb","elem","onSecureDropChange","ShareDialogView","_templates","_showLink","_lookup","_lookupAllowed","resharerInfoView","linkShareView","shareeListView","_lastSuggestions","_lastRecommendations","_pendingOperationsCount","focus .shareWithField","input .shareWithField","click .shareWithConfirm","_onRequest","_onEndRequest","subViewOptions","subViews","Plugins","attach","onShareWithFieldChanged","onShareWithFieldFocus","$shareWithField","autocomplete","_getSuggestions","searchTerm","perPage","lookup","promise","search","itemType","statuscode","users","groups","remotes","remote_groups","emails","circles","rooms","usersLength","groupsLength","remotesLength","remoteGroupsLength","emailsLength","circlesLength","roomsLength","j","splice","sharesLength","exact","exactUsers","exactGroups","exactRemotes","exactRemoteGroups","exactEmails","exactCircles","exactRooms","exactMatches","concat","remoteGroups","lookupEnabled","grouped","sort","a","b","aProperty","bProperty","previousUuid","groupedLength","uuid","merged","moreResultsAvailable","oc_config","Math","min","max","_getRecommendations","recommendationHandler","suggestions","info","autocompleteHandler","term","$confirm","count","title","append","autocompleteRenderItem","ul","item","icon","text","escapeHTML","description","getTranslatedType","circleInfo","circleOwner","insert","appendTo","RegExp","_onSelectRecipient","debug","stopImmediatePropagation","_confirmShare","restoreUI","_toggleLoading","_loading","_loadingOnce","baseTemplate","_renderSharePlaceholderPart","$shareField","source","numberOfItems","size","_renderItem","setShowLink","allowRemoteSharing","allowMailSharing","SHARE_TYPE_GUEST","_REMOTE_OWNER_REGEXP","droppedDown","loadIcons","fileList","callback","dirInfo","subfiles","it","updateIcons","$fileList","currentDir","OCA","Files","App","getCurrentDirectory","hasLink","img","file","shareFolder","markFileAsShared","dir","last","actions","files","image","prepend","dirname","updateIcon","itemSource","$tr","filterAttr","String","_formatRemoteShare","parts","exec","userName","userDomain","server","_formatShareList","recipients","_parent","toArray","localeCompare","recipient","hasShares","avatars","shareFolderIcon","action","ownerId","MimeType","getIconUrl","isEncrypted","mountType","indexOf","removeAttr","showDropDown","filename","itemModel","dialogView","data-item-source-name","data-item-type","data-item-source","$dialog","slideDown","hideDropDown","slideUp","FileActions","document","ready","monthNames","monthNamesShort","dayNames","dayNamesMin","dayNamesShort","firstDay","click","isMatched","has"],"mappings":"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","file":"share_backend.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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import './shareconfigmodel.js';\nimport './sharetemplates.js';\nimport './shareitemmodel.js';\nimport './sharesocialmanager.js';\nimport './sharedialogresharerinfoview.js';\nimport './sharedialoglinkshareview.js';\nimport './sharedialogshareelistview.js';\nimport './sharedialogview.js';\nimport './share.js';\n","/*\n * Copyright (c) 2015\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 moment, oc_appconfig, oc_config */\n\n(function() {\n\tif (!OC.Share) {\n\t\tOC.Share = {};\n\t\tOC.Share.Types = {};\n\t}\n\n\t// FIXME: the config model should populate its own model attributes based on\n\t// the old DOM-based config\n\tvar ShareConfigModel = OC.Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\tpublicUploadEnabled: false,\n\t\t\tenforcePasswordForPublicLink: oc_appconfig.core.enforcePasswordForPublicLink,\n\t\t\tenableLinkPasswordByDefault: oc_appconfig.core.enableLinkPasswordByDefault,\n\t\t\tisDefaultExpireDateEnforced: oc_appconfig.core.defaultExpireDateEnforced === true,\n\t\t\tisDefaultExpireDateEnabled: oc_appconfig.core.defaultExpireDateEnabled === true,\n\t\t\tisRemoteShareAllowed: oc_appconfig.core.remoteShareAllowed,\n\t\t\tisMailShareAllowed: oc_appconfig.shareByMailEnabled !== undefined,\n\t\t\tdefaultExpireDate: oc_appconfig.core.defaultExpireDate,\n\t\t\tisResharingAllowed: oc_appconfig.core.resharingAllowed,\n\t\t\tisPasswordForMailSharesRequired: (oc_appconfig.shareByMail === undefined) ? false : oc_appconfig.shareByMail.enforcePasswordProtection,\n\t\t\tallowGroupSharing: oc_appconfig.core.allowGroupSharing\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisPublicUploadEnabled: function() {\n\t\t\tvar publicUploadEnabled = $('#filestable').data('allow-public-upload');\n\t\t\treturn publicUploadEnabled === 'yes';\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisShareWithLinkAllowed: function() {\n\t\t\treturn $('#allowShareWithLink').val() === 'yes';\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetFederatedShareDocLink: function() {\n\t\t\treturn oc_appconfig.core.federatedCloudShareDoc;\n\t\t},\n\n\t\tgetDefaultExpirationDateString: function () {\n\t\t\tvar expireDateString = '';\n\t\t\tif (this.get('isDefaultExpireDateEnabled')) {\n\t\t\t\tvar date = moment.utc();\n\t\t\t\tvar expireAfterDays = this.get('defaultExpireDate');\n\t\t\t\tdate.add(expireAfterDays, 'days');\n\t\t\t\texpireDateString = date.format('YYYY-MM-DD 00:00:00');\n\t\t\t}\n\t\t\treturn expireDateString;\n\t\t}\n\t});\n\n\n\tOC.Share.ShareConfigModel = ShareConfigModel;\n})();\n","(function() {\n  var template = Handlebars.template, templates = OC.Share.Templates = OC.Share.Templates || {};\ntemplates['sharedialoglinkshareview'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {});\n\n  return \"<ul class=\\\"shareWithList\\\">\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.nolinkShares : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.linkShares : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"</ul>\\n\";\n},\"2\":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 data-share-id=\\\"\"\n    + alias4(((helper = (helper = helpers.newShareId || (depth0 != null ? depth0.newShareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newShareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t<div class=\\\"avatar icon-public-white\\\"></div>\\n\t\t\t<span class=\\\"username\\\">\"\n    + alias4(((helper = (helper = helpers.newShareLabel || (depth0 != null ? depth0.newShareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newShareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t<span class=\\\"sharingOptionsGroup\\\">\\n\t\t\t\t<div class=\\\"share-menu\\\">\\n\t\t\t\t\t<a href=\\\"#\\\" class=\\\"icon icon-add new-share has-tooltip \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.newShareTitle || (depth0 != null ? depth0.newShareTitle : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newShareTitle\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></a>\\n\t\t\t\t\t<span class=\\\"icon icon-loading-small \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\"></span>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t\t</div>\\n\t\t\t</span>\\n\t\t</li>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    return \"hidden\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper;\n\n  return \"\t\t\t\t\t\t\"\n    + ((stack1 = ((helper = (helper = helpers.pendingPopoverMenu || (depth0 != null ? depth0.pendingPopoverMenu : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"pendingPopoverMenu\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"7\":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 data-share-id=\\\"\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t<div class=\\\"avatar icon-public-white\\\"></div>\\n\t\t\t<span class=\\\"username\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.linkShareCreationDate || (depth0 != null ? depth0.linkShareCreationDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"linkShareCreationDate\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.linkShareLabel || (depth0 != null ? depth0.linkShareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"linkShareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t\\n\t\t\t<span class=\\\"sharingOptionsGroup\\\">\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"clipboard-button icon icon-clippy has-tooltip\\\" data-clipboard-text=\\\"\"\n    + alias4(((helper = (helper = helpers.shareLinkURL || (depth0 != null ? depth0.shareLinkURL : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareLinkURL\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.copyLabel || (depth0 != null ? depth0.copyLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"copyLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></a>\\n\t\t\t\t<div class=\\\"share-menu\\\">\\n\t\t\t\t\t<a href=\\\"#\\\" class=\\\"icon icon-more \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\"></a>\\n\t\t\t\t\t<span class=\\\"icon icon-loading-small \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\"></span>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.program(8, data, 0),\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t\t</div>\\n\t\t\t</span>\\n\t\t</li>\\n\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper;\n\n  return \"\t\t\t\t\t\t\"\n    + ((stack1 = ((helper = (helper = helpers.popoverMenu || (depth0 != null ? depth0.popoverMenu : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"popoverMenu\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.noSharingPlaceholder : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"11\":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 \"<input id=\\\"shareWith-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"shareWithField\\\" type=\\\"text\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.noSharingPlaceholder || (depth0 != null ? depth0.noSharingPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"noSharingPlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" disabled=\\\"disabled\\\" />\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.shareAllowed : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(10, data, 0),\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});\ntemplates['sharedialoglinkshareview_popover_menu'] = 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\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"radio\\\" name=\\\"publicUpload\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.publicUploadRValue || (depth0 != null ? depth0.publicUploadRValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRValue\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"sharingDialogAllowPublicUpload-r-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radio publicUploadRadio\\\" \"\n    + ((stack1 = ((helper = (helper = helpers.publicUploadRChecked || (depth0 != null ? depth0.publicUploadRChecked : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRChecked\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"sharingDialogAllowPublicUpload-r-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.publicUploadRLabel || (depth0 != null ? depth0.publicUploadRLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"radio\\\" name=\\\"publicUpload\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.publicUploadRWValue || (depth0 != null ? depth0.publicUploadRWValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRWValue\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"sharingDialogAllowPublicUpload-rw-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radio publicUploadRadio\\\" \"\n    + ((stack1 = ((helper = (helper = helpers.publicUploadRWChecked || (depth0 != null ? depth0.publicUploadRWChecked : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRWChecked\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"sharingDialogAllowPublicUpload-rw-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.publicUploadRWLabel || (depth0 != null ? depth0.publicUploadRWLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadRWLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"radio\\\" name=\\\"publicUpload\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.publicUploadWValue || (depth0 != null ? depth0.publicUploadWValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadWValue\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" id=\\\"sharingDialogAllowPublicUpload-w-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"radio publicUploadRadio\\\" \"\n    + ((stack1 = ((helper = (helper = helpers.publicUploadWChecked || (depth0 != null ? depth0.publicUploadWChecked : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadWChecked\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"sharingDialogAllowPublicUpload-w-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.publicUploadWLabel || (depth0 != null ? depth0.publicUploadWLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicUploadWLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\";\n},\"3\":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\t<li id=\\\"allowPublicEditingWrapper\\\">\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"checkbox\\\" name=\\\"allowPublicEditing\\\" id=\\\"sharingDialogAllowPublicEditing-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"checkbox publicEditingCheckbox\\\" \"\n    + ((stack1 = ((helper = (helper = helpers.publicEditingChecked || (depth0 != null ? depth0.publicEditingChecked : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicEditingChecked\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"sharingDialogAllowPublicEditing-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.publicEditingLabel || (depth0 != null ? depth0.publicEditingLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"publicEditingLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\";\n},\"5\":function(container,depth0,helpers,partials,data) {\n    return \"checked=\\\"checked\\\"\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    return \"disabled=\\\"disabled\\\"\";\n},\"9\":function(container,depth0,helpers,partials,data) {\n    return \"hidden\";\n},\"11\":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\t<li>\\n\t\t\t\t<span class=\\\"shareOption menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"checkbox\\\" name=\\\"passwordByTalk\\\" id=\\\"passwordByTalk-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"checkbox passwordByTalkCheckbox\\\"\\n\t\t\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isPasswordByTalkSet : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"passwordByTalk-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.passwordByTalkLabel || (depth0 != null ? depth0.passwordByTalkLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordByTalkLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    return \"datepicker\";\n},\"15\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return container.escapeExpression(((helper = (helper = helpers.expireDate || (depth0 != null ? depth0.expireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"expireDate\",\"hash\":{},\"data\":data}) : helper)));\n},\"17\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return container.escapeExpression(((helper = (helper = helpers.defaultExpireDate || (depth0 != null ? depth0.defaultExpireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"defaultExpireDate\",\"hash\":{},\"data\":data}) : helper)));\n},\"19\":function(container,depth0,helpers,partials,data) {\n    return \"readonly\";\n},\"21\":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 \"\t\t\t<li>\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"menuitem pop-up\\\" data-url=\\\"\"\n    + alias4(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-window=\\\"\"\n    + alias4(((helper = (helper = helpers.newWindow || (depth0 != null ? depth0.newWindow : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newWindow\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t\t\t<span class=\\\"icon \"\n    + alias4(((helper = (helper = helpers.iconClass || (depth0 != null ? depth0.iconClass : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"iconClass\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></span>\\n\t\t\t\t\t<span>\"\n    + alias4(((helper = (helper = helpers.label || (depth0 != null ? depth0.label : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"label\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t\t</a>\\n\t\t\t</li>\\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 \"<div class=\\\"popovermenu menu\\\">\\n\t<ul>\\n\t\t<li class=\\\"hidden linkTextMenu\\\">\\n\t\t\t<span class=\\\"menuitem icon-link-text\\\">\\n\t\t\t\t<input id=\\\"linkText-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"linkText\\\" type=\\\"text\\\" readonly=\\\"readonly\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.shareLinkURL || (depth0 != null ? depth0.shareLinkURL : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareLinkURL\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t\t</span>\\n\t\t</li>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.publicUpload : 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.publicEditing : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<input type=\\\"checkbox\\\" name=\\\"hideDownload\\\" id=\\\"sharingDialogHideDownload-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"checkbox hideDownloadCheckbox\\\"\\n\t\t\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hideDownload : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t<label for=\\\"sharingDialogHideDownload-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.hideDownloadLabel || (depth0 != null ? depth0.hideDownloadLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"hideDownloadLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<input type=\\\"checkbox\\\" name=\\\"showPassword\\\" id=\\\"showPassword-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"checkbox showPasswordCheckbox\\\"\\n\t\t\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isPasswordSet : 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.isPasswordEnforced : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" value=\\\"1\\\" />\\n\t\t\t\t\t<label for=\\\"showPassword-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.enablePasswordLabel || (depth0 != null ? depth0.enablePasswordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"enablePasswordLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li class=\\\"\"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" linkPassMenu\\\">\\n\t\t\t\t<span class=\\\"menuitem icon-share-pass\\\">\\n\t\t\t\t\t<input id=\\\"linkPassText-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"linkPassText\\\" type=\\\"password\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordPlaceholder || (depth0 != null ? depth0.passwordPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordPlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" autocomplete=\\\"new-password\\\" />\\n\t\t\t\t\t<input type=\\\"submit\\\" class=\\\"icon-confirm share-pass-submit\\\" value=\\\"\\\" />\\n\t\t\t\t\t<span class=\\\"icon icon-loading-small hidden\\\"></span>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.showPasswordByTalkCheckBox : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t<li>\\n\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t<input id=\\\"expireDate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"expirationDate\\\" class=\\\"expireDate checkbox\\\"\\n\t\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasExpireDate : 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.isExpirationEnforced : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t<label for=\\\"expireDate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.expireDateLabel || (depth0 != null ? depth0.expireDateLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expireDateLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t</span>\\n\t\t</li>\\n\t\t<li class=\\\"\"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t<span class=\\\"menuitem icon-expiredate expirationDateContainer-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t\t<label for=\\\"expirationDatePicker-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"hidden-visually\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.expirationDate || (depth0 != null ? depth0.expirationDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationDate\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.expirationLabel || (depth0 != null ? depth0.expirationLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t<!-- do not use the datepicker if enforced -->\\n\t\t\t\t<input id=\\\"expirationDatePicker-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"\"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isExpirationEnforced : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" type=\\\"text\\\"\\n\t\t\t\t\tplaceholder=\\\"\"\n    + alias4(((helper = (helper = helpers.expirationDatePlaceholder || (depth0 != null ? depth0.expirationDatePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationDatePlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" value=\\\"\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(15, data, 0),\"inverse\":container.program(17, data, 0),\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\"\\n\t\t\t\t\tdata-max-date=\\\"\"\n    + alias4(((helper = (helper = helpers.maxDate || (depth0 != null ? depth0.maxDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"maxDate\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isExpirationEnforced : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t</span>\\n\t\t\t</li>\\n\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"share-add\\\">\\n\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t<span class=\\\"icon icon-edit\\\"></span>\\n\t\t\t\t<span>\"\n    + alias4(((helper = (helper = helpers.addNoteLabel || (depth0 != null ? depth0.addNoteLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"addNoteLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t\t<input type=\\\"button\\\" class=\\\"share-note-delete icon-delete \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasNote : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t</a>\\n\t\t</li>\\n\t\t<li class=\\\"share-note-form share-note-link \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasNote : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(9, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t<span class=\\\"menuitem icon-note\\\">\\n\t\t\t\t<textarea class=\\\"share-note\\\">\"\n    + alias4(((helper = (helper = helpers.shareNote || (depth0 != null ? depth0.shareNote : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareNote\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</textarea>\\n\t\t\t\t<input type=\\\"submit\\\" class=\\\"icon-confirm share-note-submit\\\" value=\\\"\\\" id=\\\"add-note-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t\t</span>\\n\t\t</li>\\n\"\n    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.social : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(21, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"unshare\\\"><span class=\\\"icon-loading-small hidden\\\"></span><span class=\\\"icon icon-delete\\\"></span><span>\"\n    + alias4(((helper = (helper = helpers.unshareLinkLabel || (depth0 != null ? depth0.unshareLinkLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"unshareLinkLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span></a>\\n\t\t</li>\\n\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"new-share\\\">\\n\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t<span class=\\\"icon icon-add\\\"></span>\\n\t\t\t\t<span>\"\n    + alias4(((helper = (helper = helpers.newShareLabel || (depth0 != null ? depth0.newShareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"newShareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t</a>\\n\t\t</li>\\n\t</ul>\\n</div>\\n\";\n},\"useData\":true});\ntemplates['sharedialoglinkshareview_popover_menu_pending'] = template({\"1\":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 \"\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem icon-info\\\">\\n\t\t\t\t\t<p>\"\n    + alias4(((helper = (helper = helpers.enforcedPasswordLabel || (depth0 != null ? depth0.enforcedPasswordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"enforcedPasswordLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</p>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li class=\\\"linkPassMenu\\\">\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<form autocomplete=\\\"off\\\" class=\\\"enforcedPassForm\\\">\\n\t\t\t\t\t\t<input id=\\\"enforcedPassText\\\" required class=\\\"enforcedPassText\\\" type=\\\"password\\\"\\n\t\t\t\t\t\t\tplaceholder=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordPlaceholder || (depth0 != null ? depth0.passwordPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordPlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" autocomplete=\\\"enforcedPassText\\\" minlength=\\\"\"\n    + alias4(((helper = (helper = helpers.minPasswordLength || (depth0 != null ? depth0.minPasswordLength : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"minPasswordLength\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t\t\t\t\t<input type=\\\"submit\\\" value=\\\" \\\" class=\\\"primary icon-checkmark-white\\\">\\n\t\t\t\t\t</form>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return \"<div class=\\\"popovermenu open menu pending\\\">\\n\t<ul>\\n\"\n    + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isPasswordEnforced : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t</ul>\\n</div>\\n\";\n},\"useData\":true});\ntemplates['sharedialogresharerinfoview'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return \"<div class=\\\"share-note\\\">\"\n    + container.escapeExpression(((helper = (helper = helpers.shareNote || (depth0 != null ? depth0.shareNote : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"shareNote\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</div>\";\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 \"<span class=\\\"reshare\\\">\\n\t<div class=\\\"avatar\\\" data-userName=\\\"\"\n    + alias4(((helper = (helper = helpers.reshareOwner || (depth0 != null ? depth0.reshareOwner : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"reshareOwner\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></div>\\n\t\"\n    + alias4(((helper = (helper = helpers.sharedByText || (depth0 != null ? depth0.sharedByText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"sharedByText\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\n</span>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasShareNote : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"useData\":true});\ntemplates['sharedialogshareelistview'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isShareWithCurrentUser : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"2\":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 data-share-id=\\\"\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-share-type=\\\"\"\n    + alias4(((helper = (helper = helpers.shareType || (depth0 != null ? depth0.shareType : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareType\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-share-with=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWith || (depth0 != null ? depth0.shareWith : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWith\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t<div class=\\\"avatar \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.modSeed : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" data-username=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWith || (depth0 != null ? depth0.shareWith : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWith\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-avatar=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWithAvatar || (depth0 != null ? depth0.shareWithAvatar : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWithAvatar\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-displayname=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWithDisplayName || (depth0 != null ? depth0.shareWithDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWithDisplayName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.modSeed : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(5, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"></div>\\n\t\t\t<span class=\\\"username\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWithTitle || (depth0 != null ? depth0.shareWithTitle : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWithTitle\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.shareWithDisplayName || (depth0 != null ? depth0.shareWithDisplayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWithDisplayName\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.canUpdateShareSettings : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t</li>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n    return \"imageplaceholderseed\";\n},\"5\":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 \"data-seed=\\\"\"\n    + alias4(((helper = (helper = helpers.shareWith || (depth0 != null ? depth0.shareWith : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareWith\",\"hash\":{},\"data\":data}) : helper)))\n    + \" \"\n    + alias4(((helper = (helper = helpers.shareType || (depth0 != null ? depth0.shareType : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareType\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {});\n\n  return \"\t\t\t<span class=\\\"sharingOptionsGroup\\\">\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.editPermissionPossible : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t\t<div tabindex=\\\"0\\\" class=\\\"share-menu\\\"><span class=\\\"icon icon-more\\\"></span>\\n\t\t\t\t\t\"\n    + ((stack1 = ((helper = (helper = helpers.popoverMenu || (depth0 != null ? depth0.popoverMenu : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(alias1,{\"name\":\"popoverMenu\",\"hash\":{},\"data\":data}) : helper))) != null ? stack1 : \"\")\n    + \"\\n\t\t\t\t</div>\\n\t\t\t</span>\\n\";\n},\"8\":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 \"\t\t\t\t\t<span>\\n\t\t\t\t\t\t<input id=\\\"canEdit-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"edit\\\" class=\\\"permissions checkbox\\\" />\\n\t\t\t\t\t\t<label for=\\\"canEdit-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.canEditLabel || (depth0 != null ? depth0.canEditLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"canEditLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\";\n},\"10\":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 \"\t\t<li data-share-id=\\\"\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" data-share-type=\\\"\"\n    + alias4(((helper = (helper = helpers.shareType || (depth0 != null ? depth0.shareType : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareType\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\\n\t\t\t<div class=\\\"avatar\\\" data-username=\\\"\"\n    + alias4(((helper = (helper = helpers.shareInitiator || (depth0 != null ? depth0.shareInitiator : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareInitiator\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"></div>\\n\t\t\t<span class=\\\"has-tooltip username\\\" title=\\\"\"\n    + alias4(((helper = (helper = helpers.shareInitiator || (depth0 != null ? depth0.shareInitiator : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareInitiator\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.shareInitiatorText || (depth0 != null ? depth0.shareInitiatorText : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareInitiatorText\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t<span class=\\\"sharingOptionsGroup\\\">\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"unshare\\\"><span class=\\\"icon-loading-small hidden\\\"></span><span class=\\\"icon icon-delete\\\"></span><span class=\\\"hidden-visually\\\">\"\n    + alias4(((helper = (helper = helpers.unshareLabel || (depth0 != null ? depth0.unshareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"unshareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span></a>\\n\t\t\t</span>\\n\t\t</li>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {});\n\n  return \"<ul id=\\\"shareWithList\\\" class=\\\"shareWithList\\\">\\n\"\n    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.sharees : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.linkReshares : depth0),{\"name\":\"each\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"</ul>\\n\";\n},\"useData\":true});\ntemplates['sharedialogshareelistview_popover_menu'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return \" \"\n    + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.sharePermissionPossible : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" \";\n},\"2\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return \" \"\n    + ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isMailShare : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(3, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" \";\n},\"3\":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\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<input id=\\\"canShare-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"share\\\" class=\\\"permissions checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasSharePermission : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" data-permissions=\\\"\"\n    + alias4(((helper = (helper = helpers.sharePermission || (depth0 != null ? depth0.sharePermission : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"sharePermission\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t\t\t\t<label for=\\\"canShare-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.canShareLabel || (depth0 != null ? depth0.canShareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"canShareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t\t</li>\\n\t\t\t\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n    return \"checked=\\\"checked\\\"\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n    var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {});\n\n  return \"\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.createPermissionPossible : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(7, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.updatePermissionPossible : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\t\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.deletePermissionPossible : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(13, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\";\n},\"7\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isMailShare : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"8\":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\t\t\t\t<li>\\n\t\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t\t<input id=\\\"canCreate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"create\\\" class=\\\"permissions checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasCreatePermission : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" data-permissions=\\\"\"\n    + alias4(((helper = (helper = helpers.createPermission || (depth0 != null ? depth0.createPermission : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"createPermission\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\t\t\t\t\t\t<label for=\\\"canCreate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.createPermissionLabel || (depth0 != null ? depth0.createPermissionLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"createPermissionLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\t\t\t\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isMailShare : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(11, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"11\":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\t\t\t\t<li>\\n\t\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t\t<input id=\\\"canUpdate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"update\\\" class=\\\"permissions checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasUpdatePermission : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" data-permissions=\\\"\"\n    + alias4(((helper = (helper = helpers.updatePermission || (depth0 != null ? depth0.updatePermission : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"updatePermission\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\t\t\t\t\t\t<label for=\\\"canUpdate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.updatePermissionLabel || (depth0 != null ? depth0.updatePermissionLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"updatePermissionLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\t\t\t\t\";\n},\"13\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers.unless.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isMailShare : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"14\":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\t\t\t\t<li>\\n\t\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t\t<input id=\\\"canDelete-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"delete\\\" class=\\\"permissions checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasDeletePermission : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" data-permissions=\\\"\"\n    + alias4(((helper = (helper = helpers.deletePermission || (depth0 != null ? depth0.deletePermission : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"deletePermission\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\t\t\t\t\t\t<label for=\\\"canDelete-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.deletePermissionLabel || (depth0 != null ? depth0.deletePermissionLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"deletePermissionLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\t\t\t\t\";\n},\"16\":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 ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasCreatePermission : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(17, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t\t<li>\\n\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t<input id=\\\"password-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"password\\\" class=\\\"password checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(19, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" />\\n\t\t\t\t\t<label for=\\\"password-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.passwordLabel || (depth0 != null ? depth0.passwordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\t\t\t<li class=\\\"passwordMenu-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t\t<span class=\\\"passwordContainer-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" icon-passwordmail menuitem\\\">\\n\t\t\t\t\t<label for=\\\"passwordField-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"hidden-visually\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.password || (depth0 != null ? depth0.password : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"password\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.passwordLabel || (depth0 != null ? depth0.passwordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t<input id=\\\"passwordField-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"passwordField\\\" type=\\\"password\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordPlaceholder || (depth0 != null ? depth0.passwordPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordPlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordValue || (depth0 != null ? depth0.passwordValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordValue\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" autocomplete=\\\"new-password\\\" />\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t</span>\\n\t\t\t</li>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isTalkEnabled : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(24, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"17\":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\t\t<li>\\n\t\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t\t<input id=\\\"secureDrop-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"secureDrop\\\" class=\\\"checkbox secureDrop\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.secureDropMode : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" data-permissions=\\\"\"\n    + alias4(((helper = (helper = helpers.readPermission || (depth0 != null ? depth0.readPermission : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"readPermission\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\"/>\\n\t\t\t\t\t\t<label for=\\\"secureDrop-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.secureDropLabel || (depth0 != null ? depth0.secureDropLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"secureDropLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\";\n},\"19\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isPasswordForMailSharesRequired : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(20, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"20\":function(container,depth0,helpers,partials,data) {\n    return \"disabled=\\\"\\\"\";\n},\"22\":function(container,depth0,helpers,partials,data) {\n    return \"hidden\";\n},\"24\":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\t\t<li>\\n\t\t\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t\t\t<input id=\\\"passwordByTalk-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"passwordByTalk\\\" class=\\\"passwordByTalk checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isPasswordByTalkSet : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \" />\\n\t\t\t\t\t\t<label for=\\\"passwordByTalk-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.passwordByTalkLabel || (depth0 != null ? depth0.passwordByTalkLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordByTalkLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\t\t\t\t<li class=\\\"passwordByTalkMenu-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isPasswordByTalkSet : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t\t\t<span class=\\\"passwordByTalkContainer-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" icon-passwordtalk menuitem\\\">\\n\t\t\t\t\t\t<label for=\\\"passwordByTalkField-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"hidden-visually\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.password || (depth0 != null ? depth0.password : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"password\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.passwordByTalkLabel || (depth0 != null ? depth0.passwordByTalkLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordByTalkLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t\t\t<input id=\\\"passwordByTalkField-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"passwordField\\\" type=\\\"password\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordByTalkPlaceholder || (depth0 != null ? depth0.passwordByTalkPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordByTalkPlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.passwordValue || (depth0 != null ? depth0.passwordValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"passwordValue\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" autocomplete=\\\"new-password\\\" />\\n\t\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t</span>\\n\t\t\t\t</li>\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return container.escapeExpression(((helper = (helper = helpers.expireDate || (depth0 != null ? depth0.expireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"expireDate\",\"hash\":{},\"data\":data}) : helper)));\n},\"28\":function(container,depth0,helpers,partials,data) {\n    var helper;\n\n  return container.escapeExpression(((helper = (helper = helpers.defaultExpireDate || (depth0 != null ? depth0.defaultExpireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"defaultExpireDate\",\"hash\":{},\"data\":data}) : helper)));\n},\"30\":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\t<li>\\n\t\t\t\t<a href=\\\"#\\\" class=\\\"share-add\\\">\\n\t\t\t\t\t<span class=\\\"icon-loading-small hidden\\\"></span>\\n\t\t\t\t\t<span class=\\\"icon icon-edit\\\"></span>\\n\t\t\t\t\t<span>\"\n    + alias4(((helper = (helper = helpers.addNoteLabel || (depth0 != null ? depth0.addNoteLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"addNoteLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span>\\n\t\t\t\t\t<input type=\\\"button\\\" class=\\\"share-note-delete icon-delete \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasNote : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t\t</a>\\n\t\t\t</li>\\n\t\t\t<li class=\\\"share-note-form \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasNote : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t\t<span class=\\\"menuitem icon-note\\\">\\n\t\t\t\t\t<textarea class=\\\"share-note\\\">\"\n    + alias4(((helper = (helper = helpers.shareNote || (depth0 != null ? depth0.shareNote : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareNote\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</textarea>\\n\t\t\t\t\t<input type=\\\"submit\\\" class=\\\"icon-confirm share-note-submit\\\" value=\\\"\\\" id=\\\"add-note-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t\t\t</span>\\n\t\t\t</li>\\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 \"<div class=\\\"popovermenu bubble hidden menu\\\">\\n\t<ul>\\n\t\t\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isResharingAllowed : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isFolder : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(6, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isMailShare : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t<li>\\n\t\t\t<span class=\\\"menuitem\\\">\\n\t\t\t\t<input id=\\\"expireDate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" type=\\\"checkbox\\\" name=\\\"expirationDate\\\" class=\\\"expireDate checkbox\\\" \"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(4, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" />\\n\t\t\t\t<label for=\\\"expireDate-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.expireDateLabel || (depth0 != null ? depth0.expireDateLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expireDateLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t</span>\\n\t\t</li>\\n\t\t<li class=\\\"expirationDateMenu-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" \"\n    + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(22, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\">\\n\t\t\t<span class=\\\"expirationDateContainer-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \" icon-expiredate menuitem\\\">\\n\t\t\t\t<label for=\\\"expirationDatePicker-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"hidden-visually\\\" value=\\\"\"\n    + alias4(((helper = (helper = helpers.expirationDate || (depth0 != null ? depth0.expirationDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationDate\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\">\"\n    + alias4(((helper = (helper = helpers.expirationLabel || (depth0 != null ? depth0.expirationLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t\t\t\t<input id=\\\"expirationDatePicker-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"-\"\n    + alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareId\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"datepicker\\\" type=\\\"text\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.expirationDatePlaceholder || (depth0 != null ? depth0.expirationDatePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"expirationDatePlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" value=\\\"\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(26, data, 0),\"inverse\":container.program(28, data, 0),\"data\":data})) != null ? stack1 : \"\")\n    + \"\\\" />\\n\t\t\t</span>\\n\t\t</li>\\n\"\n    + ((stack1 = helpers[\"if\"].call(alias1,(depth0 != null ? depth0.isNoteAvailable : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(30, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"\t\t<li>\\n\t\t\t<a href=\\\"#\\\" class=\\\"unshare\\\"><span class=\\\"icon-loading-small hidden\\\"></span><span class=\\\"icon icon-delete\\\"></span><span>\"\n    + alias4(((helper = (helper = helpers.unshareLabel || (depth0 != null ? depth0.unshareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"unshareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</span></a>\\n\t\t</li>\\n\t</ul>\\n</div>\\n\";\n},\"useData\":true});\ntemplates['sharedialogview'] = template({\"1\":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 \"\t<label for=\\\"shareWith-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"hidden-visually\\\">\"\n    + alias4(((helper = (helper = helpers.shareLabel || (depth0 != null ? depth0.shareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"shareLabel\",\"hash\":{},\"data\":data}) : helper)))\n    + \"</label>\\n\t<div class=\\\"oneline\\\">\\n\t\t<input id=\\\"shareWith-\"\n    + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cid\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" class=\\\"shareWithField\\\" type=\\\"text\\\" placeholder=\\\"\"\n    + alias4(((helper = (helper = helpers.sharePlaceholder || (depth0 != null ? depth0.sharePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"sharePlaceholder\",\"hash\":{},\"data\":data}) : helper)))\n    + \"\\\" />\\n\t\t<span class=\\\"shareWithLoading icon-loading-small hidden\\\"></span>\\n\t\t<span class=\\\"shareWithConfirm icon icon-confirm\\\"></span>\\n\t</div>\\n\";\n},\"compiler\":[7,\">= 4.0.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n    var stack1;\n\n  return \"<div class=\\\"resharerInfoView subView\\\"></div>\\n\"\n    + ((stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isSharingAllowed : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\")\n    + \"<div class=\\\"linkShareView subView\\\"></div>\\n<div class=\\\"shareeListView subView\\\"></div>\\n<div class=\\\"loading hidden\\\" style=\\\"height: 50px\\\"></div>\\n\";\n},\"useData\":true});\n})();","/*\n * Copyright (c) 2015\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(!OC.Share) {\n\t\tOC.Share = {};\n\t\tOC.Share.Types = {};\n\t}\n\n\t/**\n\t * @typedef {object} OC.Share.Types.LinkShareInfo\n\t * @property {string} token\n\t * @property {bool} hideDownload\n\t * @property {string|null} password\n\t * @property {bool} sendPasswordByTalk\n\t * @property {number} permissions\n\t * @property {Date} expiration\n\t * @property {number} stime share time\n\t */\n\n\t/**\n\t * @typedef {object} OC.Share.Types.Reshare\n\t * @property {string} uid_owner\n\t * @property {number} share_type\n\t * @property {string} share_with\n\t * @property {string} displayname_owner\n\t * @property {number} permissions\n\t */\n\n\t/**\n\t * @typedef {object} OC.Share.Types.ShareInfo\n\t * @property {number} share_type\n\t * @property {number} permissions\n\t * @property {number} file_source optional\n\t * @property {number} item_source\n\t * @property {string} token\n\t * @property {string} share_with\n\t * @property {string} share_with_displayname\n\t * @property {string} share_with_avatar\n\t * @property {string} mail_send\n\t * @property {Date} expiration optional?\n\t * @property {number} stime optional?\n\t * @property {string} uid_owner\n\t * @property {string} displayname_owner\n\t */\n\n\t/**\n\t * @typedef {object} OC.Share.Types.ShareItemInfo\n\t * @property {OC.Share.Types.Reshare} reshare\n\t * @property {OC.Share.Types.ShareInfo[]} shares\n\t * @property {OC.Share.Types.LinkShareInfo|undefined} linkShare\n\t */\n\n\t/**\n\t * These properties are sometimes returned by the server as strings instead\n\t * of integers, so we need to convert them accordingly...\n\t */\n\tvar SHARE_RESPONSE_INT_PROPS = [\n\t\t'id', 'file_parent', 'mail_send', 'file_source', 'item_source', 'permissions',\n\t\t'storage', 'share_type', 'parent', 'stime'\n\t];\n\n\t/**\n\t * @class OCA.Share.ShareItemModel\n\t * @classdesc\n\t *\n\t * Represents the GUI of the share dialogue\n\t *\n\t * // FIXME: use OC Share API once #17143 is done\n\t *\n\t * // TODO: this really should be a collection of share item models instead,\n\t * where the link share is one of them\n\t */\n\tvar ShareItemModel = OC.Backbone.Model.extend({\n\t\t/**\n\t\t * share id of the link share, if applicable\n\t\t */\n\t\t_linkShareId: null,\n\n\t\tinitialize: function(attributes, options) {\n\t\t\tif(!_.isUndefined(options.configModel)) {\n\t\t\t\tthis.configModel = options.configModel;\n\t\t\t}\n\t\t\tif(!_.isUndefined(options.fileInfoModel)) {\n\t\t\t\t/** @type {OC.Files.FileInfo} **/\n\t\t\t\tthis.fileInfoModel = options.fileInfoModel;\n\t\t\t}\n\n\t\t\t_.bindAll(this, 'addShare');\n\t\t},\n\n\t\tdefaults: {\n\t\t\tallowPublicUploadStatus: false,\n\t\t\tpermissions: 0,\n\t\t\tlinkShares: []\n\t\t},\n\n\t\t/**\n\t\t * Saves the current link share information.\n\t\t *\n\t\t * This will trigger an ajax call and, if successful, refetch the model\n\t\t * afterwards. Callbacks \"success\", \"error\" and \"complete\" can be given\n\t\t * in the options object; \"success\" is called after a successful save\n\t\t * once the model is refetch, \"error\" is called after a failed save, and\n\t\t * \"complete\" is called both after a successful save and after a failed\n\t\t * save. Note that \"complete\" is called before \"success\" and \"error\" are\n\t\t * called (unlike in jQuery, in which it is called after them); this\n\t\t * ensures that \"complete\" is called even if refetching the model fails.\n\t\t *\n\t\t * TODO: this should be a separate model\n\t\t */\n\t\tsaveLinkShare: function(attributes, options) {\n\t\t\toptions = options || {};\n\t\t\tattributes = _.extend({}, attributes);\n\n\t\t\tvar shareId = null;\n\t\t\tvar call;\n\n\t\t\t// oh yeah...\n\t\t\tif (attributes.expiration) {\n\t\t\t\tattributes.expireDate = attributes.expiration;\n\t\t\t\tdelete attributes.expiration;\n\t\t\t}\n\n\t\t\tvar linkShares = this.get('linkShares');\n\t\t\tvar shareIndex = _.findIndex(linkShares, function(share) {return share.id === attributes.cid})\n\n\t\t\tif (linkShares.length > 0 && shareIndex !== -1) {\n\t\t\t\tshareId = linkShares[shareIndex].id;\n\n\t\t\t\t// note: update can only update a single value at a time\n\t\t\t\tcall = this.updateShare(shareId, attributes, options);\n\t\t\t} else {\n\t\t\t\tattributes = _.defaults(attributes, {\n\t\t\t\t\thideDownload: false,\n\t\t\t\t\tpassword: '',\n\t\t\t\t\tpasswordChanged: false,\n\t\t\t\t\tsendPasswordByTalk: false,\n\t\t\t\t\tpermissions: OC.PERMISSION_READ,\n\t\t\t\t\texpireDate: this.configModel.getDefaultExpirationDateString(),\n\t\t\t\t\tshareType: OC.Share.SHARE_TYPE_LINK\n\t\t\t\t});\n\n\t\t\t\tcall = this.addShare(attributes, options);\n\t\t\t}\n\n\t\t\treturn call;\n\t\t},\n\n\t\taddShare: function(attributes, options) {\n\t\t\tvar shareType = attributes.shareType;\n\t\t\tattributes = _.extend({}, attributes);\n\n\t\t\t// get default permissions\n\t\t\tvar defaultPermissions = OC.getCapabilities()['files_sharing']['default_permissions'] || OC.PERMISSION_ALL;\n\t\t\tvar possiblePermissions = OC.PERMISSION_READ;\n\n\t\t\tif (this.updatePermissionPossible()) {\n\t\t\t\tpossiblePermissions = possiblePermissions | OC.PERMISSION_UPDATE;\n\t\t\t}\n\t\t\tif (this.createPermissionPossible()) {\n\t\t\t\tpossiblePermissions = possiblePermissions | OC.PERMISSION_CREATE;\n\t\t\t}\n\t\t\tif (this.deletePermissionPossible()) {\n\t\t\t\tpossiblePermissions = possiblePermissions | OC.PERMISSION_DELETE;\n\t\t\t}\n\t\t\tif (this.configModel.get('isResharingAllowed') && (this.sharePermissionPossible())) {\n\t\t\t\tpossiblePermissions = possiblePermissions | OC.PERMISSION_SHARE;\n\t\t\t}\n\n\t\t\tattributes.permissions = defaultPermissions & possiblePermissions;\n\t\t\tif (_.isUndefined(attributes.path)) {\n\t\t\t\tattributes.path = this.fileInfoModel.getFullPath();\n\t\t\t}\n\n\t\t\treturn this._addOrUpdateShare({\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: this._getUrl('shares'),\n\t\t\t\tdata: attributes,\n\t\t\t\tdataType: 'json'\n\t\t\t}, options);\n\t\t},\n\n\t\tupdateShare: function(shareId, attrs, options) {\n\t\t\treturn this._addOrUpdateShare({\n\t\t\t\ttype: 'PUT',\n\t\t\t\turl: this._getUrl('shares/' + encodeURIComponent(shareId)),\n\t\t\t\tdata: attrs,\n\t\t\t\tdataType: 'json'\n\t\t\t}, options);\n\t\t},\n\n\t\t_addOrUpdateShare: function(ajaxSettings, options) {\n\t\t\tvar self = this;\n\t\t\toptions = options || {};\n\n\t\t\treturn $.ajax(\n\t\t\t\tajaxSettings\n\t\t\t).always(function() {\n\t\t\t\tif (_.isFunction(options.complete)) {\n\t\t\t\t\toptions.complete(self);\n\t\t\t\t}\n\t\t\t}).done(function() {\n\t\t\t\tself.fetch().done(function() {\n\t\t\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t\t\toptions.success(self);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}).fail(function(xhr) {\n\t\t\t\tvar msg = t('core', 'Error');\n\t\t\t\tvar result = xhr.responseJSON;\n\t\t\t\tif (result && result.ocs && result.ocs.meta) {\n\t\t\t\t\tmsg = result.ocs.meta.message;\n\t\t\t\t}\n\n\t\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\t\toptions.error(self, msg);\n\t\t\t\t} else {\n\t\t\t\t\tOC.dialogs.alert(msg, t('core', 'Error while sharing'));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Deletes the share with the given id\n\t\t *\n\t\t * @param {int} shareId share id\n\t\t * @return {jQuery}\n\t\t */\n\t\tremoveShare: function(shareId, options) {\n\t\t\tvar self = this;\n\t\t\toptions = options || {};\n\t\t\treturn $.ajax({\n\t\t\t\ttype: 'DELETE',\n\t\t\t\turl: this._getUrl('shares/' + encodeURIComponent(shareId)),\n\t\t\t}).done(function() {\n\t\t\t\tself.fetch({\n\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t\t\t\toptions.success(self);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}).fail(function(xhr) {\n\t\t\t\tvar msg = t('core', 'Error');\n\t\t\t\tvar result = xhr.responseJSON;\n\t\t\t\tif (result.ocs && result.ocs.meta) {\n\t\t\t\t\tmsg = result.ocs.meta.message;\n\t\t\t\t}\n\n\t\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\t\toptions.error(self, msg);\n\t\t\t\t} else {\n\t\t\t\t\tOC.dialogs.alert(msg, t('core', 'Error removing share'));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisPublicUploadAllowed: function() {\n\t\t\treturn this.get('allowPublicUploadStatus');\n\t\t},\n\n\t\tisPublicEditingAllowed: function() {\n\t\t\treturn this.get('allowPublicEditingStatus');\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisHideFileListSet: function() {\n\t\t\treturn this.get('hideFileListStatus');\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisFolder: function() {\n\t\t\treturn this.get('itemType') === 'folder';\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tisFile: function() {\n\t\t\treturn this.get('itemType') === 'file';\n\t\t},\n\n\t\t/**\n\t\t * whether this item has reshare information\n\t\t * @returns {boolean}\n\t\t */\n\t\thasReshare: function() {\n\t\t\tvar reshare = this.get('reshare');\n\t\t\treturn _.isObject(reshare) && !_.isUndefined(reshare.uid_owner);\n\t\t},\n\n\t\t/**\n\t\t * whether this item has user share information\n\t\t * @returns {boolean}\n\t\t */\n\t\thasUserShares: function() {\n\t\t\treturn this.getSharesWithCurrentItem().length > 0;\n\t\t},\n\n\t\t/**\n\t\t * Returns whether this item has link shares\n\t\t *\n\t\t * @return {bool} true if a link share exists, false otherwise\n\t\t */\n\t\thasLinkShares: function() {\n\t\t\tvar linkShares = this.get('linkShares');\n\t\t\tif (linkShares && linkShares.length > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetReshareOwner: function() {\n\t\t\treturn this.get('reshare').uid_owner;\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetReshareOwnerDisplayname: function() {\n\t\t\treturn this.get('reshare').displayname_owner;\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetReshareNote: function() {\n\t\t\treturn this.get('reshare').note;\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetReshareWith: function() {\n\t\t\treturn this.get('reshare').share_with;\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t */\n\t\tgetReshareWithDisplayName: function() {\n\t\t\tvar reshare = this.get('reshare');\n\t\t\treturn reshare.share_with_displayname || reshare.share_with;\n\t\t},\n\n\t\t/**\n\t\t * @returns {number}\n\t\t */\n\t\tgetReshareType: function() {\n\t\t\treturn this.get('reshare').share_type;\n\t\t},\n\n\t\tgetExpireDate: function(shareIndex) {\n\t\t\treturn this._shareExpireDate(shareIndex);\n\t\t},\n\n\t\tgetNote: function(shareIndex) {\n\t\t\treturn this._shareNote(shareIndex);\n\t\t},\n\n\t\t/**\n\t\t * Returns all share entries that only apply to the current item\n\t\t * (file/folder)\n\t\t *\n\t\t * @return {Array.<OC.Share.Types.ShareInfo>}\n\t\t */\n\t\tgetSharesWithCurrentItem: function() {\n\t\t\tvar shares = this.get('shares') || [];\n\t\t\tvar fileId = this.fileInfoModel.get('id');\n\t\t\treturn _.filter(shares, function(share) {\n\t\t\t\treturn share.item_source === fileId;\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetShareWith: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.share_with;\n\t\t},\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetShareWithDisplayName: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.share_with_displayname;\n\t\t},\n\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetShareWithAvatar: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.share_with_avatar;\n\t\t},\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetSharedBy: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.uid_owner;\n\t\t},\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetSharedByDisplayName: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.displayname_owner;\n\t\t},\n\n\t\t/**\n\t\t * @param shareIndex\n\t\t * @returns {string}\n\t\t */\n\t\tgetFileOwnerUid: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.uid_file_owner;\n\t\t},\n\n\t\t/**\n\t\t * returns the array index of a sharee for a provided shareId\n\t\t *\n\t\t * @param shareId\n\t\t * @returns {number}\n\t\t */\n\t\tfindShareWithIndex: function(shareId) {\n\t\t\tvar shares = this.get('shares');\n\t\t\tif(!_.isArray(shares)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\tfor(var i = 0; i < shares.length; i++) {\n\t\t\t\tvar shareWith = shares[i];\n\t\t\t\tif(shareWith.id === shareId) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow \"Unknown Sharee\";\n\t\t},\n\n\t\tgetShareType: function(shareIndex) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.share_type;\n\t\t},\n\n\t\t/**\n\t\t * whether a share from shares has the requested permission\n\t\t *\n\t\t * @param {number} shareIndex\n\t\t * @param {number} permission\n\t\t * @returns {boolean}\n\t\t * @private\n\t\t */\n\t\t_shareHasPermission: function(shareIndex, permission) {\n\t\t\t/** @type OC.Share.Types.ShareInfo **/\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn (share.permissions & permission) === permission;\n\t\t},\n\n\n\t\t_shareExpireDate: function(shareIndex) {\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\tvar date2 = share.expiration;\n\t\t\treturn date2;\n\t\t},\n\n\n\t\t_shareNote: function(shareIndex) {\n\t\t\tvar share = this.get('shares')[shareIndex];\n\t\t\tif(!_.isObject(share)) {\n\t\t\t\tthrow \"Unknown Share\";\n\t\t\t}\n\t\t\treturn share.note;\n\t\t},\n\n\t\t/**\n\t\t * @return {int}\n\t\t */\n\t\tgetPermissions: function() {\n\t\t\treturn this.get('permissions');\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tsharePermissionPossible: function() {\n\t\t\treturn (this.get('permissions') & OC.PERMISSION_SHARE) === OC.PERMISSION_SHARE;\n\t\t},\n\n\t\t/**\n\t\t * @param {number} shareIndex\n\t\t * @returns {boolean}\n\t\t */\n\t\thasSharePermission: function(shareIndex) {\n\t\t\treturn this._shareHasPermission(shareIndex, OC.PERMISSION_SHARE);\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tcreatePermissionPossible: function() {\n\t\t\treturn (this.get('permissions') & OC.PERMISSION_CREATE) === OC.PERMISSION_CREATE;\n\t\t},\n\n\t\t/**\n\t\t * @param {number} shareIndex\n\t\t * @returns {boolean}\n\t\t */\n\t\thasCreatePermission: function(shareIndex) {\n\t\t\treturn this._shareHasPermission(shareIndex, OC.PERMISSION_CREATE);\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tupdatePermissionPossible: function() {\n\t\t\treturn (this.get('permissions') & OC.PERMISSION_UPDATE) === OC.PERMISSION_UPDATE;\n\t\t},\n\n\t\t/**\n\t\t * @param {number} shareIndex\n\t\t * @returns {boolean}\n\t\t */\n\t\thasUpdatePermission: function(shareIndex) {\n\t\t\treturn this._shareHasPermission(shareIndex, OC.PERMISSION_UPDATE);\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\tdeletePermissionPossible: function() {\n\t\t\treturn (this.get('permissions') & OC.PERMISSION_DELETE) === OC.PERMISSION_DELETE;\n\t\t},\n\n\t\t/**\n\t\t * @param {number} shareIndex\n\t\t * @returns {boolean}\n\t\t */\n\t\thasDeletePermission: function(shareIndex) {\n\t\t\treturn this._shareHasPermission(shareIndex, OC.PERMISSION_DELETE);\n\t\t},\n\n\t\thasReadPermission: function(shareIndex) {\n\t\t\treturn this._shareHasPermission(shareIndex, OC.PERMISSION_READ);\n\t\t},\n\n\t\t/**\n\t\t * @returns {boolean}\n\t\t */\n\t\teditPermissionPossible: function() {\n\t\t\treturn    this.createPermissionPossible()\n\t\t\t\t   || this.updatePermissionPossible()\n\t\t\t\t   || this.deletePermissionPossible();\n\t\t},\n\n\t\t/**\n\t\t * @returns {string}\n\t\t *     The state that the 'can edit' permission checkbox should have.\n\t\t *     Possible values:\n\t\t *     - empty string: no permission\n\t\t *     - 'checked': all applicable permissions\n\t\t *     - 'indeterminate': some but not all permissions\n\t\t */\n\t\teditPermissionState: function(shareIndex) {\n\t\t\tvar hcp = this.hasCreatePermission(shareIndex);\n\t\t\tvar hup = this.hasUpdatePermission(shareIndex);\n\t\t\tvar hdp = this.hasDeletePermission(shareIndex);\n\t\t\tif (this.isFile()) {\n\t\t\t\tif (hcp || hup || hdp) {\n\t\t\t\t\treturn 'checked';\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tif (!hcp && !hup && !hdp) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tif (   (this.createPermissionPossible() && !hcp)\n\t\t\t\t|| (this.updatePermissionPossible() && !hup)\n\t\t\t\t|| (this.deletePermissionPossible() && !hdp)   ) {\n\t\t\t\treturn 'indeterminate';\n\t\t\t}\n\t\t\treturn 'checked';\n\t\t},\n\n\t\t/**\n\t\t * @returns {int}\n\t\t */\n\t\tlinkSharePermissions: function(shareId) {\n\t\t\tvar linkShares = this.get('linkShares');\n\t\t\tvar shareIndex = _.findIndex(linkShares, function(share) {return share.id === shareId})\n\n\t\t\tif (!this.hasLinkShares()) {\n\t\t\t\treturn -1;\n\t\t\t} else if (linkShares.length > 0 && shareIndex !== -1) {\n\t\t\t\treturn linkShares[shareIndex].permissions;\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\n\t\t_getUrl: function(base, params) {\n\t\t\tparams = _.extend({format: 'json'}, params || {});\n\t\t\treturn OC.linkToOCS('apps/files_sharing/api/v1', 2) + base + '?' + OC.buildQueryString(params);\n\t\t},\n\n\t\t_fetchShares: function() {\n\t\t\tvar path = this.fileInfoModel.getFullPath();\n\t\t\treturn $.ajax({\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: this._getUrl('shares', {path: path, reshares: true})\n\t\t\t});\n\t\t},\n\n\t\t_fetchReshare: function() {\n\t\t\t// only fetch original share once\n\t\t\tif (!this._reshareFetched) {\n\t\t\t\tvar path = this.fileInfoModel.getFullPath();\n\t\t\t\tthis._reshareFetched = true;\n\t\t\t\treturn $.ajax({\n\t\t\t\t\ttype: 'GET',\n\t\t\t\t\turl: this._getUrl('shares', {path: path, shared_with_me: true})\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn $.Deferred().resolve([{\n\t\t\t\t\tocs: {\n\t\t\t\t\t\tdata: [this.get('reshare')]\n\t\t\t\t\t}\n\t\t\t\t}]);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Group reshares into a single super share element.\n\t\t * Does this by finding the most precise share and\n\t\t * combines the permissions to be the most permissive.\n\t\t *\n\t\t * @param {Array} reshares\n\t\t * @return {Object} reshare\n\t\t */\n\t\t_groupReshares: function(reshares) {\n\t\t\tif (!reshares || !reshares.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar superShare = reshares.shift();\n\t\t\tvar combinedPermissions = superShare.permissions;\n\t\t\t_.each(reshares, function(reshare) {\n\t\t\t\t// use share have higher priority than group share\n\t\t\t\tif (reshare.share_type === OC.Share.SHARE_TYPE_USER && superShare.share_type === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\t\tsuperShare = reshare;\n\t\t\t\t}\n\t\t\t\tcombinedPermissions |= reshare.permissions;\n\t\t\t});\n\n\t\t\tsuperShare.permissions = combinedPermissions;\n\t\t\treturn superShare;\n\t\t},\n\n\t\tfetch: function(options) {\n\t\t\tvar model = this;\n\t\t\tthis.trigger('request', this);\n\n\t\t\tvar deferred = $.when(\n\t\t\t\tthis._fetchShares(),\n\t\t\t\tthis._fetchReshare()\n\t\t\t);\n\t\t\tdeferred.done(function(data1, data2) {\n\t\t\t\tmodel.trigger('sync', 'GET', this);\n\t\t\t\tvar sharesMap = {};\n\t\t\t\t_.each(data1[0].ocs.data, function(shareItem) {\n\t\t\t\t\tsharesMap[shareItem.id] = shareItem;\n\t\t\t\t});\n\n\t\t\t\tvar reshare = false;\n\t\t\t\tif (data2[0].ocs.data.length) {\n\t\t\t\t\treshare = model._groupReshares(data2[0].ocs.data);\n\t\t\t\t}\n\n\t\t\t\tmodel.set(model.parse({\n\t\t\t\t\tshares: sharesMap,\n\t\t\t\t\treshare: reshare\n\t\t\t\t}));\n\n\t\t\t\tif(!_.isUndefined(options) && _.isFunction(options.success)) {\n\t\t\t\t\toptions.success();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn deferred;\n\t\t},\n\n\t\t/**\n\t\t * Updates OC.Share.itemShares and OC.Share.statuses.\n\t\t *\n\t\t * This is required in case the user navigates away and comes back,\n\t\t * the share statuses from the old arrays are still used to fill in the icons\n\t\t * in the file list.\n\t\t */\n\t\t_legacyFillCurrentShares: function(shares) {\n\t\t\tvar fileId = this.fileInfoModel.get('id');\n\t\t\tif (!shares || !shares.length) {\n\t\t\t\tdelete OC.Share.statuses[fileId];\n\t\t\t\tOC.Share.currentShares = {};\n\t\t\t\tOC.Share.itemShares = [];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar currentShareStatus = OC.Share.statuses[fileId];\n\t\t\tif (!currentShareStatus) {\n\t\t\t\tcurrentShareStatus = {link: false};\n\t\t\t\tOC.Share.statuses[fileId] = currentShareStatus;\n\t\t\t}\n\t\t\tcurrentShareStatus.link = false;\n\n\t\t\tOC.Share.currentShares = {};\n\t\t\tOC.Share.itemShares = [];\n\t\t\t_.each(shares,\n\t\t\t\t/**\n\t\t\t\t * @param {OC.Share.Types.ShareInfo} share\n\t\t\t\t */\n\t\t\t\tfunction(share) {\n\t\t\t\t\tif (share.share_type === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\tOC.Share.itemShares[share.share_type] = true;\n\t\t\t\t\t\tcurrentShareStatus.link = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!OC.Share.itemShares[share.share_type]) {\n\t\t\t\t\t\t\tOC.Share.itemShares[share.share_type] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tOC.Share.itemShares[share.share_type].push(share.share_with);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\tparse: function(data) {\n\t\t\tif(data === false) {\n\t\t\t\tconsole.warn('no data was returned');\n\t\t\t\tthis.trigger('fetchError');\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tvar permissions = this.fileInfoModel.get('permissions');\n\t\t\tif(!_.isUndefined(data.reshare) && !_.isUndefined(data.reshare.permissions) && data.reshare.uid_owner !== OC.currentUser) {\n\t\t\t\tpermissions = permissions & data.reshare.permissions;\n\t\t\t}\n\n\t\t\tvar allowPublicUploadStatus = false;\n\t\t\tif(!_.isUndefined(data.shares)) {\n\t\t\t\t$.each(data.shares, function (key, value) {\n\t\t\t\t\tif (value.share_type === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\tallowPublicUploadStatus = (value.permissions & OC.PERMISSION_CREATE) ? true : false;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar allowPublicEditingStatus = true;\n\t\t\tif(!_.isUndefined(data.shares)) {\n\t\t\t\t$.each(data.shares, function (key, value) {\n\t\t\t\t\tif (value.share_type === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\tallowPublicEditingStatus = (value.permissions & OC.PERMISSION_UPDATE) ? true : false;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\tvar hideFileListStatus = false;\n\t\t\tif(!_.isUndefined(data.shares)) {\n\t\t\t\t$.each(data.shares, function (key, value) {\n\t\t\t\t\tif (value.share_type === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\thideFileListStatus = (value.permissions & OC.PERMISSION_READ) ? false : true;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t/** @type {OC.Share.Types.ShareInfo[]} **/\n\t\t\tvar shares = _.map(data.shares, function(share) {\n\t\t\t\t// properly parse some values because sometimes the server\n\t\t\t\t// returns integers as string...\n\t\t\t\tvar i;\n\t\t\t\tfor (i = 0; i < SHARE_RESPONSE_INT_PROPS.length; i++) {\n\t\t\t\t\tvar prop = SHARE_RESPONSE_INT_PROPS[i];\n\t\t\t\t\tif (!_.isUndefined(share[prop])) {\n\t\t\t\t\t\tshare[prop] = parseInt(share[prop], 10);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn share;\n\t\t\t});\n\n\t\t\tthis._legacyFillCurrentShares(shares);\n\n\t\t\tvar linkShares =  [];\n\t\t\t// filter out the share by link\n\t\t\tshares = _.reject(shares,\n\t\t\t\t/**\n\t\t\t\t * @param {OC.Share.Types.ShareInfo} share\n\t\t\t\t */\n\t\t\t\tfunction(share) {\n\t\t\t\t\tvar isShareLink =\n\t\t\t\t\t\tshare.share_type === OC.Share.SHARE_TYPE_LINK\n\t\t\t\t\t\t&& (   share.file_source === this.get('itemSource')\n\t\t\t\t\t\t|| share.item_source === this.get('itemSource'));\n\n\t\t\t\t\tif (isShareLink) {\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Ignore reshared link shares for now\n\t\t\t\t\t\t * FIXME: Find a way to display properly\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (share.uid_owner !== OC.currentUser) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar link = window.location.protocol + '//' + window.location.host;\n\t\t\t\t\t\tif (!share.token) {\n\t\t\t\t\t\t\t// pre-token link\n\t\t\t\t\t\t\tvar fullPath = this.fileInfoModel.get('path') + '/' +\n\t\t\t\t\t\t\t\tthis.fileInfoModel.get('name');\n\t\t\t\t\t\t\tvar location = '/' + OC.currentUser + '/files' + fullPath;\n\t\t\t\t\t\t\tvar type = this.fileInfoModel.isDirectory() ? 'folder' : 'file';\n\t\t\t\t\t\t\tlink += OC.linkTo('', 'public.php') + '?service=files&' +\n\t\t\t\t\t\t\t\ttype + '=' + encodeURIComponent(location);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlink += OC.generateUrl('/s/') + share.token;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlinkShares.push(_.extend({}, share, {\n\t\t\t\t\t\t\t// hide_download is returned as an int, so force it\n\t\t\t\t\t\t\t// to a boolean\n\t\t\t\t\t\t\thideDownload: !!share.hide_download,\n\t\t\t\t\t\t\tpassword: share.share_with,\n\t\t\t\t\t\t\tsendPasswordByTalk: share.send_password_by_talk\n\t\t\t\t\t\t}));\n\n\t\t\t\t\t\treturn share;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\treshare: data.reshare,\n\t\t\t\tshares: shares,\n\t\t\t\tlinkShares: linkShares,\n\t\t\t\tpermissions: permissions,\n\t\t\t\tallowPublicUploadStatus: allowPublicUploadStatus,\n\t\t\t\tallowPublicEditingStatus: allowPublicEditingStatus,\n\t\t\t\thideFileListStatus: hideFileListStatus\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Parses a string to an valid integer (unix timestamp)\n\t\t * @param time\n\t\t * @returns {*}\n\t\t * @internal Only used to work around a bug in the backend\n\t\t */\n\t\t_parseTime: function(time) {\n\t\t\tif (_.isString(time)) {\n\t\t\t\t// skip empty strings and hex values\n\t\t\t\tif (time === '' || (time.length > 1 && time[0] === '0' && time[1] === 'x')) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\ttime = parseInt(time, 10);\n\t\t\t\tif(isNaN(time)) {\n\t\t\t\t\ttime = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn time;\n\t\t},\n\n\t\t/**\n\t\t * Returns a list of share types from the existing shares.\n\t\t *\n\t\t * @return {Array.<int>} array of share types\n\t\t */\n\t\tgetShareTypes: function() {\n\t\t\tvar result;\n\t\t\tresult = _.pluck(this.getSharesWithCurrentItem(), 'share_type');\n\t\t\tif (this.hasLinkShares()) {\n\t\t\t\tresult.push(OC.Share.SHARE_TYPE_LINK);\n\t\t\t}\n\t\t\treturn _.uniq(result);\n\t\t}\n\t});\n\n\tOC.Share.ShareItemModel = ShareItemModel;\n})();\n","/**\n * @copyright 2017, Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n(function() {\n\tif (!OC.Share) {\n\t\tOC.Share = {};\n\t}\n\n\tOC.Share.Social = {};\n\n\tvar SocialModel = OC.Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\t/** used for sorting social buttons */\n\t\t\tkey: null,\n\t\t\t/** url to open, {{reference}} will be replaced with the link */\n\t\t\turl: null,\n\t\t\t/** Name to show in the tooltip */\n\t\t\tname: null,\n\t\t\t/** Icon class to display */\n\t\t\ticonClass: null,\n\t\t\t/** Open in new windows */\n\t\t\tnewWindow: true\n\t\t}\n\t});\n\n\tOC.Share.Social.Model = SocialModel;\n\n\tvar SocialCollection = OC.Backbone.Collection.extend({\n\t\tmodel: OC.Share.Social.Model,\n\n\t\tcomparator: 'key'\n\t});\n\n\n\tOC.Share.Social.Collection = new SocialCollection;\n})();\n","/*\n * Copyright (c) 2015\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/* globals Handlebars */\n\n(function() {\n\tif (!OC.Share) {\n\t\tOC.Share = {};\n\t}\n\n\t/**\n\t * @class OCA.Share.ShareDialogView\n\t * @member {OC.Share.ShareItemModel} model\n\t * @member {jQuery} $el\n\t * @memberof OCA.Sharing\n\t * @classdesc\n\t *\n\t * Represents the GUI of the share dialogue\n\t *\n\t */\n\tvar ShareDialogResharerInfoView = OC.Backbone.View.extend({\n\t\t/** @type {string} **/\n\t\tid: 'shareDialogResharerInfo',\n\n\t\t/** @type {string} **/\n\t\ttagName: 'div',\n\n\t\t/** @type {string} **/\n\t\tclassName: 'reshare',\n\n\t\t/** @type {OC.Share.ShareConfigModel} **/\n\t\tconfigModel: undefined,\n\n\t\t/** @type {Function} **/\n\t\t_template: undefined,\n\n\t\tinitialize: function(options) {\n\t\t\tvar view = this;\n\n\t\t\tthis.model.on('change:reshare', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tif(!_.isUndefined(options.configModel)) {\n\t\t\t\tthis.configModel = options.configModel;\n\t\t\t} else {\n\t\t\t\tthrow 'missing OC.Share.ShareConfigModel';\n\t\t\t}\n\t\t},\n\n\t\trender: function() {\n\t\t\tif (!this.model.hasReshare()\n\t\t\t\t|| this.model.getReshareOwner() === OC.currentUser)\n\t\t\t{\n\t\t\t\tthis.$el.empty();\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tvar reshareTemplate = this.template();\n\t\t\tvar ownerDisplayName = this.model.getReshareOwnerDisplayname();\n\t\t\tvar shareNote = this.model.getReshareNote();\n\t\t\t\n\t\t\tvar sharedByText = '';\n\n\t\t\tif (this.model.getReshareType() === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\tsharedByText = t(\n\t\t\t\t\t'core',\n\t\t\t\t\t'Shared with you and the group {group} by {owner}',\n\t\t\t\t\t{\n\t\t\t\t\t\tgroup: this.model.getReshareWithDisplayName(),\n\t\t\t\t\t\towner: ownerDisplayName\n\t\t\t\t\t},\n\t\t\t\t\tundefined,\n\t\t\t\t\t{escape: false}\n\t\t\t\t);\n\t\t\t} else if (this.model.getReshareType() === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\tsharedByText = t(\n\t\t\t\t\t'core',\n\t\t\t\t\t'Shared with you and {circle} by {owner}',\n\t\t\t\t\t{\n\t\t\t\t\t\tcircle: this.model.getReshareWithDisplayName(),\n\t\t\t\t\t\towner: ownerDisplayName\n\t\t\t\t\t},\n\t\t\t\t\tundefined,\n\t\t\t\t\t{escape: false}\n\t\t\t\t);\n\t\t\t} else if (this.model.getReshareType() === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\tif (this.model.get('reshare').share_with_displayname) {\n\t\t\t\t\tsharedByText = t(\n\t\t\t\t\t\t'core',\n\t\t\t\t\t\t'Shared with you and the conversation {conversation} by {owner}',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconversation: this.model.getReshareWithDisplayName(),\n\t\t\t\t\t\t\towner: ownerDisplayName\n\t\t\t\t\t\t},\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{escape: false}\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tsharedByText = t(\n\t\t\t\t\t\t'core',\n\t\t\t\t\t\t'Shared with you in a conversation by {owner}',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\towner: ownerDisplayName\n\t\t\t\t\t\t},\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t{escape: false}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsharedByText = t(\n\t\t\t\t\t'core',\n\t\t\t\t\t'Shared with you by {owner}',\n\t\t\t\t\t{ owner: ownerDisplayName },\n\t\t\t\t\tundefined,\n\t\t\t\t\t{escape: false}\n\t\t\t\t);\n\t\t\t}\n\n\n\n\t\t\tthis.$el.html(reshareTemplate({\n\t\t\t\treshareOwner: this.model.getReshareOwner(),\n\t\t\t\tsharedByText: sharedByText,\n\t\t\t\tshareNote: shareNote,\n\t\t\t\thasShareNote: shareNote !== ''\n\t\t\t}));\n\n\t\t\tthis.$el.find('.avatar').each(function() {\n\t\t\t\tvar $this = $(this);\n\t\t\t\t$this.avatar($this.data('username'), 32);\n\t\t\t});\n\n\t\t\tthis.$el.find('.reshare').contactsMenu(\n\t\t\t\tthis.model.getReshareOwner(),\n\t\t\t\tOC.Share.SHARE_TYPE_USER,\n\t\t\t\tthis.$el);\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * @returns {Function} from Handlebars\n\t\t * @private\n\t\t */\n\t\ttemplate: function () {\n\t\t\treturn OC.Share.Templates['sharedialogresharerinfoview'];\n\t\t}\n\n\t});\n\n\tOC.Share.ShareDialogResharerInfoView = ShareDialogResharerInfoView;\n\n})();\n","/*\n * Copyright (c) 2015\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/* globals Clipboard, Handlebars */\n\n(function() {\n\tif (!OC.Share) {\n\t\tOC.Share = {};\n\t}\n\n\tvar PASSWORD_PLACEHOLDER = '**********';\n\tvar PASSWORD_PLACEHOLDER_MESSAGE = t('core', 'Choose a password for the public link');\n\tvar PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL = t('core', 'Choose a password for the public link or press the \"Enter\" key');\n\n\t/**\n\t * @class OCA.Share.ShareDialogLinkShareView\n\t * @member {OC.Share.ShareItemModel} model\n\t * @member {jQuery} $el\n\t * @memberof OCA.Sharing\n\t * @classdesc\n\t *\n\t * Represents the GUI of the share dialogue\n\t *\n\t */\n\tvar ShareDialogLinkShareView = OC.Backbone.View.extend({\n\t\t/** @type {string} **/\n\t\tid: 'shareDialogLinkShare',\n\n\t\t/** @type {OC.Share.ShareConfigModel} **/\n\t\tconfigModel: undefined,\n\n\t\t/** @type {boolean} **/\n\t\tshowLink: true,\n\n\t\t/** @type {boolean} **/\n\t\tshowPending: false,\n\n\t\t/** @type {string} **/\n\t\tpassword: '',\n\n\t\t/** @type {string} **/\n\t\tnewShareId: 'new-share',\n\n\t\tevents: {\n\t\t\t// open menu\n\t\t\t'click .share-menu .icon-more': 'onToggleMenu',\n\t\t\t// hide download\n\t\t\t'change .hideDownloadCheckbox': 'onHideDownloadChange',\n\t\t\t// password\n\t\t\t'click input.share-pass-submit': 'onPasswordEntered', \n\t\t\t'keyup input.linkPassText': 'onPasswordKeyUp', // check for the enter key\n\t\t\t'change .showPasswordCheckbox': 'onShowPasswordClick',\n\t\t\t'change .passwordByTalkCheckbox': 'onPasswordByTalkChange',\n\t\t\t'change .publicEditingCheckbox': 'onAllowPublicEditingChange',\n\t\t\t// copy link url\n\t\t\t'click .linkText': 'onLinkTextClick',\n\t\t\t// social\n\t\t\t'click .pop-up': 'onPopUpClick',\n\t\t\t// permission change\n\t\t\t'change .publicUploadRadio': 'onPublicUploadChange',\n\t\t\t// expire date\n\t\t\t'click .expireDate' : 'onExpireDateChange',\n\t\t\t'change .datepicker': 'onChangeExpirationDate',\n\t\t\t'click .datepicker' : 'showDatePicker',\n\t\t\t// note\n\t\t\t'click .share-add': 'showNoteForm',\n\t\t\t'click .share-note-delete': 'deleteNote',\n\t\t\t'click .share-note-submit': 'updateNote',\n\t\t\t// remove\n\t\t\t'click .unshare': 'onUnshare',\n\t\t\t// new share\n\t\t\t'click .new-share': 'newShare',\n\t\t\t// enforced pass set\n\t\t\t'submit .enforcedPassForm': 'enforcedPasswordSet',\n\t\t},\n\n\t\tinitialize: function(options) {\n\t\t\tvar view = this;\n\n\t\t\tthis.model.on('change:permissions', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tthis.model.on('change:itemType', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tthis.model.on('change:allowPublicUploadStatus', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tthis.model.on('change:hideFileListStatus', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tthis.model.on('change:linkShares', function(model, linkShares) {\n\t\t\t\t// The \"Password protect by Talk\" item is shown only when there\n\t\t\t\t// is a password. Unfortunately there is no fine grained\n\t\t\t\t// rendering of items in the link shares, so the whole view\n\t\t\t\t// needs to be rendered again when the password of a share\n\t\t\t\t// changes.\n\t\t\t\t// Note that this event handler is concerned only about password\n\t\t\t\t// changes; other changes in the link shares does not trigger\n\t\t\t\t// a rendering, so the view must be rendered again as needed in\n\t\t\t\t// those cases (for example, when a link share is removed).\n\t\t\t\t\n\t\t\t\tvar previousLinkShares = model.previous('linkShares');\n\t\t\t\tif (previousLinkShares.length !== linkShares.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar i;\n\t\t\t\tfor (i = 0; i < linkShares.length; i++) {\n\t\t\t\t\tif (linkShares[i].id !== previousLinkShares[i].id) {\n\t\t\t\t\t\t// A resorting should never happen, but just in case.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (linkShares[i].password !== previousLinkShares[i].password) {\n\t\t\t\t\t\tview.render();\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif(!_.isUndefined(options.configModel)) {\n\t\t\t\tthis.configModel = options.configModel;\n\t\t\t} else {\n\t\t\t\tthrow 'missing OC.Share.ShareConfigModel';\n\t\t\t}\n\n\t\t\tvar clipboard = new Clipboard('.clipboard-button');\n\t\t\tclipboard.on('success', function(e) {\n\t\t\t\tvar $trigger = $(e.trigger);\n\n\t\t\t\t$trigger.tooltip('hide')\n\t\t\t\t\t.attr('data-original-title', t('core', 'Copied!'))\n\t\t\t\t\t.tooltip('fixTitle')\n\t\t\t\t\t.tooltip({placement: 'bottom', trigger: 'manual'})\n\t\t\t\t\t.tooltip('show');\n\t\t\t\t_.delay(function() {\n\t\t\t\t\t$trigger.tooltip('hide')\n\t\t\t\t\t\t.attr('data-original-title', t('core', 'Copy link'))\n\t\t\t\t\t\t.tooltip('fixTitle')\n\t\t\t\t}, 3000);\n\t\t\t});\n\t\t\tclipboard.on('error', function (e) {\n\t\t\t\tvar $trigger = $(e.trigger);\n\t\t\t\tvar $menu = $trigger.next('.share-menu').find('.popovermenu');\n\t\t\t\tvar $linkTextMenu = $menu.find('li.linkTextMenu');\n\t\t\t\tvar $input = $linkTextMenu.find('.linkText');\n\n\t\t\t\tvar $li = $trigger.closest('li[data-share-id]');\n\t\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\t\t// show menu\n\t\t\t\tOC.showMenu(null, $menu);\n\n\t\t\t\tvar actionMsg = '';\n\t\t\t\tif (/iPhone|iPad/i.test(navigator.userAgent)) {\n\t\t\t\t\tactionMsg = t('core', 'Not supported!');\n\t\t\t\t} else if (/Mac/i.test(navigator.userAgent)) {\n\t\t\t\t\tactionMsg = t('core', 'Press ⌘-C to copy.');\n\t\t\t\t} else {\n\t\t\t\t\tactionMsg = t('core', 'Press Ctrl-C to copy.');\n\t\t\t\t}\n\n\t\t\t\t$linkTextMenu.removeClass('hidden');\n\t\t\t\t$input.select();\n\t\t\t\t$input.tooltip('hide')\n\t\t\t\t\t.attr('data-original-title', actionMsg)\n\t\t\t\t\t.tooltip('fixTitle')\n\t\t\t\t\t.tooltip({placement: 'bottom', trigger: 'manual'})\n\t\t\t\t\t.tooltip('show');\n\t\t\t\t_.delay(function () {\n\t\t\t\t\t$input.tooltip('hide');\n\t\t\t\t\t$input.attr('data-original-title', t('core', 'Copy'))\n\t\t\t\t\t\t  .tooltip('fixTitle');\n\t\t\t\t}, 3000);\n\t\t\t});\n\t\t},\n\n\t\tnewShare: function(event) {\n\t\t\tvar self = this;\n\t\t\tvar $target = $(event.target);\n\t\t\tvar $li = $target.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $loading = $li.find('.share-menu > .icon-loading-small');\n\n\t\t\tif(!$loading.hasClass('hidden') && this.password === '') {\n\t\t\t\t// in process\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// hide all icons and show loading\n\t\t\t$li.find('.icon').addClass('hidden');\n\t\t\t$loading.removeClass('hidden');\n\n\t\t\t// hide menu\n\t\t\tOC.hideMenus();\n\n\t\t\tvar shareData = {}\n\n\t\t\tvar isPasswordEnforced = this.configModel.get('enforcePasswordForPublicLink');\n\t\t\tvar isExpirationEnforced = this.configModel.get('isDefaultExpireDateEnforced');\n\n\t\t\t// set default expire date\n\t\t\tif (isExpirationEnforced) {\n\t\t\t\tvar defaultExpireDays = this.configModel.get('defaultExpireDate');\n\t\t\t\tvar expireDate = moment().add(defaultExpireDays, 'day').format('DD-MM-YYYY')\n\t\t\t\tshareData.expireDate = expireDate;\n\t\t\t}\n\n\t\t\t// if password is set, add to data\n\t\t\tif (isPasswordEnforced && this.password !== '') {\n\t\t\t\tshareData.password = this.password\n\t\t\t}\n\n\t\t\tvar newShareId = false;\n\n\t\t\t// We need a password before the share creation\n\t\t\tif (isPasswordEnforced && !this.showPending && this.password === '') {\n\t\t\t\tthis.showPending = shareId;\n\t\t\t\tvar self = this.render();\n\t\t\t\tself.$el.find('.pending #enforcedPassText').focus();\n\t\t\t} else {\n\t\t\t\t// else, we have a password or it is not enforced\n\t\t\t\t$.when(this.model.saveLinkShare(shareData, {\n\t\t\t\t\tsuccess: function() {\n\t\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t\t$li.find('.icon').removeClass('hidden');\n\t\t\t\t\t\tself.render();\n\t\t\t\t\t\t// open the menu by default\n\t\t\t\t\t\t// we can only do that after the render\n\t\t\t\t\t\tif (newShareId) {\n\t\t\t\t\t\t\tvar shares = self.$el.find('li[data-share-id]');\n\t\t\t\t\t\t\tvar $newShare = self.$el.find('li[data-share-id=\"'+newShareId+'\"]');\n\t\t\t\t\t\t\t// only open the menu by default if this is the first share\n\t\t\t\t\t\t\tif ($newShare && shares.length === 1) {\n\t\t\t\t\t\t\t\tvar $menu = $newShare.find('.popovermenu');\n\t\t\t\t\t\t\t\tOC.showMenu(null, $menu);\n\t\t\t\t\t\t\t}\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\t// empty function to override the default Dialog warning\n\t\t\t\t\t}\n\t\t\t\t})).fail(function(response) {\n\t\t\t\t\t// password failure? Show error\n\t\t\t\t\tself.password = ''\n\t\t\t\t\tif (isPasswordEnforced && response && response.responseJSON && response.responseJSON.ocs.meta && response.responseJSON.ocs.meta.message) {\n\t\t\t\t\t\tvar $input = self.$el.find('.pending #enforcedPassText')\n\t\t\t\t\t\t$input.tooltip('destroy');\n\t\t\t\t\t\t$input.attr('title', response.responseJSON.ocs.meta.message);\n\t\t\t\t\t\t$input.tooltip({placement: 'bottom', trigger: 'manual'});\n\t\t\t\t\t\t$input.tooltip('show');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Unable to create a link share'));\n\t\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t\t$li.find('.icon').removeClass('hidden');\n\t\t\t\t\t}\n\t\t\t\t}).then(function(response) {\n\t\t\t\t\t// resolve before success\n\t\t\t\t\tnewShareId = response.ocs.data.id\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tenforcedPasswordSet: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tvar $form = $(event.target);\n\t\t\tvar $input = $form.find('input.enforcedPassText');\n\t\t\tthis.password = $input.val();\n\t\t\tthis.showPending = false;\n\t\t\tthis.newShare(event);\n\t\t},\n\n\t\tonLinkTextClick: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar $el = $li.find('.linkText');\n\t\t\t$el.focus();\n\t\t\t$el.select();\n\t\t},\n\n\t\tonHideDownloadChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $checkbox = $li.find('.hideDownloadCheckbox');\n\t\t\t$checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');\n\n\t\t\tvar hideDownload = false;\n\t\t\tif($checkbox.is(':checked')) {\n\t\t\t\thideDownload = true;\n\t\t\t}\n\n\t\t\tthis.model.saveLinkShare({\n\t\t\t\thideDownload: hideDownload,\n\t\t\t\tcid: shareId\n\t\t\t}, {\n\t\t\t\tsuccess: function() {\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t},\n\t\t\t\terror: function(obj, msg) {\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Unable to toggle this option'));\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tonShowPasswordClick: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\t$li.find('.linkPass').slideToggle(OC.menuSpeed);\n\t\t\t$li.find('.linkPassMenu').toggleClass('hidden');\n\t\t\tif(!$li.find('.showPasswordCheckbox').is(':checked')) {\n\t\t\t\tthis.model.saveLinkShare({\n\t\t\t\t\tpassword: '',\n\t\t\t\t\tcid: shareId\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (!OC.Util.isIE()) {\n\t\t\t\t\t$li.find('.linkPassText').focus();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tonPasswordKeyUp: function(event) {\n\t\t\tif(event.keyCode === 13) {\n\t\t\t\tthis.onPasswordEntered(event);\n\t\t\t}\n\t\t},\n\n\t\tonPasswordEntered: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $loading = $li.find('.linkPassMenu .icon-loading-small');\n\t\t\tif (!$loading.hasClass('hidden')) {\n\t\t\t\t// still in process\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar $input = $li.find('.linkPassText');\n\t\t\t$input.removeClass('error');\n\t\t\t$input.parent().find('input').removeClass('error');\n\t\t\tvar password = $input.val();\n\n\t\t\tif ($li.find('.linkPassText').attr('placeholder') === PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL) {\n\n\t\t\t\t// in IE9 the password might be the placeholder due to bugs in the placeholders polyfill\n\t\t\t\tif(password === PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL) {\n\t\t\t\t\tpassword = '';\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// in IE9 the password might be the placeholder due to bugs in the placeholders polyfill\n\t\t\t\tif(password === '' || password === PASSWORD_PLACEHOLDER || password === PASSWORD_PLACEHOLDER_MESSAGE) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$loading\n\t\t\t\t.removeClass('hidden')\n\t\t\t\t.addClass('inlineblock');\n\n\t\t\tthis.model.saveLinkShare({\n\t\t\t\tpassword: password,\n\t\t\t\tcid: shareId\n\t\t\t}, {\n\t\t\t\tcomplete: function(model) {\n\t\t\t\t\t$loading.removeClass('inlineblock').addClass('hidden');\n\t\t\t\t},\n\t\t\t\terror: function(model, msg) {\n\t\t\t\t\t// Add visual feedback to both the input and the submit button\n\t\t\t\t\t$input.parent().find('input').addClass('error');\n\n\t\t\t\t\t// destroy old tooltips\n\t\t\t\t\tvar $container = $input.parent();\n\t\t\t\t\t$container.tooltip('destroy');\n\t\t\t\t\t$input.addClass('error');\n\t\t\t\t\t$container.attr('title', msg);\n\t\t\t\t\t$container.tooltip({placement: 'bottom', trigger: 'manual'});\n\t\t\t\t\t$container.tooltip('show');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tonPasswordByTalkChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $checkbox = $li.find('.passwordByTalkCheckbox');\n\t\t\t$checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');\n\n\t\t\tvar sendPasswordByTalk = false;\n\t\t\tif($checkbox.is(':checked')) {\n\t\t\t\tsendPasswordByTalk = true;\n\t\t\t}\n\n\t\t\tthis.model.saveLinkShare({\n\t\t\t\tsendPasswordByTalk: sendPasswordByTalk,\n\t\t\t\tcid: shareId\n\t\t\t}, {\n\t\t\t\tsuccess: function() {\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t},\n\t\t\t\terror: function(obj, msg) {\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Unable to toggle this option'));\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tonAllowPublicEditingChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $checkbox = $li.find('.publicEditingCheckbox');\n\t\t\t$checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');\n\n\t\t\tvar permissions = OC.PERMISSION_READ;\n\t\t\tif($checkbox.is(':checked')) {\n\t\t\t\tpermissions = OC.PERMISSION_UPDATE | OC.PERMISSION_READ;\n\t\t\t}\n\n\t\t\tthis.model.saveLinkShare({\n\t\t\t\tpermissions: permissions,\n\t\t\t\tcid: shareId\n\t\t\t}, {\n\t\t\t\tsuccess: function() {\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t},\n\t\t\t\terror: function(obj, msg) {\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Unable to toggle this option'));\n\t\t\t\t\t$checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\tonPublicUploadChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar permissions = event.currentTarget.value;\n\t\t\tthis.model.saveLinkShare({\n\t\t\t\tpermissions: permissions,\n\t\t\t\tcid: shareId\n\t\t\t});\n\t\t},\n\n\t\tshowNoteForm: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar $menu = $element.closest('li');\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\n\t\t\t// show elements\n\t\t\t$menu.find('.share-note-delete').toggleClass('hidden');\n\t\t\t$form.toggleClass('hidden');\n\t\t\t$form.find('textarea').focus();\n\t\t},\n\n\t\tdeleteNote: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $menu = $element.closest('li');\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\n\t\t\t$form.find('.share-note').val('');\n\n\t\t\t$form.addClass('hidden');\n\t\t\t$menu.find('.share-note-delete').addClass('hidden');\n\n\t\t\tself.sendNote('', shareId, $menu);\n\t\t},\n\n\t\tupdateNote: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $form = $element.closest('li.share-note-form');\n\t\t\tvar $menu = $form.prev('li');\n\t\t\tvar message = $form.find('.share-note').val().trim();\n\n\t\t\tif (message.length < 1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.sendNote(message, shareId, $menu);\n\t\t},\n\n\t\tsendNote: function(note, shareId, $menu) {\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\t\t\tvar $submit = $form.find('input.share-note-submit');\n\t\t\tvar $error = $form.find('input.share-note-error');\n\n\t\t\t$submit.prop('disabled', true);\n\t\t\t$menu.find('.icon-loading-small').removeClass('hidden');\n\t\t\t$menu.find('.icon-edit').hide();\n\n\t\t\tvar complete = function() {\n\t\t\t\t$submit.prop('disabled', false);\n\t\t\t\t$menu.find('.icon-loading-small').addClass('hidden');\n\t\t\t\t$menu.find('.icon-edit').show();\n\t\t\t};\n\t\t\tvar error = function() {\n\t\t\t\t$error.show();\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$error.hide();\n\t\t\t\t}, 3000);\n\t\t\t};\n\n\t\t\t// send data\n\t\t\t$.ajax({\n\t\t\t\tmethod: 'PUT',\n\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1/shares',2) + shareId + '?' + OC.buildQueryString({format: 'json'}),\n\t\t\t\tdata: { note: note },\n\t\t\t\tcomplete : complete,\n\t\t\t\terror: error\n\t\t\t});\n\t\t},\n\n\t\trender: function() {\n\t\t\tthis.$el.find('.has-tooltip').tooltip();\n\n\t\t\t// reset previously set passwords\n\t\t\tthis.password = '';\n\n\t\t\tvar linkShareTemplate = this.template();\n\t\t\tvar resharingAllowed = this.model.sharePermissionPossible();\n\n\t\t\tif(!resharingAllowed\n\t\t\t\t|| !this.showLink\n\t\t\t\t|| !this.configModel.isShareWithLinkAllowed())\n\t\t\t{\n\t\t\t\tvar templateData = {shareAllowed: false};\n\t\t\t\tif (!resharingAllowed) {\n\t\t\t\t\t// add message\n\t\t\t\t\ttemplateData.noSharingPlaceholder = t('core', 'Resharing is not allowed');\n\t\t\t\t}\n\t\t\t\tthis.$el.html(linkShareTemplate(templateData));\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tvar publicUpload =\n\t\t\t\tthis.model.isFolder()\n\t\t\t\t&& this.model.createPermissionPossible()\n\t\t\t\t&& this.configModel.isPublicUploadEnabled();\n\n\n\t\t\tvar publicEditingChecked = '';\n\t\t\tif(this.model.isPublicEditingAllowed()) {\n\t\t\t\tpublicEditingChecked = 'checked=\"checked\"';\n\t\t\t}\n\n\t\t\tvar isPasswordEnforced = this.configModel.get('enforcePasswordForPublicLink');\n\t\t\tvar isPasswordEnabledByDefault = this.configModel.get('enableLinkPasswordByDefault') === true;\n\t\t\tvar passwordPlaceholderInitial = this.configModel.get('enforcePasswordForPublicLink')\n\t\t\t\t? PASSWORD_PLACEHOLDER_MESSAGE : PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL;\n\n\t\t\tvar publicEditable =\n\t\t\t\t!this.model.isFolder()\n\t\t\t\t&& this.model.updatePermissionPossible();\n\n\t\t\tvar isExpirationEnforced = this.configModel.get('isDefaultExpireDateEnforced');\n\n\t\t\t// what if there is another date picker on that page?\n\t\t\tvar minDate = new Date();\n\t\t\t// min date should always be the next day\n\t\t\tminDate.setDate(minDate.getDate()+1);\n\n\t\t\t$.datepicker.setDefaults({\n\t\t\t\tminDate: minDate\n\t\t\t});\n\n\t\t\tthis.$el.find('.datepicker').datepicker({dateFormat : 'dd-mm-yy'});\n\n\t\t\tvar minPasswordLength = 4\n\t\t\t// password policy?\n\t\t\tif(oc_capabilities.password_policy && oc_capabilities.password_policy.minLength) {\n\t\t\t\tminPasswordLength = oc_capabilities.password_policy.minLength;\n\t\t\t}\n\n\t\t\tvar popoverBase = {\n\t\t\t\turlLabel: t('core', 'Link'),\n\t\t\t\thideDownloadLabel: t('core', 'Hide download'),\n\t\t\t\tenablePasswordLabel: isPasswordEnforced ? t('core', 'Password protection enforced') : t('core', 'Password protect'),\n\t\t\t\tpasswordLabel: t('core', 'Password'),\n\t\t\t\tpasswordPlaceholderInitial: passwordPlaceholderInitial,\n\t\t\t\tpublicUpload: publicUpload,\n\t\t\t\tpublicEditing: publicEditable,\n\t\t\t\tpublicEditingChecked: publicEditingChecked,\n\t\t\t\tpublicEditingLabel: t('core', 'Allow editing'),\n\t\t\t\tmailPrivatePlaceholder: t('core', 'Email link to person'),\n\t\t\t\tmailButtonText: t('core', 'Send'),\n\t\t\t\tpublicUploadRWLabel: t('core', 'Allow upload and editing'),\n\t\t\t\tpublicUploadRLabel: t('core', 'Read only'),\n\t\t\t\tpublicUploadWLabel: t('core', 'File drop (upload only)'),\n\t\t\t\tpublicUploadRWValue: OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ | OC.PERMISSION_DELETE,\n\t\t\t\tpublicUploadRValue: OC.PERMISSION_READ,\n\t\t\t\tpublicUploadWValue: OC.PERMISSION_CREATE,\n\t\t\t\texpireDateLabel: isExpirationEnforced ? t('core', 'Expiration date enforced') : t('core', 'Set expiration date'),\n\t\t\t\texpirationLabel: t('core', 'Expiration'),\n\t\t\t\texpirationDatePlaceholder: t('core', 'Expiration date'),\n\t\t\t\tisExpirationEnforced: isExpirationEnforced,\n\t\t\t\tisPasswordEnforced: isPasswordEnforced,\n\t\t\t\tdefaultExpireDate: moment().add(1, 'day').format('DD-MM-YYYY'), // Can't expire today\n\t\t\t\taddNoteLabel: t('core', 'Note to recipient'),\n\t\t\t\tunshareLabel: t('core', 'Unshare'),\n\t\t\t\tunshareLinkLabel: t('core', 'Delete share link'),\n\t\t\t\tnewShareLabel: t('core', 'Add another link'),\n\t\t\t};\n\n\t\t\tvar pendingPopover = {\n\t\t\t\tisPasswordEnforced: isPasswordEnforced,\n\t\t\t\tenforcedPasswordLabel: t('core', 'Password protection for links is mandatory'),\n\t\t\t\tpasswordPlaceholder: passwordPlaceholderInitial,\n\t\t\t\tminPasswordLength: minPasswordLength,\n\t\t\t};\n\t\t\tvar pendingPopoverMenu = this.pendingPopoverMenuTemplate(_.extend({}, pendingPopover))\n\n\t\t\tvar linkShares = this.getShareeList();\n\t\t\tif(_.isArray(linkShares)) {\n\t\t\t\tfor (var i = 0; i < linkShares.length; i++) {\n\t\t\t\t\tvar social = [];\n\t\t\t\t\tOC.Share.Social.Collection.each(function (model) {\n\t\t\t\t\t\tvar url = model.get('url');\n\t\t\t\t\t\turl = url.replace('{{reference}}', linkShares[i].shareLinkURL);\n\t\t\t\t\t\tsocial.push({\n\t\t\t\t\t\t\turl: url,\n\t\t\t\t\t\t\tlabel: t('core', 'Share to {name}', {name: model.get('name')}),\n\t\t\t\t\t\t\tname: model.get('name'),\n\t\t\t\t\t\t\ticonClass: model.get('iconClass'),\n\t\t\t\t\t\t\tnewWindow: model.get('newWindow')\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\tvar popover = this.getPopoverObject(linkShares[i])\n\t\t\t\t\tlinkShares[i].popoverMenu = this.popoverMenuTemplate(_.extend({}, popoverBase, popover, {social: social}));\n\t\t\t\t\tlinkShares[i].pendingPopoverMenu = pendingPopoverMenu\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.$el.html(linkShareTemplate({\n\t\t\t\tlinkShares: linkShares,\n\t\t\t\tshareAllowed: true,\n\t\t\t\tnolinkShares: linkShares.length === 0,\n\t\t\t\tnewShareLabel: t('core', 'Share link'),\n\t\t\t\tnewShareTitle: t('core', 'New share link'),\n\t\t\t\tpendingPopoverMenu: pendingPopoverMenu,\n\t\t\t\tshowPending: this.showPending === this.newShareId,\n\t\t\t\tnewShareId: this.newShareId,\n\t\t\t}));\n\n\t\t\tthis.delegateEvents();\n\n\t\t\t// new note autosize\n\t\t\tautosize(this.$el.find('.share-note-form .share-note'));\n\n\t\t\treturn this;\n\t\t},\n\n\t\tonToggleMenu: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar $menu = $li.find('.sharingOptionsGroup .popovermenu');\n\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\tOC.showMenu(null, $menu);\n\n\t\t\t// focus the password if not set and enforced\n\t\t\tvar isPasswordEnabledByDefault = this.configModel.get('enableLinkPasswordByDefault') === true;\n\t\t\tvar haspassword = $menu.find('.linkPassText').val() !== '';\n\n\t\t\tif (!haspassword && isPasswordEnabledByDefault) {\n\t\t\t\t$menu.find('.linkPassText').focus();\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @returns {Function} from Handlebars\n\t\t * @private\n\t\t */\n\t\ttemplate: function () {\n\t\t\treturn OC.Share.Templates['sharedialoglinkshareview'];\n\t\t},\n\n\t\t/**\n\t\t * renders the popover template and returns the resulting HTML\n\t\t *\n\t\t * @param {Object} data\n\t\t * @returns {string}\n\t\t */\n\t\tpopoverMenuTemplate: function(data) {\n\t\t\treturn OC.Share.Templates['sharedialoglinkshareview_popover_menu'](data);\n\t\t},\n\n\t\t/**\n\t\t * renders the pending popover template and returns the resulting HTML\n\t\t *\n\t\t * @param {Object} data\n\t\t * @returns {string}\n\t\t */\n\t\tpendingPopoverMenuTemplate: function(data) {\n\t\t\treturn OC.Share.Templates['sharedialoglinkshareview_popover_menu_pending'](data);\n\t\t},\n\n\t\tonPopUpClick: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\n\t\t\tvar url = $(event.currentTarget).data('url');\n\t\t\tvar newWindow = $(event.currentTarget).data('window');\n\t\t\t$(event.currentTarget).tooltip('hide');\n\t\t\tif (url) {\n\t\t\t\tif (newWindow === true) {\n\t\t\t\t\tvar width = 600;\n\t\t\t\t\tvar height = 400;\n\t\t\t\t\tvar left = (screen.width / 2) - (width / 2);\n\t\t\t\t\tvar top = (screen.height / 2) - (height / 2);\n\n\t\t\t\t\twindow.open(url, 'name', 'width=' + width + ', height=' + height + ', top=' + top + ', left=' + left);\n\t\t\t\t} else {\n\t\t\t\t\twindow.location.href = url;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tonExpireDateChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar expirationDatePicker = '#expirationDateContainer-' + shareId;\n\t\t\tvar datePicker = $(expirationDatePicker);\n\t\t\tvar state = $element.prop('checked');\n\t\t\tdatePicker.toggleClass('hidden', !state);\n\n\t\t\tif (!state) {\n\t\t\t\t// disabled, let's hide the input and\n\t\t\t\t// set the expireDate to nothing\n\t\t\t\t$element.closest('li').next('li').addClass('hidden');\n\t\t\t\tthis.setExpirationDate('', shareId);\n\t\t\t} else {\n\t\t\t\t// enabled, show the input and the datepicker\n\t\t\t\t$element.closest('li').next('li').removeClass('hidden');\n\t\t\t\tthis.showDatePicker(event);\n\n\t\t\t}\n\t\t},\n\n\t\tshowDatePicker: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar maxDate = $element.data('max-date');\n\t\t\tvar expirationDatePicker = '#expirationDatePicker-' + shareId;\n\t\t\tvar self = this;\n\n\t\t\t$(expirationDatePicker).datepicker({\n\t\t\t\tdateFormat : 'dd-mm-yy',\n\t\t\t\tonSelect: function (expireDate) {\n\t\t\t\t\tself.setExpirationDate(expireDate, shareId);\n\t\t\t\t},\n\t\t\t\tmaxDate: maxDate\n\t\t\t});\n\t\t\t$(expirationDatePicker).datepicker('show');\n\t\t\t$(expirationDatePicker).focus();\n\n\t\t},\n\n\t\tsetExpirationDate: function(expireDate, shareId) {\n\t\t\tthis.model.saveLinkShare({expireDate: expireDate, cid: shareId});\n\t\t},\n\n\t\tonChangeExpirationDate: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar expireDate = $element.val();\n\t\t\tvar li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar expirationDatePicker = '#expirationDatePicker-' + shareId;\n\n\t\t\tthis.setExpirationDate(expireDate, shareId);\n\t\t\t$(expirationDatePicker).datepicker('hide');\n\t\t},\n\n\t\t/**\n\t\t * get an array of sharees' share properties\n\t\t *\n\t\t * @returns {Array}\n\t\t */\n\t\tgetShareeList: function() {\n\t\t\tvar shares = this.model.get('linkShares');\n\n\t\t\tif(!this.model.hasLinkShares()) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tvar list = [];\n\t\t\tfor(var index = 0; index < shares.length; index++) {\n\t\t\t\tvar share = this.getShareeObject(index);\n\t\t\t\t// first empty {} is necessary, otherwise we get in trouble\n\t\t\t\t// with references\n\t\t\t\tlist.push(_.extend({}, share));\n\t\t\t}\n\n\t\t\treturn list;\n\t\t},\n\n\t\t/**\n\t\t *\n\t\t * @param {OC.Share.Types.ShareInfo} shareInfo\n\t\t * @returns {object}\n\t\t */\n\t\tgetShareeObject: function(shareIndex) {\n\t\t\tvar share = this.model.get('linkShares')[shareIndex];\n\n\t\t\treturn _.extend({}, share, {\n\t\t\t\tcid: share.id,\n\t\t\t\tshareAllowed: true,\n\t\t\t\tlinkShareLabel: share.label ? share.label : t('core', 'Share link'),\n\t\t\t\tpopoverMenu: {},\n\t\t\t\tshareLinkURL: share.url,\n\t\t\t\tnewShareTitle: t('core', 'New share link'),\n\t\t\t\tcopyLabel: t('core', 'Copy link'),\n\t\t\t\tshowPending: this.showPending === share.id,\n\t\t\t\tlinkShareCreationDate: t('core', 'Created on {time}', { time: moment(share.stime * 1000).format('LLLL') })\n\t\t\t})\n\t\t},\n\n\t\tgetPopoverObject: function(share) {\n\t\t\tvar publicUploadRWChecked = '';\n\t\t\tvar publicUploadRChecked = '';\n\t\t\tvar publicUploadWChecked = '';\n\n\t\t\tswitch (this.model.linkSharePermissions(share.id)) {\n\t\t\t\tcase OC.PERMISSION_READ:\n\t\t\t\t\tpublicUploadRChecked = 'checked';\n\t\t\t\t\tbreak;\n\t\t\t\tcase OC.PERMISSION_CREATE:\n\t\t\t\t\tpublicUploadWChecked = 'checked';\n\t\t\t\t\tbreak;\n\t\t\t\tcase OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ | OC.PERMISSION_DELETE:\n\t\t\t\t\tpublicUploadRWChecked = 'checked';\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar isPasswordSet = !!share.password;\n\t\t\tvar isPasswordEnabledByDefault = this.configModel.get('enableLinkPasswordByDefault') === true;\n\t\t\tvar isPasswordEnforced = this.configModel.get('enforcePasswordForPublicLink');\n\t\t\tvar isExpirationEnforced = this.configModel.get('isDefaultExpireDateEnforced');\n\t\t\tvar defaultExpireDays = this.configModel.get('defaultExpireDate');\n\t\t\tvar hasExpireDate = !!share.expiration || isExpirationEnforced;\n\n\t\t\tvar expireDate;\n\t\t\tif (hasExpireDate) {\n\t\t\t\texpireDate = moment(share.expiration, 'YYYY-MM-DD').format('DD-MM-YYYY');\n\t\t\t}\n\n\t\t\tvar isTalkEnabled = oc_appswebroots['spreed'] !== undefined;\n\t\t\tvar sendPasswordByTalk = share.sendPasswordByTalk;\n\n\t\t\tvar hideDownload = share.hideDownload;\n\n\t\t\tvar maxDate = null;\n\n\t\t\tif(hasExpireDate) {\n\t\t\t\tif(isExpirationEnforced) {\n\t\t\t\t\t// TODO: hack: backend returns string instead of integer\n\t\t\t\t\tvar shareTime = share.stime;\n\t\t\t\t\tif (_.isNumber(shareTime)) {\n\t\t\t\t\t\tshareTime = new Date(shareTime * 1000);\n\t\t\t\t\t}\n\t\t\t\t\tif (!shareTime) {\n\t\t\t\t\t\tshareTime = new Date(); // now\n\t\t\t\t\t}\n\t\t\t\t\tshareTime = OC.Util.stripTime(shareTime).getTime();\n\t\t\t\t\tmaxDate = new Date(shareTime + defaultExpireDays * 24 * 3600 * 1000);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcid: share.id,\n\t\t\t\tshareLinkURL: share.url,\n\t\t\t\tpasswordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,\n\t\t\t\tisPasswordSet: isPasswordSet || isPasswordEnabledByDefault || isPasswordEnforced,\n\t\t\t\tshowPasswordByTalkCheckBox: isTalkEnabled && isPasswordSet,\n\t\t\t\tpasswordByTalkLabel: t('core', 'Password protect by Talk'),\n\t\t\t\tisPasswordByTalkSet: sendPasswordByTalk,\n\t\t\t\tpublicUploadRWChecked: publicUploadRWChecked,\n\t\t\t\tpublicUploadRChecked: publicUploadRChecked,\n\t\t\t\tpublicUploadWChecked: publicUploadWChecked,\n\t\t\t\thasExpireDate: hasExpireDate,\n\t\t\t\texpireDate: expireDate,\n\t\t\t\tshareNote: share.note,\n\t\t\t\thasNote: share.note !== '',\n\t\t\t\tmaxDate: maxDate,\n\t\t\t\thideDownload: hideDownload,\n\t\t\t\tisExpirationEnforced: isExpirationEnforced,\n\t\t\t}\n\t\t},\n\n\t\tonUnshare: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tif (!$element.is('a')) {\n\t\t\t\t$element = $element.closest('a');\n\t\t\t}\n\n\t\t\tvar $loading = $element.find('.icon-loading-small').eq(0);\n\t\t\tif(!$loading.hasClass('hidden')) {\n\t\t\t\t// in process\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t$loading.removeClass('hidden');\n\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\n\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\tself.model.removeShare(shareId, {\n\t\t\t\tsuccess: function() {\n\t\t\t\t\t$li.remove();\n\t\t\t\t\tself.render()\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\tOC.Notification.showTemporary(t('core', 'Could not unshare'));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn false;\n\t\t},\n\n\n\t});\n\n\tOC.Share.ShareDialogLinkShareView = ShareDialogLinkShareView;\n\n})();\n","/* global OC, Handlebars */\n\n/*\n * Copyright (c) 2015\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/* globals Handlebars */\n\n(function() {\n\n\tvar PASSWORD_PLACEHOLDER = '**********';\n\tvar PASSWORD_PLACEHOLDER_MESSAGE = t('core', 'Choose a password for the mail share');\n\n\tif (!OC.Share) {\n\t\tOC.Share = {};\n\t}\n\n\t/**\n\t * @class OCA.Share.ShareDialogShareeListView\n\t * @member {OC.Share.ShareItemModel} model\n\t * @member {jQuery} $el\n\t * @memberof OCA.Sharing\n\t * @classdesc\n\t *\n\t * Represents the sharee list part in the GUI of the share dialogue\n\t *\n\t */\n\tvar ShareDialogShareeListView = OC.Backbone.View.extend({\n\t\t/** @type {string} **/\n\t\tid: 'shareDialogLinkShare',\n\n\t\t/** @type {OC.Share.ShareConfigModel} **/\n\t\tconfigModel: undefined,\n\n\t\t_menuOpen: false,\n\n\t\t/** @type {boolean|number} **/\n\t\t_renderPermissionChange: false,\n\n\t\tevents: {\n\t\t\t'click .unshare': 'onUnshare',\n\t\t\t'click .share-add': 'showNoteForm',\n\t\t\t'click .share-note-delete': 'deleteNote',\n\t\t\t'click .share-note-submit': 'updateNote',\n\t\t\t'click .share-menu .icon-more': 'onToggleMenu',\n\t\t\t'click .permissions': 'onPermissionChange',\n\t\t\t'click .expireDate' : 'onExpireDateChange',\n\t\t\t'click .password' : 'onMailSharePasswordProtectChange',\n\t\t\t'click .passwordByTalk' : 'onMailSharePasswordProtectByTalkChange',\n\t\t\t'click .secureDrop' : 'onSecureDropChange',\n\t\t\t'keyup input.passwordField': 'onMailSharePasswordKeyUp',\n\t\t\t'focusout input.passwordField': 'onMailSharePasswordEntered',\n\t\t\t'change .datepicker': 'onChangeExpirationDate',\n\t\t\t'click .datepicker' : 'showDatePicker'\n\t\t},\n\n\t\tinitialize: function(options) {\n\t\t\tif(!_.isUndefined(options.configModel)) {\n\t\t\t\tthis.configModel = options.configModel;\n\t\t\t} else {\n\t\t\t\tthrow 'missing OC.Share.ShareConfigModel';\n\t\t\t}\n\n\t\t\tvar view = this;\n\t\t\tthis.model.on('change:shares', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t *\n\t\t * @param {OC.Share.Types.ShareInfo} shareInfo\n\t\t * @returns {object}\n\t\t */\n\t\tgetShareeObject: function(shareIndex) {\n\t\t\tvar shareWith = this.model.getShareWith(shareIndex);\n\t\t\tvar shareWithDisplayName = this.model.getShareWithDisplayName(shareIndex);\n\t\t\tvar shareWithAvatar = this.model.getShareWithAvatar(shareIndex);\n\t\t\tvar shareWithTitle = '';\n\t\t\tvar shareType = this.model.getShareType(shareIndex);\n\t\t\tvar sharedBy = this.model.getSharedBy(shareIndex);\n\t\t\tvar sharedByDisplayName = this.model.getSharedByDisplayName(shareIndex);\n\t\t\tvar fileOwnerUid = this.model.getFileOwnerUid(shareIndex);\n\n\t\t\tvar hasPermissionOverride = {};\n\t\t\tif (shareType === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\tshareWithDisplayName = shareWithDisplayName + \" (\" + t('core', 'group') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\tshareWithDisplayName = shareWithDisplayName + \" (\" + t('core', 'remote') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\tshareWithDisplayName = shareWithDisplayName + \" (\" + t('core', 'remote group') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\tshareWithDisplayName = shareWithDisplayName + \" (\" + t('core', 'email') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\tshareWithDisplayName = shareWithDisplayName + \" (\" + t('core', 'conversation') + ')';\n\t\t\t}\n\n\t\t\tif (shareType === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\tshareWithTitle = shareWith + \" (\" + t('core', 'group') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\tshareWithTitle = shareWith + \" (\" + t('core', 'remote') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\tshareWithTitle = shareWith + \" (\" + t('core', 'remote group') + ')';\n\t\t\t}\n\t\t\telse if (shareType === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\tshareWithTitle = shareWith + \" (\" + t('core', 'email') + ')';\n\t\t\t} else if (shareType === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\tshareWithTitle = shareWith;\n\t\t\t\t// Force \"shareWith\" in the template to a safe value, as the\n\t\t\t\t// original \"shareWith\" returned by the model may contain\n\t\t\t\t// problematic characters like \"'\".\n\t\t\t\tshareWith = 'circle-' + shareIndex;\n\t\t\t}\n\n\t\t\tif (sharedBy !== oc_current_user) {\n\t\t\t\tvar empty = shareWithTitle === '';\n\t\t\t\tif (!empty) {\n\t\t\t\t\tshareWithTitle += ' (';\n\t\t\t\t}\n\t\t\t\tshareWithTitle += t('core', 'shared by {sharer}', {sharer: sharedByDisplayName});\n\t\t\t\tif (!empty) {\n\t\t\t\t\tshareWithTitle += ')';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar share = this.model.get('shares')[shareIndex];\n\t\t\tvar password = share.password;\n\t\t\tvar hasPassword = password !== null && password !== '';\n\t\t\tvar sendPasswordByTalk = share.send_password_by_talk;\n\n\t\t\tvar shareNote = this.model.getNote(shareIndex);\n\n\t\t\treturn _.extend(hasPermissionOverride, {\n\t\t\t\tcid: this.cid,\n\t\t\t\thasSharePermission: this.model.hasSharePermission(shareIndex),\n\t\t\t\teditPermissionState: this.model.editPermissionState(shareIndex),\n\t\t\t\thasCreatePermission: this.model.hasCreatePermission(shareIndex),\n\t\t\t\thasUpdatePermission: this.model.hasUpdatePermission(shareIndex),\n\t\t\t\thasDeletePermission: this.model.hasDeletePermission(shareIndex),\n\t\t\t\tsharedBy: sharedBy,\n\t\t\t\tsharedByDisplayName: sharedByDisplayName,\n\t\t\t\tshareWith: shareWith,\n\t\t\t\tshareWithDisplayName: shareWithDisplayName,\n\t\t\t\tshareWithAvatar: shareWithAvatar,\n\t\t\t\tshareWithTitle: shareWithTitle,\n\t\t\t\tshareType: shareType,\n\t\t\t\tshareId: this.model.get('shares')[shareIndex].id,\n\t\t\t\tmodSeed: shareWithAvatar || (shareType !== OC.Share.SHARE_TYPE_USER && shareType !== OC.Share.SHARE_TYPE_CIRCLE && shareType !== OC.Share.SHARE_TYPE_ROOM),\n\t\t\t\towner: fileOwnerUid,\n\t\t\t\tisShareWithCurrentUser: (shareType === OC.Share.SHARE_TYPE_USER && shareWith === oc_current_user),\n\t\t\t\tcanUpdateShareSettings: (sharedBy === oc_current_user || fileOwnerUid === oc_current_user),\n\t\t\t\tisRemoteShare: shareType === OC.Share.SHARE_TYPE_REMOTE,\n\t\t\t\tisRemoteGroupShare: shareType === OC.Share.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tisNoteAvailable: shareType !== OC.Share.SHARE_TYPE_REMOTE && shareType !== OC.Share.SHARE_TYPE_REMOTE_GROUP,\n\t\t\t\tisMailShare: shareType === OC.Share.SHARE_TYPE_EMAIL,\n\t\t\t\tisCircleShare: shareType === OC.Share.SHARE_TYPE_CIRCLE,\n\t\t\t\tisFileSharedByMail: shareType === OC.Share.SHARE_TYPE_EMAIL && !this.model.isFolder(),\n\t\t\t\tisPasswordSet: hasPassword && !sendPasswordByTalk,\n\t\t\t\tisPasswordByTalkSet: hasPassword && sendPasswordByTalk,\n\t\t\t\tisTalkEnabled: oc_appswebroots['spreed'] !== undefined,\n\t\t\t\tsecureDropMode: !this.model.hasReadPermission(shareIndex),\n\t\t\t\thasExpireDate: this.model.getExpireDate(shareIndex) !== null,\n\t\t\t\tshareNote: shareNote,\n\t\t\t\thasNote: shareNote !== '',\n\t\t\t\texpireDate: moment(this.model.getExpireDate(shareIndex), 'YYYY-MM-DD').format('DD-MM-YYYY'),\n\t\t\t\t// The password placeholder does not take into account if\n\t\t\t\t// sending the password by Talk is enabled or not; when\n\t\t\t\t// switching from sending the password by Talk to sending the\n\t\t\t\t// password by email the password is reused and the share\n\t\t\t\t// updated, so the placeholder already shows the password in the\n\t\t\t\t// brief time between disabling sending the password by email\n\t\t\t\t// and receiving the updated share.\n\t\t\t\tpasswordPlaceholder: hasPassword ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,\n\t\t\t\tpasswordByTalkPlaceholder: (hasPassword && sendPasswordByTalk)? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,\n\t\t\t});\n\t\t},\n\n\t\tgetShareProperties: function() {\n\t\t\treturn {\n\t\t\t\tunshareLabel: t('core', 'Unshare'),\n\t\t\t\taddNoteLabel: t('core', 'Note to recipient'),\n\t\t\t\tcanShareLabel: t('core', 'Can reshare'),\n\t\t\t\tcanEditLabel: t('core', 'Can edit'),\n\t\t\t\tcreatePermissionLabel: t('core', 'Can create'),\n\t\t\t\tupdatePermissionLabel: t('core', 'Can change'),\n\t\t\t\tdeletePermissionLabel: t('core', 'Can delete'),\n\t\t\t\tsecureDropLabel: t('core', 'File drop (upload only)'),\n\t\t\t\texpireDateLabel: t('core', 'Set expiration date'),\n\t\t\t\tpasswordLabel: t('core', 'Password protect'),\n\t\t\t\tpasswordByTalkLabel: t('core', 'Password protect by Talk'),\n\t\t\t\tcrudsLabel: t('core', 'Access control'),\n\t\t\t\texpirationDatePlaceholder: t('core', 'Expiration date'),\n\t\t\t\tdefaultExpireDate: moment().add(1, 'day').format('DD-MM-YYYY'), // Can't expire today\n\t\t\t\ttriangleSImage: OC.imagePath('core', 'actions/triangle-s'),\n\t\t\t\tisResharingAllowed: this.configModel.get('isResharingAllowed'),\n\t\t\t\tisPasswordForMailSharesRequired: this.configModel.get('isPasswordForMailSharesRequired'),\n\t\t\t\tsharePermissionPossible: this.model.sharePermissionPossible(),\n\t\t\t\teditPermissionPossible: this.model.editPermissionPossible(),\n\t\t\t\tcreatePermissionPossible: this.model.createPermissionPossible(),\n\t\t\t\tupdatePermissionPossible: this.model.updatePermissionPossible(),\n\t\t\t\tdeletePermissionPossible: this.model.deletePermissionPossible(),\n\t\t\t\tsharePermission: OC.PERMISSION_SHARE,\n\t\t\t\tcreatePermission: OC.PERMISSION_CREATE,\n\t\t\t\tupdatePermission: OC.PERMISSION_UPDATE,\n\t\t\t\tdeletePermission: OC.PERMISSION_DELETE,\n\t\t\t\treadPermission: OC.PERMISSION_READ,\n\t\t\t\tisFolder: this.model.isFolder()\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * get an array of sharees' share properties\n\t\t *\n\t\t * @returns {Array}\n\t\t */\n\t\tgetShareeList: function() {\n\t\t\tvar universal = this.getShareProperties();\n\n\t\t\tif(!this.model.hasUserShares()) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tvar shares = this.model.get('shares');\n\t\t\tvar list = [];\n\t\t\tfor(var index = 0; index < shares.length; index++) {\n\t\t\t\tvar share = this.getShareeObject(index);\n\n\t\t\t\tif (share.shareType === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// first empty {} is necessary, otherwise we get in trouble\n\t\t\t\t// with references\n\t\t\t\tlist.push(_.extend({}, universal, share));\n\t\t\t}\n\n\t\t\treturn list;\n\t\t},\n\n\t\tgetLinkReshares: function() {\n\t\t\tvar universal = {\n\t\t\t\tunshareLabel: t('core', 'Unshare'),\n\t\t\t};\n\n\t\t\tif(!this.model.hasUserShares()) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tvar shares = this.model.get('shares');\n\t\t\tvar list = [];\n\t\t\tfor(var index = 0; index < shares.length; index++) {\n\t\t\t\tvar share = this.getShareeObject(index);\n\n\t\t\t\tif (share.shareType !== OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// first empty {} is necessary, otherwise we get in trouble\n\t\t\t\t// with references\n\t\t\t\tlist.push(_.extend({}, universal, share, {\n\t\t\t\t\tshareInitiator: shares[index].uid_owner,\n\t\t\t\t\tshareInitiatorText: t('core', '{shareInitiatorDisplayName} shared via link', {shareInitiatorDisplayName: shares[index].displayname_owner})\n\t\t\t\t}));\n\t\t\t}\n\n\t\t\treturn list;\n\t\t},\n\n\t\trender: function() {\n\t\t\tif(!this._renderPermissionChange) {\n\t\t\t\tthis.$el.html(this.template({\n\t\t\t\t\tcid: this.cid,\n\t\t\t\t\tsharees: this.getShareeList(),\n\t\t\t\t\tlinkReshares: this.getLinkReshares()\n\t\t\t\t}));\n\n\t\t\t\tthis.$('.avatar').each(function () {\n\t\t\t\t\tvar $this = $(this);\n\n\t\t\t\t\tif ($this.hasClass('imageplaceholderseed')) {\n\t\t\t\t\t\t$this.css({width: 32, height: 32});\n\t\t\t\t\t\tif ($this.data('avatar')) {\n\t\t\t\t\t\t\t$this.css('border-radius', '0%');\n\t\t\t\t\t\t\t$this.css('background', 'url(' + $this.data('avatar') + ') no-repeat');\n\t\t\t\t\t\t\t$this.css('background-size', '31px');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$this.imageplaceholder($this.data('seed'));\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//                         user,   size,  ie8fix, hidedefault,  callback, displayname\n\t\t\t\t\t\t$this.avatar($this.data('username'), 32, undefined, undefined, undefined, $this.data('displayname'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis.$('.has-tooltip').tooltip({\n\t\t\t\t\tplacement: 'bottom'\n\t\t\t\t});\n\n\t\t\t\tthis.$('ul.shareWithList > li').each(function() {\n\t\t\t\t\tvar $this = $(this);\n\n\t\t\t\t\tvar shareWith = $this.data('share-with');\n\t\t\t\t\tvar shareType = $this.data('share-type');\n\n\t\t\t\t\t$this.find('div.avatar, span.username').contactsMenu(shareWith, shareType, $this);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvar permissionChangeShareId = parseInt(this._renderPermissionChange, 10);\n\t\t\t\tvar shareWithIndex = this.model.findShareWithIndex(permissionChangeShareId);\n\t\t\t\tvar sharee = this.getShareeObject(shareWithIndex);\n\t\t\t\t$.extend(sharee, this.getShareProperties());\n\t\t\t\tvar $li = this.$('li[data-share-id=' + permissionChangeShareId + ']');\n\t\t\t\t$li.find('.sharingOptionsGroup .popovermenu').replaceWith(this.popoverMenuTemplate(sharee));\n\t\t\t}\n\n\t\t\tvar _this = this;\n\t\t\tthis.getShareeList().forEach(function(sharee) {\n\t\t\t\tvar $edit = _this.$('#canEdit-' + _this.cid + '-' + sharee.shareId);\n\t\t\t\tif($edit.length === 1) {\n\t\t\t\t\t$edit.prop('checked', sharee.editPermissionState === 'checked');\n\t\t\t\t\tif (sharee.isFolder) {\n\t\t\t\t\t\t$edit.prop('indeterminate', sharee.editPermissionState === 'indeterminate');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.$('.popovermenu').on('afterHide', function() {\n\t\t\t\t_this._menuOpen = false;\n\t\t\t});\n\t\t\tthis.$('.popovermenu').on('beforeHide', function() {\n\t\t\t\tvar shareId = parseInt(_this._menuOpen, 10);\n\t\t\t\tif(!_.isNaN(shareId)) {\n\t\t\t\t\tvar datePickerClass = '.expirationDateContainer-' + _this.cid + '-' + shareId;\n\t\t\t\t\tvar datePickerInput = '#expirationDatePicker-' + _this.cid + '-' + shareId;\n\t\t\t\t\tvar expireDateCheckbox = '#expireDate-' + _this.cid + '-' + shareId;\n\t\t\t\t\tif ($(expireDateCheckbox).prop('checked')) {\n\t\t\t\t\t\t$(datePickerInput).removeClass('hidden-visually');\n\t\t\t\t\t\t$(datePickerClass).removeClass('hasDatepicker');\n\t\t\t\t\t\t$(datePickerClass + ' .ui-datepicker').hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (this._menuOpen !== false) {\n\t\t\t\t// Open menu again if it was opened before\n\t\t\t\tvar shareId = parseInt(this._menuOpen, 10);\n\t\t\t\tif(!_.isNaN(shareId)) {\n\t\t\t\t\tvar liSelector = 'li[data-share-id=' + shareId + ']';\n\t\t\t\t\tOC.showMenu(null, this.$(liSelector + ' .sharingOptionsGroup .popovermenu'));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._renderPermissionChange = false;\n\n\t\t\t// new note autosize\n\t\t\tautosize(this.$el.find('.share-note-form .share-note'));\n\n\t\t\tthis.delegateEvents();\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * @returns {Function} from Handlebars\n\t\t * @private\n\t\t */\n\t\ttemplate: function (data) {\n\t\t\tvar sharees = data.sharees;\n\t\t\tif(_.isArray(sharees)) {\n\t\t\t\tfor (var i = 0; i < sharees.length; i++) {\n\t\t\t\t\tdata.sharees[i].popoverMenu = this.popoverMenuTemplate(sharees[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn OC.Share.Templates['sharedialogshareelistview'](data);\n\t\t},\n\n\t\t/**\n\t\t * renders the popover template and returns the resulting HTML\n\t\t *\n\t\t * @param {Object} data\n\t\t * @returns {string}\n\t\t */\n\t\tpopoverMenuTemplate: function(data) {\n\t\t\treturn OC.Share.Templates['sharedialogshareelistview_popover_menu'](data);\n\t\t},\n\n\t\tshowNoteForm: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $menu = $element.closest('li');\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\n\t\t\t// show elements\n\t\t\t$menu.find('.share-note-delete').toggleClass('hidden');\n\t\t\t$form.toggleClass('hidden');\n\t\t\t$form.find('textarea').focus();\n\t\t},\n\n\t\tdeleteNote: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $menu = $element.closest('li');\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\n\t\t\tconsole.log($form.find('.share-note'));\n\t\t\t$form.find('.share-note').val('');\n\t\t\t\n\t\t\t$form.addClass('hidden');\n\t\t\t$menu.find('.share-note-delete').addClass('hidden');\n\n\t\t\tself.sendNote('', shareId, $menu);\n\t\t},\n\n\t\tupdateNote: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\t\t\tvar $form = $element.closest('li.share-note-form');\n\t\t\tvar $menu = $form.prev('li');\n\t\t\tvar message = $form.find('.share-note').val().trim();\n\n\t\t\tif (message.length < 1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.sendNote(message, shareId, $menu);\n\n\t\t},\n\n\t\tsendNote: function(note, shareId, $menu) {\n\t\t\tvar $form = $menu.next('li.share-note-form');\n\t\t\tvar $submit = $form.find('input.share-note-submit');\n\t\t\tvar $error = $form.find('input.share-note-error');\n\n\t\t\t$submit.prop('disabled', true);\n\t\t\t$menu.find('.icon-loading-small').removeClass('hidden');\n\t\t\t$menu.find('.icon-edit').hide();\n\n\t\t\tvar complete = function() {\n\t\t\t\t$submit.prop('disabled', false);\n\t\t\t\t$menu.find('.icon-loading-small').addClass('hidden');\n\t\t\t\t$menu.find('.icon-edit').show();\n\t\t\t};\n\t\t\tvar error = function() {\n\t\t\t\t$error.show();\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$error.hide();\n\t\t\t\t}, 3000);\n\t\t\t};\n\n\t\t\t// send data\n\t\t\t$.ajax({\n\t\t\t\tmethod: 'PUT',\n\t\t\t\turl: OC.linkToOCS('apps/files_sharing/api/v1/shares',2) + shareId + '?' + OC.buildQueryString({format: 'json'}),\n\t\t\t\tdata: { note: note },\n\t\t\t\tcomplete : complete,\n\t\t\t\terror: error\n\t\t\t});\n\t\t},\n\n\t\tonUnshare: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar self = this;\n\t\t\tvar $element = $(event.target);\n\t\t\tif (!$element.is('a')) {\n\t\t\t\t$element = $element.closest('a');\n\t\t\t}\n\n\t\t\tvar $loading = $element.find('.icon-loading-small').eq(0);\n\t\t\tif(!$loading.hasClass('hidden')) {\n\t\t\t\t// in process\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t$loading.removeClass('hidden');\n\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\n\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\tself.model.removeShare(shareId)\n\t\t\t\t.done(function() {\n\t\t\t\t\t$li.remove();\n\t\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'Could not unshare'));\n\t\t\t\t});\n\t\t\treturn false;\n\t\t},\n\n\t\tonToggleMenu: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar $menu = $li.find('.sharingOptionsGroup .popovermenu');\n\n\t\t\tOC.showMenu(null, $menu);\n\t\t\tthis._menuOpen = $li.data('share-id');\n\t\t},\n\n\t\tonExpireDateChange: function(event) {\n\t\t\tvar $element = $(event.target);\n\t\t\tvar li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar datePickerClass = '.expirationDateContainer-' + this.cid + '-' + shareId;\n\t\t\tvar datePicker = $(datePickerClass);\n\t\t\tvar state = $element.prop('checked');\n\t\t\tdatePicker.toggleClass('hidden', !state);\n\t\t\tif (!state) {\n\t\t\t\t// disabled, let's hide the input and\n\t\t\t\t// set the expireDate to nothing\n\t\t\t\t$element.closest('li').next('li').addClass('hidden');\n\t\t\t\tthis.setExpirationDate(shareId, '');\n\t\t\t} else {\n\t\t\t\t// enabled, show the input and the datepicker\n\t\t\t\t$element.closest('li').next('li').removeClass('hidden');\n\t\t\t\tthis.showDatePicker(event);\n\n\t\t\t}\n\t\t},\n\n\t\tshowDatePicker: function(event) {\n\t\t\tvar element = $(event.target);\n\t\t\tvar li = element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar expirationDatePicker = '#expirationDatePicker-' + this.cid + '-' + shareId;\n\t\t\tvar view = this;\n\t\t\t$(expirationDatePicker).datepicker({\n\t\t\t\tdateFormat : 'dd-mm-yy',\n\t\t\t\tonSelect: function (expireDate) {\n\t\t\t\t\tview.setExpirationDate(shareId, expireDate);\n\t\t\t\t}\n\t\t\t});\n\t\t\t$(expirationDatePicker).focus();\n\n\t\t},\n\n\t\tsetExpirationDate: function(shareId, expireDate) {\n\t\t\tthis.model.updateShare(shareId, {expireDate: expireDate}, {});\n\t\t},\n\n\t\tonMailSharePasswordProtectChange: function(event) {\n\t\t\tvar element = $(event.target);\n\t\t\tvar li = element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar passwordContainerClass = '.passwordMenu-' + this.cid + '-' + shareId;\n\t\t\tvar passwordContainer = $(passwordContainerClass);\n\t\t\tvar loading = this.$el.find(passwordContainerClass + ' .icon-loading-small');\n\t\t\tvar inputClass = '#passwordField-' + this.cid + '-' + shareId;\n\t\t\tvar passwordField = $(inputClass);\n\t\t\tvar state = element.prop('checked');\n\t\t\tvar passwordByTalkElement = $('#passwordByTalk-' + this.cid + '-' + shareId);\n\t\t\tvar passwordByTalkState = passwordByTalkElement.prop('checked');\n\t\t\tif (!state && !passwordByTalkState) {\n\t\t\t\tthis.model.updateShare(shareId, {password: '', sendPasswordByTalk: false});\n\t\t\t\tpasswordField.attr('value', '');\n\t\t\t\tpasswordField.removeClass('error');\n\t\t\t\tpasswordField.tooltip('hide');\n\t\t\t\tloading.addClass('hidden');\n\t\t\t\tpasswordField.attr('placeholder', PASSWORD_PLACEHOLDER_MESSAGE);\n\t\t\t\t// We first need to reset the password field before we hide it\n\t\t\t\tpasswordContainer.toggleClass('hidden', !state);\n\t\t\t} else if (state) {\n\t\t\t\tif (passwordByTalkState) {\n\t\t\t\t\t// Switching from sending the password by Talk to sending\n\t\t\t\t\t// the password by mail can be done keeping the previous\n\t\t\t\t\t// password sent by Talk.\n\t\t\t\t\tthis.model.updateShare(shareId, {sendPasswordByTalk: false});\n\n\t\t\t\t\tvar passwordByTalkContainerClass = '.passwordByTalkMenu-' + this.cid + '-' + shareId;\n\t\t\t\t\tvar passwordByTalkContainer = $(passwordByTalkContainerClass);\n\t\t\t\t\tpasswordByTalkContainer.addClass('hidden');\n\t\t\t\t\tpasswordByTalkElement.prop('checked', false);\n\t\t\t\t}\n\n\t\t\t\tpasswordContainer.toggleClass('hidden', !state);\n\t\t\t\tpasswordField = '#passwordField-' + this.cid + '-' + shareId;\n\t\t\t\tthis.$(passwordField).focus();\n\t\t\t}\n\t\t},\n\n\t\tonMailSharePasswordProtectByTalkChange: function(event) {\n\t\t\tvar element = $(event.target);\n\t\t\tvar li = element.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar passwordByTalkContainerClass = '.passwordByTalkMenu-' + this.cid + '-' + shareId;\n\t\t\tvar passwordByTalkContainer = $(passwordByTalkContainerClass);\n\t\t\tvar loading = this.$el.find(passwordByTalkContainerClass + ' .icon-loading-small');\n\t\t\tvar inputClass = '#passwordByTalkField-' + this.cid + '-' + shareId;\n\t\t\tvar passwordByTalkField = $(inputClass);\n\t\t\tvar state = element.prop('checked');\n\t\t\tvar passwordElement = $('#password-' + this.cid + '-' + shareId);\n\t\t\tvar passwordState = passwordElement.prop('checked');\n\t\t\tif (!state) {\n\t\t\t\tthis.model.updateShare(shareId, {password: '', sendPasswordByTalk: false});\n\t\t\t\tpasswordByTalkField.attr('value', '');\n\t\t\t\tpasswordByTalkField.removeClass('error');\n\t\t\t\tpasswordByTalkField.tooltip('hide');\n\t\t\t\tloading.addClass('hidden');\n\t\t\t\tpasswordByTalkField.attr('placeholder', PASSWORD_PLACEHOLDER_MESSAGE);\n\t\t\t\t// We first need to reset the password field before we hide it\n\t\t\t\tpasswordByTalkContainer.toggleClass('hidden', !state);\n\t\t\t} else if (state) {\n\t\t\t\tif (passwordState) {\n\t\t\t\t\t// Enabling sending the password by Talk requires a new\n\t\t\t\t\t// password to be given (the one sent by mail is not reused,\n\t\t\t\t\t// as it would defeat the purpose of checking the identity\n\t\t\t\t\t// of the sharee by Talk if it was already sent by mail), so\n\t\t\t\t\t// the share is not updated until the user explicitly gives\n\t\t\t\t\t// the new password.\n\n\t\t\t\t\tvar passwordContainerClass = '.passwordMenu-' + this.cid + '-' + shareId;\n\t\t\t\t\tvar passwordContainer = $(passwordContainerClass);\n\t\t\t\t\tpasswordContainer.addClass('hidden');\n\t\t\t\t\tpasswordElement.prop('checked', false);\n\t\t\t\t}\n\n\t\t\t\tpasswordByTalkContainer.toggleClass('hidden', !state);\n\t\t\t\tpasswordByTalkField = '#passwordByTalkField-' + this.cid + '-' + shareId;\n\t\t\t\tthis.$(passwordByTalkField).focus();\n\t\t\t}\n\t\t},\n\n\t\tonMailSharePasswordKeyUp: function(event) {\n\t\t\tif(event.keyCode === 13) {\n\t\t\t\tthis.onMailSharePasswordEntered(event);\n\t\t\t}\n\t\t},\n\n\t\tonMailSharePasswordEntered: function(event) {\n\t\t\tvar passwordField = $(event.target);\n\t\t\tvar li = passwordField.closest('li[data-share-id]');\n\t\t\tvar shareId = li.data('share-id');\n\t\t\tvar passwordContainerClass = '.passwordMenu-' + this.cid + '-' + shareId;\n\t\t\tvar passwordByTalkContainerClass = '.passwordByTalkMenu-' + this.cid + '-' + shareId;\n\t\t\tvar sendPasswordByTalk = passwordField.attr('id').startsWith('passwordByTalk');\n\t\t\tvar loading;\n\t\t\tif (sendPasswordByTalk) {\n\t\t\t\tloading = this.$el.find(passwordByTalkContainerClass + ' .icon-loading-small');\n\t\t\t} else {\n\t\t\t\tloading = this.$el.find(passwordContainerClass + ' .icon-loading-small');\n\t\t\t}\n\t\t\tif (!loading.hasClass('hidden')) {\n\t\t\t\t// still in process\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tpasswordField.removeClass('error');\n\t\t\tvar password = passwordField.val();\n\t\t\t// in IE9 the password might be the placeholder due to bugs in the placeholders polyfill\n\t\t\tif(password === '' || password === PASSWORD_PLACEHOLDER || password === PASSWORD_PLACEHOLDER_MESSAGE) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloading\n\t\t\t\t.removeClass('hidden')\n\t\t\t\t.addClass('inlineblock');\n\n\n\t\t\tthis.model.updateShare(shareId, {\n\t\t\t\tpassword: password,\n\t\t\t\tsendPasswordByTalk: sendPasswordByTalk\n\t\t\t}, {\n\t\t\t\terror: function(model, msg) {\n\t\t\t\t\t// destroy old tooltips\n\t\t\t\t\tpasswordField.tooltip('destroy');\n\t\t\t\t\tloading.removeClass('inlineblock').addClass('hidden');\n\t\t\t\t\tpasswordField.addClass('error');\n\t\t\t\t\tpasswordField.attr('title', msg);\n\t\t\t\t\tpasswordField.tooltip({placement: 'bottom', trigger: 'manual'});\n\t\t\t\t\tpasswordField.tooltip('show');\n\t\t\t\t},\n\t\t\t\tsuccess: function(model, msg) {\n\t\t\t\t\tpasswordField.blur();\n\t\t\t\t\tpasswordField.attr('value', '');\n\t\t\t\t\tpasswordField.attr('placeholder', PASSWORD_PLACEHOLDER);\n\t\t\t\t\tloading.removeClass('inlineblock').addClass('hidden');\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tonPermissionChange: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\tvar permissions = OC.PERMISSION_READ;\n\n\t\t\tif (this.model.isFolder()) {\n\t\t\t\t// adjust checkbox states\n\t\t\t\tvar $checkboxes = $('.permissions', $li).not('input[name=\"edit\"]').not('input[name=\"share\"]');\n\t\t\t\tvar checked;\n\t\t\t\tif ($element.attr('name') === 'edit') {\n\t\t\t\t\tchecked = $element.is(':checked');\n\t\t\t\t\t// Check/uncheck Create, Update, and Delete checkboxes if Edit is checked/unck\n\t\t\t\t\t$($checkboxes).prop('checked', checked);\n\t\t\t\t\tif (checked) {\n\t\t\t\t\t\tpermissions |= OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar numberChecked = $checkboxes.filter(':checked').length;\n\t\t\t\t\tchecked = numberChecked === $checkboxes.length;\n\t\t\t\t\tvar $editCb = $('input[name=\"edit\"]', $li);\n\t\t\t\t\t$editCb.prop('checked', checked);\n\t\t\t\t\t$editCb.prop('indeterminate', !checked && numberChecked > 0);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($element.attr('name') === 'edit' && $element.is(':checked')) {\n\t\t\t\t\tpermissions |= OC.PERMISSION_UPDATE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$('.permissions', $li).not('input[name=\"edit\"]').filter(':checked').each(function(index, checkbox) {\n\t\t\t\tpermissions |= $(checkbox).data('permissions');\n\t\t\t});\n\n\n\t\t\t/** disable checkboxes during save operation to avoid race conditions **/\n\t\t\t$li.find('input[type=checkbox]').prop('disabled', true);\n\t\t\tvar enableCb = function() {\n\t\t\t\t$li.find('input[type=checkbox]').prop('disabled', false);\n\t\t\t};\n\t\t\tvar errorCb = function(elem, msg) {\n\t\t\t\tOC.dialogs.alert(msg, t('core', 'Error while sharing'));\n\t\t\t\tenableCb();\n\t\t\t};\n\n\t\t\tthis.model.updateShare(shareId, {permissions: permissions}, {error: errorCb, success: enableCb});\n\n\t\t\tthis._renderPermissionChange = shareId;\n\t\t},\n\n\t\tonSecureDropChange: function(event) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\tvar $element = $(event.target);\n\t\t\tvar $li = $element.closest('li[data-share-id]');\n\t\t\tvar shareId = $li.data('share-id');\n\n\t\t\tvar permissions = OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE | OC.PERMISSION_READ;\n\t\t\tif ($element.is(':checked')) {\n\t\t\t\tpermissions = OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE;\n\t\t\t}\n\n\t\t\t/** disable checkboxes during save operation to avoid race conditions **/\n\t\t\t$li.find('input[type=checkbox]').prop('disabled', true);\n\t\t\tvar enableCb = function() {\n\t\t\t\t$li.find('input[type=checkbox]').prop('disabled', false);\n\t\t\t};\n\t\t\tvar errorCb = function(elem, msg) {\n\t\t\t\tOC.dialogs.alert(msg, t('core', 'Error while sharing'));\n\t\t\t\tenableCb();\n\t\t\t};\n\n\t\t\tthis.model.updateShare(shareId, {permissions: permissions}, {error: errorCb, success: enableCb});\n\n\t\t\tthis._renderPermissionChange = shareId;\n\t\t}\n\n\t});\n\n\tOC.Share.ShareDialogShareeListView = ShareDialogShareeListView;\n\n})();\n","/*\n * Copyright (c) 2015\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/* globals Handlebars */\n\n(function() {\n\tif(!OC.Share) {\n\t\tOC.Share = {};\n\t}\n\n\t/**\n\t * @class OCA.Share.ShareDialogView\n\t * @member {OC.Share.ShareItemModel} model\n\t * @member {jQuery} $el\n\t * @memberof OCA.Sharing\n\t * @classdesc\n\t *\n\t * Represents the GUI of the share dialogue\n\t *\n\t */\n\tvar ShareDialogView = OC.Backbone.View.extend({\n\t\t/** @type {Object} **/\n\t\t_templates: {},\n\n\t\t/** @type {boolean} **/\n\t\t_showLink: true,\n\n\t\t_lookup: false,\n\n\t\t_lookupAllowed: false,\n\n\t\t/** @type {string} **/\n\t\ttagName: 'div',\n\n\t\t/** @type {OC.Share.ShareConfigModel} **/\n\t\tconfigModel: undefined,\n\n\t\t/** @type {object} **/\n\t\tresharerInfoView: undefined,\n\n\t\t/** @type {object} **/\n\t\tlinkShareView: undefined,\n\n\t\t/** @type {object} **/\n\t\tshareeListView: undefined,\n\n\t\t/** @type {object} **/\n\t\t_lastSuggestions: undefined,\n\n\t\t/** @type {object} **/\n\t\t_lastRecommendations: undefined,\n\n\t\t/** @type {int} **/\n\t\t_pendingOperationsCount: 0,\n\n\t\tevents: {\n\t\t\t'focus .shareWithField': 'onShareWithFieldFocus',\n\t\t\t'input .shareWithField': 'onShareWithFieldChanged',\n\t\t\t'click .shareWithConfirm': '_confirmShare'\n\t\t},\n\n\t\tinitialize: function(options) {\n\t\t\tvar view = this;\n\n\t\t\tthis.model.on('fetchError', function() {\n\t\t\t\tOC.Notification.showTemporary(t('core', 'Share details could not be loaded for this item.'));\n\t\t\t});\n\n\t\t\tif(!_.isUndefined(options.configModel)) {\n\t\t\t\tthis.configModel = options.configModel;\n\t\t\t} else {\n\t\t\t\tthrow 'missing OC.Share.ShareConfigModel';\n\t\t\t}\n\n\t\t\tthis.configModel.on('change:isRemoteShareAllowed', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\t\t\tthis.configModel.on('change:isRemoteGroupShareAllowed', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\t\t\tthis.model.on('change:permissions', function() {\n\t\t\t\tview.render();\n\t\t\t});\n\n\t\t\tthis.model.on('request', this._onRequest, this);\n\t\t\tthis.model.on('sync', this._onEndRequest, this);\n\n\t\t\tvar subViewOptions = {\n\t\t\t\tmodel: this.model,\n\t\t\t\tconfigModel: this.configModel\n\t\t\t};\n\n\t\t\tvar subViews = {\n\t\t\t\tresharerInfoView: 'ShareDialogResharerInfoView',\n\t\t\t\tlinkShareView: 'ShareDialogLinkShareView',\n\t\t\t\tshareeListView: 'ShareDialogShareeListView'\n\t\t\t};\n\n\t\t\tfor(var name in subViews) {\n\t\t\t\tvar className = subViews[name];\n\t\t\t\tthis[name] = _.isUndefined(options[name])\n\t\t\t\t\t? new OC.Share[className](subViewOptions)\n\t\t\t\t\t: options[name];\n\t\t\t}\n\n\t\t\t_.bindAll(this,\n\t\t\t\t'autocompleteHandler',\n\t\t\t\t'_onSelectRecipient',\n\t\t\t\t'onShareWithFieldChanged',\n\t\t\t\t'onShareWithFieldFocus'\n\t\t\t);\n\n\t\t\tOC.Plugins.attach('OC.Share.ShareDialogView', this);\n\t\t},\n\n\t\tonShareWithFieldChanged: function() {\n\t\t\tvar $el = this.$el.find('.shareWithField');\n\t\t\tif ($el.val().length < 2) {\n\t\t\t\t$el.removeClass('error').tooltip('hide');\n\t\t\t}\n\t\t},\n\n\t\t/* trigger search after the field was re-selected */\n\t\tonShareWithFieldFocus: function() {\n\t\t\tvar $shareWithField = this.$el.find('.shareWithField');\n\t\t\t$shareWithField.autocomplete(\"search\", $shareWithField.val());\n\t\t},\n\n\t\t_getSuggestions: function(searchTerm, perPage, model, lookup) {\n\t\t\tif (this._lastSuggestions &&\n\t\t\t\tthis._lastSuggestions.searchTerm === searchTerm &&\n\t\t\t\tthis._lastSuggestions.lookup === lookup &&\n\t\t\t\tthis._lastSuggestions.perPage === perPage &&\n\t\t\t\tthis._lastSuggestions.model === model) {\n\t\t\t\treturn this._lastSuggestions.promise;\n\t\t\t}\n\n\t\t\tvar deferred = $.Deferred();\n\t\t\tvar view = this;\n\n\t\t\t$.get(\n\t\t\t\tOC.linkToOCS('apps/files_sharing/api/v1') + 'sharees',\n\t\t\t\t{\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\tsearch: searchTerm,\n\t\t\t\t\tlookup: lookup,\n\t\t\t\t\tperPage: perPage,\n\t\t\t\t\titemType: model.get('itemType')\n\t\t\t\t},\n\t\t\t\tfunction (result) {\n\t\t\t\t\tif (result.ocs.meta.statuscode === 100) {\n\t\t\t\t\t\tvar filter = function(users, groups, remotes, remote_groups, emails, circles, rooms) {\n\t\t\t\t\t\t\tif (typeof(emails) === 'undefined') {\n\t\t\t\t\t\t\t\temails = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof(circles) === 'undefined') {\n\t\t\t\t\t\t\t\tcircles = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof(rooms) === 'undefined') {\n\t\t\t\t\t\t\t\trooms = [];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar usersLength;\n\t\t\t\t\t\t\tvar groupsLength;\n\t\t\t\t\t\t\tvar remotesLength;\n\t\t\t\t\t\t\tvar remoteGroupsLength;\n\t\t\t\t\t\t\tvar emailsLength;\n\t\t\t\t\t\t\tvar circlesLength;\n\t\t\t\t\t\t\tvar roomsLength;\n\n\t\t\t\t\t\t\tvar i, j;\n\n\t\t\t\t\t\t\t//Filter out the current user\n\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\tfor (i = 0; i < usersLength; i++) {\n\t\t\t\t\t\t\t\tif (users[i].value.shareWith === OC.currentUser) {\n\t\t\t\t\t\t\t\t\tusers.splice(i, 1);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Filter out the owner of the share\n\t\t\t\t\t\t\tif (model.hasReshare()) {\n\t\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\t\tfor (i = 0 ; i < usersLength; i++) {\n\t\t\t\t\t\t\t\t\tif (users[i].value.shareWith === model.getReshareOwner()) {\n\t\t\t\t\t\t\t\t\t\tusers.splice(i, 1);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar shares = model.get('shares');\n\t\t\t\t\t\t\tvar sharesLength = shares.length;\n\n\t\t\t\t\t\t\t// Now filter out all sharees that are already shared with\n\t\t\t\t\t\t\tfor (i = 0; i < sharesLength; i++) {\n\t\t\t\t\t\t\t\tvar share = shares[i];\n\n\t\t\t\t\t\t\t\tif (share.share_type === OC.Share.SHARE_TYPE_USER) {\n\t\t\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < usersLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (users[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tusers.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\t\t\t\t\t\tgroupsLength = groups.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < groupsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (groups[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tgroups.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\t\t\t\t\t\tremotesLength = remotes.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < remotesLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (remotes[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tremotes.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\t\t\t\t\t\tremoteGroupsLength = remote_groups.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < remoteGroupsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (remote_groups[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tremote_groups.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\t\t\t\temailsLength = emails.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < emailsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (emails[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\temails.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\t\t\t\t\tcirclesLength = circles.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < circlesLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (circles[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tcircles.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\t\t\t\t\t\troomsLength = rooms.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < roomsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (rooms[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\trooms.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tfilter(\n\t\t\t\t\t\t\tresult.ocs.data.exact.users,\n\t\t\t\t\t\t\tresult.ocs.data.exact.groups,\n\t\t\t\t\t\t\tresult.ocs.data.exact.remotes,\n\t\t\t\t\t\t\tresult.ocs.data.exact.remote_groups,\n\t\t\t\t\t\t\tresult.ocs.data.exact.emails,\n\t\t\t\t\t\t\tresult.ocs.data.exact.circles,\n\t\t\t\t\t\t\tresult.ocs.data.exact.rooms\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar exactUsers   = result.ocs.data.exact.users;\n\t\t\t\t\t\tvar exactGroups  = result.ocs.data.exact.groups;\n\t\t\t\t\t\tvar exactRemotes = result.ocs.data.exact.remotes;\n\t\t\t\t\t\tvar exactRemoteGroups = result.ocs.data.exact.remote_groups;\n\t\t\t\t\t\tvar exactEmails = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.emails) !== 'undefined') {\n\t\t\t\t\t\t\texactEmails = result.ocs.data.exact.emails;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar exactCircles = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.circles) !== 'undefined') {\n\t\t\t\t\t\t\texactCircles = result.ocs.data.exact.circles;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar exactRooms = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.rooms) !== 'undefined') {\n\t\t\t\t\t\t\texactRooms = result.ocs.data.exact.rooms;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar exactMatches = exactUsers.concat(exactGroups).concat(exactRemotes).concat(exactRemoteGroups).concat(exactEmails).concat(exactCircles).concat(exactRooms);\n\n\t\t\t\t\t\tfilter(\n\t\t\t\t\t\t\tresult.ocs.data.users,\n\t\t\t\t\t\t\tresult.ocs.data.groups,\n\t\t\t\t\t\t\tresult.ocs.data.remotes,\n\t\t\t\t\t\t\tresult.ocs.data.remote_groups,\n\t\t\t\t\t\t\tresult.ocs.data.emails,\n\t\t\t\t\t\t\tresult.ocs.data.circles,\n\t\t\t\t\t\t\tresult.ocs.data.rooms\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar users   = result.ocs.data.users;\n\t\t\t\t\t\tvar groups  = result.ocs.data.groups;\n\t\t\t\t\t\tvar remotes = result.ocs.data.remotes;\n\t\t\t\t\t\tvar remoteGroups = result.ocs.data.remote_groups;\n\t\t\t\t\t\tvar lookup = result.ocs.data.lookup;\n\t\t\t\t\t\tvar lookupEnabled = result.ocs.data.lookupEnabled;\n\t\t\t\t\t\tvar emails = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.emails) !== 'undefined') {\n\t\t\t\t\t\t\temails = result.ocs.data.emails;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar circles = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.circles) !== 'undefined') {\n\t\t\t\t\t\t\tcircles = result.ocs.data.circles;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar rooms = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.rooms) !== 'undefined') {\n\t\t\t\t\t\t\trooms = result.ocs.data.rooms;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar suggestions = exactMatches.concat(users).concat(groups).concat(remotes).concat(remoteGroups).concat(emails).concat(circles).concat(rooms).concat(lookup);\n\n\t\t\t\t\t\tfunction dynamicSort(property) {\n\t\t\t\t\t\t\treturn function (a,b) {\n\t\t\t\t\t\t\t\tvar aProperty = '';\n\t\t\t\t\t\t\t\tvar bProperty = '';\n\t\t\t\t\t\t\t\tif (typeof a[property] !== 'undefined') {\n\t\t\t\t\t\t\t\t\taProperty = a[property];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (typeof b[property] !== 'undefined') {\n\t\t\t\t\t\t\t\t\tbProperty = b[property];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn (aProperty < bProperty) ? -1 : (aProperty > bProperty) ? 1 : 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Sort share entries by uuid to properly group them\n\t\t\t\t\t\t */\n\t\t\t\t\t\tvar grouped = suggestions.sort(dynamicSort('uuid'));\n\n\t\t\t\t\t\tvar previousUuid = null;\n\t\t\t\t\t\tvar groupedLength = grouped.length;\n\t\t\t\t\t\tvar result = [];\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * build the result array that only contains all contact entries from\n\t\t\t\t\t\t * merged contacts, if the search term matches its contact name\n\t\t\t\t\t\t */\n\t\t\t\t\t\tfor (var i = 0; i < groupedLength; i++) {\n\t\t\t\t\t\t\tif (typeof grouped[i].uuid !== 'undefined' && grouped[i].uuid === previousUuid) {\n\t\t\t\t\t\t\t\tgrouped[i].merged = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (searchTerm === grouped[i].name || typeof grouped[i].merged === 'undefined') {\n\t\t\t\t\t\t\t\tresult.push(grouped[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpreviousUuid = grouped[i].uuid;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar moreResultsAvailable =\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\toc_config['sharing.maxAutocompleteResults'] > 0\n\t\t\t\t\t\t\t\t&& Math.min(perPage, oc_config['sharing.maxAutocompleteResults'])\n\t\t\t\t\t\t\t\t\t<= Math.max(\n\t\t\t\t\t\t\t\t\t\tusers.length + exactUsers.length,\n\t\t\t\t\t\t\t\t\t\tgroups.length + exactGroups.length,\n\t\t\t\t\t\t\t\t\t\tremoteGroups.length + exactRemoteGroups.length,\n\t\t\t\t\t\t\t\t\t\tremotes.length + exactRemotes.length,\n\t\t\t\t\t\t\t\t\t\temails.length + exactEmails.length,\n\t\t\t\t\t\t\t\t\t\tcircles.length + exactCircles.length,\n\t\t\t\t\t\t\t\t\t\trooms.length + exactRooms.length,\n\t\t\t\t\t\t\t\t\t\tlookup.length\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!view._lookup && lookupEnabled) {\n\t\t\t\t\t\t\tresult.push(\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: t('core', 'Search globally'),\n\t\t\t\t\t\t\t\t\tvalue: {},\n\t\t\t\t\t\t\t\t\tlookup: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdeferred.resolve(result, exactMatches, moreResultsAvailable, lookupEnabled);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdeferred.reject(result.ocs.meta.message);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t).fail(function() {\n\t\t\t\tdeferred.reject();\n\t\t\t});\n\n\t\t\tthis._lastSuggestions = {\n\t\t\t\tsearchTerm: searchTerm,\n\t\t\t\tlookup: lookup,\n\t\t\t\tperPage: perPage,\n\t\t\t\tmodel: model,\n\t\t\t\tpromise: deferred.promise()\n\t\t\t};\n\n\t\t\treturn this._lastSuggestions.promise;\n\t\t},\n\n\t\t_getRecommendations: function(model) {\n\t\t\tif (this._lastRecommendations &&\n\t\t\t\tthis._lastRecommendations.model === model) {\n\t\t\t\treturn this._lastRecommendations.promise;\n\t\t\t}\n\n\t\t\tvar deferred = $.Deferred();\n\n\t\t\t$.get(\n\t\t\t\tOC.linkToOCS('apps/files_sharing/api/v1') + 'sharees_recommended',\n\t\t\t\t{\n\t\t\t\t\tformat: 'json',\n\t\t\t\t\titemType: model.get('itemType')\n\t\t\t\t},\n\t\t\t\tfunction (result) {\n\t\t\t\t\tif (result.ocs.meta.statuscode === 100) {\n\t\t\t\t\t\tvar filter = function(users, groups, remotes, remote_groups, emails, circles, rooms) {\n\t\t\t\t\t\t\tif (typeof(emails) === 'undefined') {\n\t\t\t\t\t\t\t\temails = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof(circles) === 'undefined') {\n\t\t\t\t\t\t\t\tcircles = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof(rooms) === 'undefined') {\n\t\t\t\t\t\t\t\trooms = [];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar usersLength;\n\t\t\t\t\t\t\tvar groupsLength;\n\t\t\t\t\t\t\tvar remotesLength;\n\t\t\t\t\t\t\tvar remoteGroupsLength;\n\t\t\t\t\t\t\tvar emailsLength;\n\t\t\t\t\t\t\tvar circlesLength;\n\t\t\t\t\t\t\tvar roomsLength;\n\n\t\t\t\t\t\t\tvar i, j;\n\n\t\t\t\t\t\t\t//Filter out the current user\n\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\tfor (i = 0; i < usersLength; i++) {\n\t\t\t\t\t\t\t\tif (users[i].value.shareWith === OC.currentUser) {\n\t\t\t\t\t\t\t\t\tusers.splice(i, 1);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Filter out the owner of the share\n\t\t\t\t\t\t\tif (model.hasReshare()) {\n\t\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\t\tfor (i = 0 ; i < usersLength; i++) {\n\t\t\t\t\t\t\t\t\tif (users[i].value.shareWith === model.getReshareOwner()) {\n\t\t\t\t\t\t\t\t\t\tusers.splice(i, 1);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvar shares = model.get('shares');\n\t\t\t\t\t\t\tvar sharesLength = shares.length;\n\n\t\t\t\t\t\t\t// Now filter out all sharees that are already shared with\n\t\t\t\t\t\t\tfor (i = 0; i < sharesLength; i++) {\n\t\t\t\t\t\t\t\tvar share = shares[i];\n\n\t\t\t\t\t\t\t\tif (share.share_type === OC.Share.SHARE_TYPE_USER) {\n\t\t\t\t\t\t\t\t\tusersLength = users.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < usersLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (users[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tusers.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\t\t\t\t\t\tgroupsLength = groups.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < groupsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (groups[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tgroups.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\t\t\t\t\t\tremotesLength = remotes.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < remotesLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (remotes[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tremotes.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\t\t\t\t\t\tremoteGroupsLength = remote_groups.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < remoteGroupsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (remote_groups[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tremote_groups.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\t\t\t\t\t\temailsLength = emails.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < emailsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (emails[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\temails.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\t\t\t\t\tcirclesLength = circles.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < circlesLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (circles[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\tcircles.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (share.share_type === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\t\t\t\t\t\troomsLength = rooms.length;\n\t\t\t\t\t\t\t\t\tfor (j = 0; j < roomsLength; j++) {\n\t\t\t\t\t\t\t\t\t\tif (rooms[j].value.shareWith === share.share_with) {\n\t\t\t\t\t\t\t\t\t\t\trooms.splice(j, 1);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tfilter(\n\t\t\t\t\t\t\tresult.ocs.data.exact.users,\n\t\t\t\t\t\t\tresult.ocs.data.exact.groups,\n\t\t\t\t\t\t\tresult.ocs.data.exact.remotes,\n\t\t\t\t\t\t\tresult.ocs.data.exact.remote_groups,\n\t\t\t\t\t\t\tresult.ocs.data.exact.emails,\n\t\t\t\t\t\t\tresult.ocs.data.exact.circles,\n\t\t\t\t\t\t\tresult.ocs.data.exact.rooms\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar exactUsers   = result.ocs.data.exact.users;\n\t\t\t\t\t\tvar exactGroups  = result.ocs.data.exact.groups;\n\t\t\t\t\t\tvar exactRemotes = result.ocs.data.exact.remotes || [];\n\t\t\t\t\t\tvar exactRemoteGroups = result.ocs.data.exact.remote_groups || [];\n\t\t\t\t\t\tvar exactEmails = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.emails) !== 'undefined') {\n\t\t\t\t\t\t\texactEmails = result.ocs.data.exact.emails;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar exactCircles = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.circles) !== 'undefined') {\n\t\t\t\t\t\t\texactCircles = result.ocs.data.exact.circles;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar exactRooms = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.rooms) !== 'undefined') {\n\t\t\t\t\t\t\texactRooms = result.ocs.data.exact.rooms;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar exactMatches = exactUsers.concat(exactGroups).concat(exactRemotes).concat(exactRemoteGroups).concat(exactEmails).concat(exactCircles).concat(exactRooms);\n\n\t\t\t\t\t\tfilter(\n\t\t\t\t\t\t\tresult.ocs.data.users,\n\t\t\t\t\t\t\tresult.ocs.data.groups,\n\t\t\t\t\t\t\tresult.ocs.data.remotes,\n\t\t\t\t\t\t\tresult.ocs.data.remote_groups,\n\t\t\t\t\t\t\tresult.ocs.data.emails,\n\t\t\t\t\t\t\tresult.ocs.data.circles,\n\t\t\t\t\t\t\tresult.ocs.data.rooms\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tvar users   = result.ocs.data.users;\n\t\t\t\t\t\tvar groups  = result.ocs.data.groups;\n\t\t\t\t\t\tvar remotes = result.ocs.data.remotes || [];\n\t\t\t\t\t\tvar remoteGroups = result.ocs.data.remote_groups || [];\n\t\t\t\t\t\tvar lookup = result.ocs.data.lookup || [];\n\t\t\t\t\t\tvar emails = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.emails) !== 'undefined') {\n\t\t\t\t\t\t\temails = result.ocs.data.emails;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar circles = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.circles) !== 'undefined') {\n\t\t\t\t\t\t\tcircles = result.ocs.data.circles;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar rooms = [];\n\t\t\t\t\t\tif (typeof(result.ocs.data.rooms) !== 'undefined') {\n\t\t\t\t\t\t\trooms = result.ocs.data.rooms;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar suggestions = exactMatches.concat(users).concat(groups).concat(remotes).concat(remoteGroups).concat(emails).concat(circles).concat(rooms).concat(lookup);\n\n\t\t\t\t\t\tfunction dynamicSort(property) {\n\t\t\t\t\t\t\treturn function (a,b) {\n\t\t\t\t\t\t\t\tvar aProperty = '';\n\t\t\t\t\t\t\t\tvar bProperty = '';\n\t\t\t\t\t\t\t\tif (typeof a[property] !== 'undefined') {\n\t\t\t\t\t\t\t\t\taProperty = a[property];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (typeof b[property] !== 'undefined') {\n\t\t\t\t\t\t\t\t\tbProperty = b[property];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn (aProperty < bProperty) ? -1 : (aProperty > bProperty) ? 1 : 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Sort share entries by uuid to properly group them\n\t\t\t\t\t\t */\n\t\t\t\t\t\tvar grouped = suggestions.sort(dynamicSort('uuid'));\n\n\t\t\t\t\t\tvar previousUuid = null;\n\t\t\t\t\t\tvar groupedLength = grouped.length;\n\t\t\t\t\t\tvar result = [];\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * build the result array that only contains all contact entries from\n\t\t\t\t\t\t * merged contacts, if the search term matches its contact name\n\t\t\t\t\t\t */\n\t\t\t\t\t\tfor (var i = 0; i < groupedLength; i++) {\n\t\t\t\t\t\t\tif (typeof grouped[i].uuid !== 'undefined' && grouped[i].uuid === previousUuid) {\n\t\t\t\t\t\t\t\tgrouped[i].merged = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (typeof grouped[i].merged === 'undefined') {\n\t\t\t\t\t\t\t\tresult.push(grouped[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpreviousUuid = grouped[i].uuid;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar moreResultsAvailable =\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\toc_config['sharing.maxAutocompleteResults'] > 0\n\t\t\t\t\t\t\t\t&& Math.min(perPage, oc_config['sharing.maxAutocompleteResults'])\n\t\t\t\t\t\t\t\t<= Math.max(\n\t\t\t\t\t\t\t\t\tusers.length + exactUsers.length,\n\t\t\t\t\t\t\t\t\tgroups.length + exactGroups.length,\n\t\t\t\t\t\t\t\t\tremoteGroups.length + exactRemoteGroups.length,\n\t\t\t\t\t\t\t\t\tremotes.length + exactRemotes.length,\n\t\t\t\t\t\t\t\t\temails.length + exactEmails.length,\n\t\t\t\t\t\t\t\t\tcircles.length + exactCircles.length,\n\t\t\t\t\t\t\t\t\trooms.length + exactRooms.length,\n\t\t\t\t\t\t\t\t\tlookup.length\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\tdeferred.resolve(result, exactMatches, moreResultsAvailable);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdeferred.reject(result.ocs.meta.message);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t).fail(function() {\n\t\t\t\tdeferred.reject();\n\t\t\t});\n\n\t\t\tthis._lastRecommendations = {\n\t\t\t\tmodel: model,\n\t\t\t\tpromise: deferred.promise()\n\t\t\t};\n\n\t\t\treturn this._lastRecommendations.promise;\n\t\t},\n\n\t\trecommendationHandler: function (response) {\n\t\t\tvar view = this;\n\t\t\tvar $shareWithField = $('.shareWithField');\n\t\t\tthis._getRecommendations(\n\t\t\t\tview.model\n\t\t\t).done(function(suggestions) {\n\t\t\t\tconsole.info('recommendations', suggestions);\n\t\t\t\tif (suggestions.length > 0) {\n\t\t\t\t\t$shareWithField\n\t\t\t\t\t\t.autocomplete(\"option\", \"autoFocus\", true);\n\n\t\t\t\t\tresponse(suggestions);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.info('no sharing recommendations found');\n\t\t\t\t\tresponse();\n\t\t\t\t}\n\t\t\t}).fail(function(message) {\n\t\t\t\tconsole.error('could not load recommendations', message)\n\t\t\t});\n\t\t},\n\n\t\tautocompleteHandler: function (search, response) {\n\t\t\t// If nothing is entered we show recommendations instead of search\n\t\t\t// results\n\t\t\tif (search.term.length === 0) {\n\t\t\t\tconsole.info(search.term, 'empty search term -> using recommendations');\n\t\t\t\tthis.recommendationHandler(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar $shareWithField = $('.shareWithField'),\n\t\t\t\tview = this,\n\t\t\t\t$loading = this.$el.find('.shareWithLoading'),\n\t\t\t\t$confirm = this.$el.find('.shareWithConfirm');\n\n\t\t\tvar count = oc_config['sharing.minSearchStringLength'];\n\t\t\tif (search.term.trim().length < count) {\n\t\t\t\tvar title = n('core',\n\t\t\t\t\t'At least {count} character is needed for autocompletion',\n\t\t\t\t\t'At least {count} characters are needed for autocompletion',\n\t\t\t\t\tcount,\n\t\t\t\t\t{ count: count }\n\t\t\t\t);\n\t\t\t\t$shareWithField.addClass('error')\n\t\t\t\t\t.attr('data-original-title', title)\n\t\t\t\t\t.tooltip('hide')\n\t\t\t\t\t.tooltip({\n\t\t\t\t\t\tplacement: 'bottom',\n\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t})\n\t\t\t\t\t.tooltip('fixTitle')\n\t\t\t\t\t.tooltip('show');\n\t\t\t\tresponse();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t$loading.removeClass('hidden');\n\t\t\t$loading.addClass('inlineblock');\n\t\t\t$confirm.addClass('hidden');\n\t\t\tthis._pendingOperationsCount++;\n\n\t\t\t$shareWithField.removeClass('error')\n\t\t\t\t.tooltip('hide');\n\n\t\t\tvar perPage = parseInt(oc_config['sharing.maxAutocompleteResults'], 10) || 200;\n\t\t\tthis._getSuggestions(\n\t\t\t\tsearch.term.trim(),\n\t\t\t\tperPage,\n\t\t\t\tview.model,\n\t\t\t\tview._lookup\n\t\t\t).done(function(suggestions, exactMatches, moreResultsAvailable) {\n\t\t\t\tview._pendingOperationsCount--;\n\t\t\t\tif (view._pendingOperationsCount === 0) {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$loading.removeClass('inlineblock');\n\t\t\t\t\t$confirm.removeClass('hidden');\n\t\t\t\t}\n\n\t\t\t\tif (suggestions.length > 0) {\n\t\t\t\t\t$shareWithField\n\t\t\t\t\t\t.autocomplete(\"option\", \"autoFocus\", true);\n\n\t\t\t\t\tresponse(suggestions);\n\n\t\t\t\t\t// show a notice that the list is truncated\n\t\t\t\t\t// this is the case if one of the search results is at least as long as the max result config option\n\t\t\t\t\tif(moreResultsAvailable) {\n\t\t\t\t\t\tvar message = t('core', 'This list is maybe truncated - please refine your search term to see more results.');\n\t\t\t\t\t\t$('.ui-autocomplete').append('<li class=\"autocomplete-note\">' + message + '</li>');\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tvar title = t('core', 'No users or groups found for {search}', {search: $shareWithField.val()});\n\t\t\t\t\tif (!view.configModel.get('allowGroupSharing')) {\n\t\t\t\t\t\ttitle = t('core', 'No users found for {search}', {search: $('.shareWithField').val()});\n\t\t\t\t\t}\n\t\t\t\t\t$shareWithField.addClass('error')\n\t\t\t\t\t\t.attr('data-original-title', title)\n\t\t\t\t\t\t.tooltip('hide')\n\t\t\t\t\t\t.tooltip({\n\t\t\t\t\t\t\tplacement: 'top',\n\t\t\t\t\t\t\ttrigger: 'manual'\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.tooltip('fixTitle')\n\t\t\t\t\t\t.tooltip('show');\n\t\t\t\t\tresponse();\n\t\t\t\t}\n\t\t\t}).fail(function(message) {\n\t\t\t\tview._pendingOperationsCount--;\n\t\t\t\tif (view._pendingOperationsCount === 0) {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$loading.removeClass('inlineblock');\n\t\t\t\t\t$confirm.removeClass('hidden');\n\t\t\t\t}\n\n\t\t\t\tif (message) {\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'An error occurred (\"{message}\"). Please try again', { message: message }));\n\t\t\t\t} else {\n\t\t\t\t\tOC.Notification.showTemporary(t('core', 'An error occurred. Please try again'));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tautocompleteRenderItem: function(ul, item) {\n\t\t\tvar icon = 'icon-user';\n\t\t\tvar text = escapeHTML(item.label);\n\t\t\tvar description = '';\n\t\t\tvar type = '';\n\t\t\tvar getTranslatedType = function(type) {\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase 'HOME':\n\t\t\t\t\t\treturn t('core', 'Home');\n\t\t\t\t\tcase 'WORK':\n\t\t\t\t\t\treturn t('core', 'Work');\n\t\t\t\t\tcase 'OTHER':\n\t\t\t\t\t\treturn t('core', 'Other');\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn '' + type;\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (typeof item.type !== 'undefined' && item.type !== null) {\n\t\t\t\ttype = getTranslatedType(item.type) + ' ';\n\t\t\t}\n\n\t\t\tif (typeof item.name !== 'undefined') {\n\t\t\t\ttext = escapeHTML(item.name);\n\t\t\t}\n\t\t\tif (item.value.shareType === OC.Share.SHARE_TYPE_GROUP) {\n\t\t\t\ticon = 'icon-contacts-dark';\n\t\t\t} else if (item.value.shareType === OC.Share.SHARE_TYPE_REMOTE) {\n\t\t\t\ticon = 'icon-shared';\n\t\t\t\tdescription += item.value.shareWith;\n\t\t\t} else if (item.value.shareType === OC.Share.SHARE_TYPE_REMOTE_GROUP) {\n\t\t\t\ttext = t('core', '{sharee} (remote group)', { sharee: text }, undefined, { escape: false });\n\t\t\t\ticon = 'icon-shared';\n\t\t\t\tdescription += item.value.shareWith;\n\t\t\t} else if (item.value.shareType === OC.Share.SHARE_TYPE_EMAIL) {\n\t\t\t\ticon = 'icon-mail';\n\t\t\t\tdescription += item.value.shareWith;\n\t\t\t} else if (item.value.shareType === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\ttext = t('core', '{sharee} ({type}, {owner})', {sharee: text, type: item.value.circleInfo, owner: item.value.circleOwner}, undefined, {escape: false});\n\t\t\t\ticon = 'icon-circle';\n\t\t\t} else if (item.value.shareType === OC.Share.SHARE_TYPE_ROOM) {\n\t\t\t\ticon = 'icon-talk';\n\t\t\t}\n\n\t\t\tvar insert = $(\"<div class='share-autocomplete-item'/>\");\n\t\t\tif (item.merged) {\n\t\t\t\tinsert.addClass('merged');\n\t\t\t\ttext = item.value.shareWith;\n\t\t\t\tdescription = type;\n\t\t\t} else if (item.lookup) {\n\t\t\t\ttext = item.label;\n\t\t\t\ticon = false;\n\t\t\t\tinsert.append('<span class=\"icon icon-search search-globally\"></span>');\n\t\t\t} else {\n\t\t\t\tvar avatar = $(\"<div class='avatardiv'></div>\").appendTo(insert);\n\t\t\t\tif (item.value.shareType === OC.Share.SHARE_TYPE_USER || item.value.shareType === OC.Share.SHARE_TYPE_CIRCLE) {\n\t\t\t\t\tavatar.avatar(item.value.shareWith, 32, undefined, undefined, undefined, item.label);\n\t\t\t\t} else {\n\t\t\t\t\tif (typeof item.uuid === 'undefined') {\n\t\t\t\t\t\titem.uuid = text;\n\t\t\t\t\t}\n\t\t\t\t\tavatar.imageplaceholder(item.uuid, text, 32);\n\t\t\t\t}\n\t\t\t\tdescription = type + description;\n\t\t\t}\n\t\t\tif (description !== '') {\n\t\t\t\tinsert.addClass('with-description');\n\t\t\t}\n\n\t\t\t$(\"<div class='autocomplete-item-text'></div>\")\n\t\t\t\t.html(\n\t\t\t\t\ttext.replace(\n\t\t\t\t\tnew RegExp(this.term, \"gi\"),\n\t\t\t\t\t\"<span class='ui-state-highlight'>$&</span>\")\n\t\t\t\t\t+ '<span class=\"autocomplete-item-details\">' + description + '</span>'\n\t\t\t\t)\n\t\t\t\t.appendTo(insert);\n\t\t\tinsert.attr('title', item.value.shareWith);\n\t\t\tif (icon) {\n\t\t\t\tinsert.append('<span class=\"icon ' + icon + '\" title=\"' + text + '\"></span>');\n\t\t\t}\n\t\t\tinsert = $(\"<a>\")\n\t\t\t\t.append(insert);\n\t\t\treturn $(\"<li>\")\n\t\t\t\t.addClass((item.value.shareType === OC.Share.SHARE_TYPE_GROUP) ? 'group' : 'user')\n\t\t\t\t.append(insert)\n\t\t\t\t.appendTo(ul);\n\t\t},\n\n\t\t_onSelectRecipient: function(e, s) {\n\t\t\tvar self = this;\n\n\t\t\tif (e.keyCode == 9) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (typeof s.item.name !== 'undefined') {\n\t\t\t\t\te.target.value = s.item.name;\n\t\t\t\t} else {\n\t\t\t\t\te.target.value = s.item.label;\n\t\t\t\t}\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$(e.target).attr('disabled', false)\n\t\t\t\t\t\t.autocomplete('search', $(e.target).val());\n\t\t\t\t}, 0);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (s.item.lookup) {\n\t\t\t\t// Retrigger search but with global lookup this time\n\t\t\t\tthis._lookup = true;\n\t\t\t\tvar $shareWithField = this.$el.find('.shareWithField');\n\t\t\t\tvar val = $shareWithField.val();\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tconsole.debug('searching again, but globally. search term: ' + val);\n\t\t\t\t\t$shareWithField.autocomplete(\"search\", val);\n\t\t\t\t}, 0);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\te.preventDefault();\n\t\t\t// Ensure that the keydown handler for the input field is not\n\t\t\t// called; otherwise it would try to add the recipient again, which\n\t\t\t// would fail.\n\t\t\te.stopImmediatePropagation();\n\t\t\t$(e.target).attr('disabled', true)\n\t\t\t\t.val(s.item.label);\n\n\t\t\tvar $loading = this.$el.find('.shareWithLoading');\n\t\t\tvar $confirm = this.$el.find('.shareWithConfirm');\n\n\t\t\t$loading.removeClass('hidden');\n\t\t\t$loading.addClass('inlineblock');\n\t\t\t$confirm.addClass('hidden');\n\t\t\tthis._pendingOperationsCount++;\n\n\t\t\tthis.model.addShare(s.item.value, {success: function() {\n\t\t\t\t// Adding a share changes the suggestions.\n\t\t\t\tself._lastSuggestions = undefined;\n\n\t\t\t\t$(e.target).val('')\n\t\t\t\t\t.attr('disabled', false);\n\n\t\t\t\tself._pendingOperationsCount--;\n\t\t\t\tif (self._pendingOperationsCount === 0) {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$loading.removeClass('inlineblock');\n\t\t\t\t\t$confirm.removeClass('hidden');\n\t\t\t\t}\n\t\t\t}, error: function(obj, msg) {\n\t\t\t\tOC.Notification.showTemporary(msg);\n\t\t\t\t$(e.target).attr('disabled', false)\n\t\t\t\t\t.autocomplete('search', $(e.target).val());\n\n\t\t\t\tself._pendingOperationsCount--;\n\t\t\t\tif (self._pendingOperationsCount === 0) {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$loading.removeClass('inlineblock');\n\t\t\t\t\t$confirm.removeClass('hidden');\n\t\t\t\t}\n\t\t\t}});\n\t\t},\n\n\t\t_confirmShare: function() {\n\t\t\tvar self = this;\n\t\t\tvar $shareWithField = $('.shareWithField');\n\t\t\tvar $loading = this.$el.find('.shareWithLoading');\n\t\t\tvar $confirm = this.$el.find('.shareWithConfirm');\n\n\t\t\t$loading.removeClass('hidden');\n\t\t\t$loading.addClass('inlineblock');\n\t\t\t$confirm.addClass('hidden');\n\t\t\tthis._pendingOperationsCount++;\n\n\t\t\t$shareWithField.prop('disabled', true);\n\n\t\t\t// Disabling the autocompletion does not clear its search timeout;\n\t\t\t// removing the focus from the input field does, but only if the\n\t\t\t// autocompletion is not disabled when the field loses the focus.\n\t\t\t// Thus, the field has to be disabled before disabling the\n\t\t\t// autocompletion to prevent an old pending search result from\n\t\t\t// appearing once the field is enabled again.\n\t\t\t$shareWithField.autocomplete('close');\n\t\t\t$shareWithField.autocomplete('disable');\n\n\t\t\tvar restoreUI = function() {\n\t\t\t\tself._pendingOperationsCount--;\n\t\t\t\tif (self._pendingOperationsCount === 0) {\n\t\t\t\t\t$loading.addClass('hidden');\n\t\t\t\t\t$loading.removeClass('inlineblock');\n\t\t\t\t\t$confirm.removeClass('hidden');\n\t\t\t\t}\n\n\t\t\t\t$shareWithField.prop('disabled', false);\n\t\t\t\t$shareWithField.focus();\n\t\t\t};\n\n\t\t\tvar perPage = parseInt(oc_config['sharing.maxAutocompleteResults'], 10) || 200;\n\t\t\tthis._getSuggestions(\n\t\t\t\t$shareWithField.val(),\n\t\t\t\tperPage,\n\t\t\t\tthis.model,\n\t\t\t\tthis._lookup\n\t\t\t).done(function(suggestions, exactMatches) {\n\t\t\t\tif (suggestions.length === 0) {\n\t\t\t\t\trestoreUI();\n\n\t\t\t\t\t$shareWithField.autocomplete('enable');\n\n\t\t\t\t\t// There is no need to show an error message here; it will\n\t\t\t\t\t// be automatically shown when the autocomplete is activated\n\t\t\t\t\t// again (due to the focus on the field) and it finds no\n\t\t\t\t\t// matches.\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (exactMatches.length !== 1) {\n\t\t\t\t\trestoreUI();\n\n\t\t\t\t\t$shareWithField.autocomplete('enable');\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar actionSuccess = function() {\n\t\t\t\t\t// Adding a share changes the suggestions.\n\t\t\t\t\tself._lastSuggestions = undefined;\n\n\t\t\t\t\t$shareWithField.val('');\n\n\t\t\t\t\trestoreUI();\n\n\t\t\t\t\t$shareWithField.autocomplete('enable');\n\t\t\t\t};\n\n\t\t\t\tvar actionError = function(obj, msg) {\n\t\t\t\t\trestoreUI();\n\n\t\t\t\t\t$shareWithField.autocomplete('enable');\n\n\t\t\t\t\tOC.Notification.showTemporary(msg);\n\t\t\t\t};\n\n\t\t\t\tself.model.addShare(exactMatches[0].value, {\n\t\t\t\t\tsuccess: actionSuccess,\n\t\t\t\t\terror: actionError\n\t\t\t\t});\n\t\t\t}).fail(function(message) {\n\t\t\t\trestoreUI();\n\n\t\t\t\t$shareWithField.autocomplete('enable');\n\n\t\t\t\t// There is no need to show an error message here; it will be\n\t\t\t\t// automatically shown when the autocomplete is activated again\n\t\t\t\t// (due to the focus on the field) and getting the suggestions\n\t\t\t\t// fail.\n\t\t\t});\n\t\t},\n\n\t\t_toggleLoading: function(state) {\n\t\t\tthis._loading = state;\n\t\t\tthis.$el.find('.subView').toggleClass('hidden', state);\n\t\t\tthis.$el.find('.loading').toggleClass('hidden', !state);\n\t\t},\n\n\t\t_onRequest: function() {\n\t\t\t// only show the loading spinner for the first request (for now)\n\t\t\tif (!this._loadingOnce) {\n\t\t\t\tthis._toggleLoading(true);\n\t\t\t}\n\t\t},\n\n\t\t_onEndRequest: function() {\n\t\t\tvar self = this;\n\t\t\tthis._toggleLoading(false);\n\t\t\tif (!this._loadingOnce) {\n\t\t\t\tthis._loadingOnce = true;\n\t\t\t}\n\t\t},\n\n\t\trender: function() {\n\t\t\tvar self = this;\n\t\t\tvar baseTemplate = OC.Share.Templates['sharedialogview'];\n\n\t\t\tthis.$el.html(baseTemplate({\n\t\t\t\tcid: this.cid,\n\t\t\t\tshareLabel: t('core', 'Share'),\n\t\t\t\tsharePlaceholder: this._renderSharePlaceholderPart(),\n\t\t\t\tisSharingAllowed: this.model.sharePermissionPossible()\n\t\t\t}));\n\n\t\t\tvar $shareField = this.$el.find('.shareWithField');\n\t\t\tif ($shareField.length) {\n\t\t\t\tvar shareFieldKeydownHandler = function(event) {\n\t\t\t\t\tif (event.keyCode !== 13) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tself._confirmShare();\n\n\t\t\t\t\treturn false;\n\t\t\t\t};\n\n\t\t\t\t$shareField.autocomplete({\n\t\t\t\t\tminLength: 0,\n\t\t\t\t\tdelay: 750,\n\t\t\t\t\tfocus: function(event) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t},\n\t\t\t\t\tsource: this.autocompleteHandler,\n\t\t\t\t\tselect: this._onSelectRecipient,\n\t\t\t\t\topen: function() {\n\t\t\t\t\t\tvar autocomplete = $(this).autocomplete('widget');\n\t\t\t\t\t\tvar numberOfItems = autocomplete.find('li').size();\n\t\t\t\t\t\tautocomplete.removeClass('item-count-1');\n\t\t\t\t\t\tautocomplete.removeClass('item-count-2');\n\t\t\t\t\t\tif (numberOfItems <= 2) {\n\t\t\t\t\t\t\tautocomplete.addClass('item-count-' + numberOfItems);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}).data('ui-autocomplete')._renderItem = this.autocompleteRenderItem;\n\n\t\t\t\t$shareField.on('keydown', null, shareFieldKeydownHandler);\n\t\t\t}\n\n\t\t\tthis.resharerInfoView.$el = this.$el.find('.resharerInfoView');\n\t\t\tthis.resharerInfoView.render();\n\n\t\t\tthis.linkShareView.$el = this.$el.find('.linkShareView');\n\t\t\tthis.linkShareView.render();\n\n\t\t\tthis.shareeListView.$el = this.$el.find('.shareeListView');\n\t\t\tthis.shareeListView.render();\n\n\t\t\tthis.$el.find('.hasTooltip').tooltip();\n\n\t\t\treturn this;\n\t\t},\n\n\t\t/**\n\t\t * sets whether share by link should be displayed or not. Default is\n\t\t * true.\n\t\t *\n\t\t * @param {bool} showLink\n\t\t */\n\t\tsetShowLink: function(showLink) {\n\t\t\tthis._showLink = (typeof showLink === 'boolean') ? showLink : true;\n\t\t\tthis.linkShareView.showLink = this._showLink;\n\t\t},\n\n\t\t_renderSharePlaceholderPart: function () {\n\t\t\tvar allowRemoteSharing = this.configModel.get('isRemoteShareAllowed');\n\t\t\tvar allowMailSharing = this.configModel.get('isMailShareAllowed');\n\n\t\t\tif (!allowRemoteSharing && allowMailSharing) {\n\t\t\t\treturn t('core', 'Name or email address...');\n\t\t\t}\n\t\t\tif (allowRemoteSharing && !allowMailSharing) {\n\t\t\t\treturn t('core', 'Name or federated cloud ID...');\n\t\t\t}\n\t\t\tif (allowRemoteSharing && allowMailSharing) {\n\t\t\t\treturn t('core', 'Name, federated cloud ID or email address...');\n\t\t\t}\n\n\t\t\treturn \tt('core', 'Name...');\n\t\t},\n\n\t});\n\n\tOC.Share.ShareDialogView = ShareDialogView;\n\n})();\n","/* global escapeHTML */\n\n/**\n * @namespace\n */\nOC.Share = _.extend(OC.Share || {}, {\n\tSHARE_TYPE_USER:0,\n\tSHARE_TYPE_GROUP:1,\n\tSHARE_TYPE_LINK:3,\n\tSHARE_TYPE_EMAIL:4,\n\tSHARE_TYPE_REMOTE:6,\n\tSHARE_TYPE_CIRCLE:7,\n\tSHARE_TYPE_GUEST:8,\n\tSHARE_TYPE_REMOTE_GROUP:9,\n\tSHARE_TYPE_ROOM:10,\n\n\t/**\n\t * Regular expression for splitting parts of remote share owners:\n\t * \"user@example.com/path/to/owncloud\"\n\t * \"user@anotherexample.com@example.com/path/to/owncloud\n\t */\n\t_REMOTE_OWNER_REGEXP: new RegExp(\"^([^@]*)@(([^@]*)@)?([^/]*)([/](.*)?)?$\"),\n\n\t/**\n\t * @deprecated use OC.Share.currentShares instead\n\t */\n\titemShares:[],\n\t/**\n\t * Full list of all share statuses\n\t */\n\tstatuses:{},\n\t/**\n\t * Shares for the currently selected file.\n\t * (for which the dropdown is open)\n\t *\n\t * Key is item type and value is an array or\n\t * shares of the given item type.\n\t */\n\tcurrentShares: {},\n\t/**\n\t * Whether the share dropdown is opened.\n\t */\n\tdroppedDown:false,\n\t/**\n\t * Loads ALL share statuses from server, stores them in\n\t * OC.Share.statuses then calls OC.Share.updateIcons() to update the\n\t * files \"Share\" icon to \"Shared\" according to their share status and\n\t * share type.\n\t *\n\t * If a callback is specified, the update step is skipped.\n\t *\n\t * @param itemType item type\n\t * @param fileList file list instance, defaults to OCA.Files.App.fileList\n\t * @param callback function to call after the shares were loaded\n\t */\n\tloadIcons:function(itemType, fileList, callback) {\n\t\tvar path = fileList.dirInfo.path;\n\t\tif (path === '/') {\n\t\t\tpath = '';\n\t\t}\n\t\tpath += '/' + fileList.dirInfo.name;\n\n\t\t// Load all share icons\n\t\t$.get(\n\t\t\tOC.linkToOCS('apps/files_sharing/api/v1', 2) + 'shares',\n\t\t\t{\n\t\t\t\tsubfiles: 'true',\n\t\t\t\tpath: path,\n\t\t\t\tformat: 'json'\n\t\t\t}, function(result) {\n\t\t\t\tif (result && result.ocs.meta.statuscode === 200) {\n\t\t\t\t\tOC.Share.statuses = {};\n\t\t\t\t\t$.each(result.ocs.data, function(it, share) {\n\t\t\t\t\t\tif (!(share.item_source in OC.Share.statuses)) {\n\t\t\t\t\t\t\tOC.Share.statuses[share.item_source] = {link: false};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (share.share_type === OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\t\t\tOC.Share.statuses[share.item_source] = {link: true};\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif (_.isFunction(callback)) {\n\t\t\t\t\t\tcallback(OC.Share.statuses);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tOC.Share.updateIcons(itemType, fileList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t},\n\t/**\n\t * Updates the files' \"Share\" icons according to the known\n\t * sharing states stored in OC.Share.statuses.\n\t * (not reloaded from server)\n\t *\n\t * @param itemType item type\n\t * @param fileList file list instance\n\t * defaults to OCA.Files.App.fileList\n\t */\n\tupdateIcons:function(itemType, fileList){\n\t\tvar item;\n\t\tvar $fileList;\n\t\tvar currentDir;\n\t\tif (!fileList && OCA.Files) {\n\t\t\tfileList = OCA.Files.App.fileList;\n\t\t}\n\t\t// fileList is usually only defined in the files app\n\t\tif (fileList) {\n\t\t\t$fileList = fileList.$fileList;\n\t\t\tcurrentDir = fileList.getCurrentDirectory();\n\t\t}\n\t\t// TODO: iterating over the files might be more efficient\n\t\tfor (item in OC.Share.statuses){\n\t\t\tvar iconClass = 'icon-shared';\n\t\t\tvar data = OC.Share.statuses[item];\n\t\t\tvar hasLink = data.link;\n\t\t\t// Links override shared in terms of icon display\n\t\t\tif (hasLink) {\n\t\t\t\ticonClass = 'icon-public';\n\t\t\t}\n\t\t\tif (itemType !== 'file' && itemType !== 'folder') {\n\t\t\t\t$('a.share[data-item=\"'+item+'\"] .icon').removeClass('icon-shared icon-public').addClass(iconClass);\n\t\t\t} else {\n\t\t\t\t// TODO: ultimately this part should be moved to files_sharing app\n\t\t\t\tvar file = $fileList.find('tr[data-id=\"'+item+'\"]');\n\t\t\t\tvar shareFolder = OC.imagePath('core', 'filetypes/folder-shared');\n\t\t\t\tvar img;\n\t\t\t\tif (file.length > 0) {\n\t\t\t\t\tthis.markFileAsShared(file, true, hasLink);\n\t\t\t\t} else {\n\t\t\t\t\tvar dir = currentDir;\n\t\t\t\t\tif (dir.length > 1) {\n\t\t\t\t\t\tvar last = '';\n\t\t\t\t\t\tvar path = dir;\n\t\t\t\t\t\t// Search for possible parent folders that are shared\n\t\t\t\t\t\twhile (path != last) {\n\t\t\t\t\t\t\tif (path === data.path && !data.link) {\n\t\t\t\t\t\t\t\tvar actions = $fileList.find('.fileactions .action[data-action=\"Share\"]');\n\t\t\t\t\t\t\t\tvar files = $fileList.find('.filename');\n\t\t\t\t\t\t\t\tvar i;\n\t\t\t\t\t\t\t\tfor (i = 0; i < actions.length; i++) {\n\t\t\t\t\t\t\t\t\t// TODO: use this.markFileAsShared()\n\t\t\t\t\t\t\t\t\timg = $(actions[i]).find('img');\n\t\t\t\t\t\t\t\t\tif (img.attr('src') !== OC.imagePath('core', 'actions/public')) {\n\t\t\t\t\t\t\t\t\t\timg.attr('src', image);\n\t\t\t\t\t\t\t\t\t\t$(actions[i]).addClass('permanent');\n\t\t\t\t\t\t\t\t\t\t$(actions[i]).html('<span> '+t('core', 'Shared')+'</span>').prepend(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(i = 0; i < files.length; i++) {\n\t\t\t\t\t\t\t\t\tif ($(files[i]).closest('tr').data('type') === 'dir') {\n\t\t\t\t\t\t\t\t\t\t$(files[i]).find('.thumbnail').css('background-image', 'url('+shareFolder+')');\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlast = path;\n\t\t\t\t\t\t\tpath = OC.Share.dirname(path);\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}\n\t},\n\tupdateIcon:function(itemType, itemSource) {\n\t\tvar shares = false;\n\t\tvar link = false;\n\t\tvar iconClass = '';\n\t\t$.each(OC.Share.itemShares, function(index) {\n\t\t\tif (OC.Share.itemShares[index]) {\n\t\t\t\tif (index == OC.Share.SHARE_TYPE_LINK) {\n\t\t\t\t\tif (OC.Share.itemShares[index] == true) {\n\t\t\t\t\t\tshares = true;\n\t\t\t\t\t\ticonClass = 'icon-public';\n\t\t\t\t\t\tlink = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else if (OC.Share.itemShares[index].length > 0) {\n\t\t\t\t\tshares = true;\n\t\t\t\t\ticonClass = 'icon-shared';\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif (itemType != 'file' && itemType != 'folder') {\n\t\t\t$('a.share[data-item=\"'+itemSource+'\"] .icon').removeClass('icon-shared icon-public').addClass(iconClass);\n\t\t} else {\n\t\t\tvar $tr = $('tr').filterAttr('data-id', String(itemSource));\n\t\t\tif ($tr.length > 0) {\n\t\t\t\t// it might happen that multiple lists exist in the DOM\n\t\t\t\t// with the same id\n\t\t\t\t$tr.each(function() {\n\t\t\t\t\tOC.Share.markFileAsShared($(this), shares, link);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (shares) {\n\t\t\tOC.Share.statuses[itemSource] = OC.Share.statuses[itemSource] || {};\n\t\t\tOC.Share.statuses[itemSource].link = link;\n\t\t} else {\n\t\t\tdelete OC.Share.statuses[itemSource];\n\t\t}\n\t},\n\t/**\n\t * Format a remote address\n\t *\n\t * @param {String} shareWith userid, full remote share, or whatever\n\t * @param {String} shareWithDisplayName\n\t * @param {String} message\n\t * @return {String} HTML code to display\n\t */\n\t_formatRemoteShare: function(shareWith, shareWithDisplayName, message) {\n\t\tvar parts = this._REMOTE_OWNER_REGEXP.exec(shareWith);\n\t\tif (!parts) {\n\t\t\t// display avatar of the user\n\t\t\tvar avatar = '<span class=\"avatar\" data-username=\"' + escapeHTML(shareWith) + '\" title=\"' + message + \" \" + escapeHTML(shareWithDisplayName) + '\"></span>';\n\t\t\tvar hidden = '<span class=\"hidden-visually\">' + message + ' ' + escapeHTML(shareWithDisplayName) + '</span> ';\n\t\t\treturn avatar + hidden;\n\t\t}\n\n\t\tvar userName = parts[1];\n\t\tvar userDomain = parts[3];\n\t\tvar server = parts[4];\n\t\tvar tooltip = message + ' ' + userName;\n\t\tif (userDomain) {\n\t\t\ttooltip += '@' + userDomain;\n\t\t}\n\t\tif (server) {\n\t\t\tif (!userDomain) {\n\t\t\t\tuserDomain = '…';\n\t\t\t}\n\t\t\ttooltip += '@' + server;\n\t\t}\n\n\t\tvar html = '<span class=\"remoteAddress\" title=\"' + escapeHTML(tooltip) + '\">';\n\t\thtml += '<span class=\"username\">' + escapeHTML(userName) + '</span>';\n\t\tif (userDomain) {\n\t\t\thtml += '<span class=\"userDomain\">@' + escapeHTML(userDomain) + '</span>';\n\t\t}\n\t\thtml += '</span> ';\n\t\treturn html;\n\t},\n\t/**\n\t * Loop over all recipients in the list and format them using\n\t * all kind of fancy magic.\n\t *\n\t * @param {Object} recipients array of all the recipients\n\t * @return {String[]} modified list of recipients\n\t */\n\t_formatShareList: function(recipients) {\n\t\tvar _parent = this;\n\t\trecipients = _.toArray(recipients);\n\t\trecipients.sort(function(a, b) {\n\t\t\treturn a.shareWithDisplayName.localeCompare(b.shareWithDisplayName);\n\t\t});\n\t\treturn $.map(recipients, function(recipient) {\n\t\t\treturn _parent._formatRemoteShare(recipient.shareWith, recipient.shareWithDisplayName, t('core', 'Shared with'));\n\t\t});\n\t},\n\t/**\n\t * Marks/unmarks a given file as shared by changing its action icon\n\t * and folder icon.\n\t *\n\t * @param $tr file element to mark as shared\n\t * @param hasShares whether shares are available\n\t * @param hasLink whether link share is available\n\t */\n\tmarkFileAsShared: function($tr, hasShares, hasLink) {\n\t\tvar action = $tr.find('.fileactions .action[data-action=\"Share\"]');\n\t\tvar type = $tr.data('type');\n\t\tvar icon = action.find('.icon');\n\t\tvar message, recipients, avatars;\n\t\tvar ownerId = $tr.attr('data-share-owner-id');\n\t\tvar owner = $tr.attr('data-share-owner');\n\t\tvar shareFolderIcon;\n\t\tvar iconClass = 'icon-shared';\n\t\taction.removeClass('shared-style');\n\t\t// update folder icon\n\t\tif (type === 'dir' && (hasShares || hasLink || ownerId)) {\n\t\t\tif (hasLink) {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-public');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-shared');\n\t\t\t}\n\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')');\n\t\t\t$tr.attr('data-icon', shareFolderIcon);\n\t\t} else if (type === 'dir') {\n\t\t\tvar isEncrypted = $tr.attr('data-e2eencrypted');\n\t\t\tvar mountType = $tr.attr('data-mounttype');\n\t\t\t// FIXME: duplicate of FileList._createRow logic for external folder,\n\t\t\t// need to refactor the icon logic into a single code path eventually\n\t\t\tif (isEncrypted === 'true') {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-encrypted');\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon);\n\t\t\t} else if (mountType && mountType.indexOf('external') === 0) {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir-external');\n\t\t\t\t$tr.attr('data-icon', shareFolderIcon);\n\t\t\t} else {\n\t\t\t\tshareFolderIcon = OC.MimeType.getIconUrl('dir');\n\t\t\t\t// back to default\n\t\t\t\t$tr.removeAttr('data-icon');\n\t\t\t}\n\t\t\t$tr.find('.filename .thumbnail').css('background-image', 'url(' + shareFolderIcon + ')');\n\t\t}\n\t\t// update share action text / icon\n\t\tif (hasShares || ownerId) {\n\t\t\trecipients = $tr.data('share-recipient-data');\n\t\t\taction.addClass('shared-style');\n\n\t\t\tavatars = '<span>' + t('core', 'Shared') + '</span>';\n\t\t\t// even if reshared, only show \"Shared by\"\n\t\t\tif (ownerId) {\n\t\t\t\tmessage = t('core', 'Shared by');\n\t\t\t\tavatars = this._formatRemoteShare(ownerId, owner, message);\n\t\t\t} else if (recipients) {\n\t\t\t\tavatars = this._formatShareList(recipients);\n\t\t\t}\n\t\t\taction.html(avatars).prepend(icon);\n\n\t\t\tif (ownerId || recipients) {\n\t\t\t\tvar avatarElement = action.find('.avatar');\n\t\t\t\tavatarElement.each(function () {\n\t\t\t\t\t$(this).avatar($(this).data('username'), 32);\n\t\t\t\t});\n\t\t\t\taction.find('span[title]').tooltip({placement: 'top'});\n\t\t\t}\n\t\t} else {\n\t\t\taction.html('<span class=\"hidden-visually\">' + t('core', 'Shared') + '</span>').prepend(icon);\n\t\t}\n\t\tif (hasLink) {\n\t\t\ticonClass = 'icon-public';\n\t\t}\n\t\ticon.removeClass('icon-shared icon-public').addClass(iconClass);\n\t},\n\tshowDropDown:function(itemType, itemSource, appendTo, link, possiblePermissions, filename) {\n\t\tvar configModel = new OC.Share.ShareConfigModel();\n\t\tvar attributes = {itemType: itemType, itemSource: itemSource, possiblePermissions: possiblePermissions};\n\t\tvar itemModel = new OC.Share.ShareItemModel(attributes, {configModel: configModel});\n\t\tvar dialogView = new OC.Share.ShareDialogView({\n\t\t\tid: 'dropdown',\n\t\t\tmodel: itemModel,\n\t\t\tconfigModel: configModel,\n\t\t\tclassName: 'drop shareDropDown',\n\t\t\tattributes: {\n\t\t\t\t'data-item-source-name': filename,\n\t\t\t\t'data-item-type': itemType,\n\t\t\t\t'data-item-source': itemSource\n\t\t\t}\n\t\t});\n\t\tdialogView.setShowLink(link);\n\t\tvar $dialog = dialogView.render().$el;\n\t\t$dialog.appendTo(appendTo);\n\t\t$dialog.slideDown(OC.menuSpeed, function() {\n\t\t\tOC.Share.droppedDown = true;\n\t\t});\n\t\titemModel.fetch();\n\t},\n\thideDropDown:function(callback) {\n\t\tOC.Share.currentShares = null;\n\t\t$('#dropdown').slideUp(OC.menuSpeed, function() {\n\t\t\tOC.Share.droppedDown = false;\n\t\t\t$('#dropdown').remove();\n\t\t\tif (typeof FileActions !== 'undefined') {\n\t\t\t\t$('tr').removeClass('mouseOver');\n\t\t\t}\n\t\t\tif (callback) {\n\t\t\t\tcallback.call();\n\t\t\t}\n\t\t});\n\t},\n\tdirname:function(path) {\n\t\treturn path.replace(/\\\\/g,'/').replace(/\\/[^\\/]*$/, '');\n\t}\n});\n\n$(document).ready(function() {\n\tif(typeof monthNames != 'undefined'){\n\t\t// min date should always be the next day\n\t\tvar minDate = new Date();\n\t\tminDate.setDate(minDate.getDate()+1);\n\t\t$.datepicker.setDefaults({\n\t\t\tmonthNames: monthNames,\n\t\t\tmonthNamesShort: monthNamesShort,\n\t\t\tdayNames: dayNames,\n\t\t\tdayNamesMin: dayNamesMin,\n\t\t\tdayNamesShort: dayNamesShort,\n\t\t\tfirstDay: firstDay,\n\t\t\tminDate : minDate\n\t\t});\n\t}\n\n\t$(this).click(function(event) {\n\t\tvar target = $(event.target);\n\t\tvar isMatched = !target.is('.drop, .ui-datepicker-next, .ui-datepicker-prev, .ui-icon')\n\t\t\t&& !target.closest('#ui-datepicker-div').length && !target.closest('.ui-autocomplete').length;\n\t\tif (OC.Share && OC.Share.droppedDown && isMatched && $('#dropdown').has(event.target).length === 0) {\n\t\t\tOC.Share.hideDropDown();\n\t\t}\n\t});\n\n\n\n});\n"],"sourceRoot":""}
\ No newline at end of file
index d5ee3c93fe22780e108346016677c8e77430d8a8..2a7b398e17578ff8e8782f363a59f70693c11cdf 100644 (file)
                        this._toggleLoading(false);
                        if (!this._loadingOnce) {
                                this._loadingOnce = true;
-                               // the first time, focus on the share field after the spinner disappeared
-                               if (!OC.Util.isIE()) {
-                                       _.defer(function () {
-                                               self.$('.shareWithField').focus();
-                                       });
-                               }
                        }
                },
 
index 657c79b63449e713453a9afb386073d95a6a3b4c..5065162e2b4be5be6a6f114f8476a6bb5adab01a 100644 (file)
       }
     },
     "fstream": {
-      "version": "1.0.11",
-      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
-      "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+      "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
       "dev": true,
       "requires": {
         "graceful-fs": "^4.1.2",
diff --git a/settings/js/vue-1.js b/settings/js/vue-1.js
deleted file mode 100644 (file)
index 4e9c5c4..0000000
+++ /dev/null
@@ -1,2900 +0,0 @@
-(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[1],{
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appDetails.vue?vue&type=script&lang=js&":
-/*!***********************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appDetails.vue?vue&type=script&lang=js& ***!
-  \***********************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-multiselect */ "./node_modules/vue-multiselect/dist/vue-multiselect.min.js");
-/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var marked__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! marked */ "./node_modules/marked/lib/marked.js");
-/* harmony import */ var marked__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(marked__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dompurify */ "./node_modules/dompurify/dist/purify.js");
-/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(dompurify__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var _appList_appScore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./appList/appScore */ "./settings/src/components/appList/appScore.vue");
-/* harmony import */ var _appManagement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./appManagement */ "./settings/src/components/appManagement.vue");
-/* harmony import */ var _prefixMixin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./prefixMixin */ "./settings/src/components/prefixMixin.vue");
-/* harmony import */ var _svgFilterMixin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./svgFilterMixin */ "./settings/src/components/svgFilterMixin.vue");
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-
-
-
-
-
-
-
-/* harmony default export */ __webpack_exports__["default"] = ({
-  mixins: [_appManagement__WEBPACK_IMPORTED_MODULE_4__["default"], _prefixMixin__WEBPACK_IMPORTED_MODULE_5__["default"], _svgFilterMixin__WEBPACK_IMPORTED_MODULE_6__["default"]],
-  name: 'appDetails',
-  props: ['category', 'app'],
-  components: {
-    Multiselect: vue_multiselect__WEBPACK_IMPORTED_MODULE_0___default.a,
-    AppScore: _appList_appScore__WEBPACK_IMPORTED_MODULE_3__["default"]
-  },
-  data: function data() {
-    return {
-      groupCheckedAppsData: false
-    };
-  },
-  mounted: function mounted() {
-    if (this.app.groups.length > 0) {
-      this.groupCheckedAppsData = true;
-    }
-  },
-  methods: {
-    hideAppDetails: function hideAppDetails() {
-      this.$router.push({
-        name: 'apps-category',
-        params: {
-          category: this.category
-        }
-      });
-    }
-  },
-  computed: {
-    appstoreUrl: function appstoreUrl() {
-      return "https://apps.nextcloud.com/apps/".concat(this.app.id);
-    },
-    licence: function licence() {
-      if (this.app.licence) {
-        return t('settings', '{license}-licensed', {
-          license: ('' + this.app.licence).toUpperCase()
-        });
-      }
-
-      return null;
-    },
-    hasRating: function hasRating() {
-      return this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5;
-    },
-    author: function author() {
-      if (typeof this.app.author === 'string') {
-        return [{
-          '@value': this.app.author
-        }];
-      }
-
-      if (this.app.author['@value']) {
-        return [this.app.author];
-      }
-
-      return this.app.author;
-    },
-    appGroups: function appGroups() {
-      return this.app.groups.map(function (group) {
-        return {
-          id: group,
-          name: group
-        };
-      });
-    },
-    groups: function groups() {
-      return this.$store.getters.getGroups.filter(function (group) {
-        return group.id !== 'disabled';
-      }).sort(function (a, b) {
-        return a.name.localeCompare(b.name);
-      });
-    },
-    renderMarkdown: function renderMarkdown() {
-      var renderer = new marked__WEBPACK_IMPORTED_MODULE_1___default.a.Renderer();
-
-      renderer.link = function (href, title, text) {
-        try {
-          var prot = decodeURIComponent(unescape(href)).replace(/[^\w:]/g, '').toLowerCase();
-        } catch (e) {
-          return '';
-        }
-
-        if (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {
-          return '';
-        }
-
-        var out = '<a href="' + href + '" rel="noreferrer noopener"';
-
-        if (title) {
-          out += ' title="' + title + '"';
-        }
-
-        out += '>' + text + '</a>';
-        return out;
-      };
-
-      renderer.image = function (href, title, text) {
-        if (text) {
-          return text;
-        }
-
-        return title;
-      };
-
-      renderer.blockquote = function (quote) {
-        return quote;
-      };
-
-      return dompurify__WEBPACK_IMPORTED_MODULE_2___default.a.sanitize(marked__WEBPACK_IMPORTED_MODULE_1___default()(this.app.description.trim(), {
-        renderer: renderer,
-        gfm: false,
-        highlight: false,
-        tables: false,
-        breaks: false,
-        pedantic: false,
-        sanitize: true,
-        smartLists: true,
-        smartypants: false
-      }), {
-        SAFE_FOR_JQUERY: true,
-        ALLOWED_TAGS: ['strong', 'p', 'a', 'ul', 'ol', 'li', 'em', 'del', 'blockquote']
-      });
-    }
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList.vue?vue&type=script&lang=js&":
-/*!********************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appList.vue?vue&type=script&lang=js& ***!
-  \********************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _appList_appItem__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appList/appItem */ "./settings/src/components/appList/appItem.vue");
-/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue-multiselect */ "./node_modules/vue-multiselect/dist/vue-multiselect.min.js");
-/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _prefixMixin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./prefixMixin */ "./settings/src/components/prefixMixin.vue");
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-
-
-
-/* harmony default export */ __webpack_exports__["default"] = ({
-  name: 'appList',
-  mixins: [_prefixMixin__WEBPACK_IMPORTED_MODULE_2__["default"]],
-  props: ['category', 'app', 'search'],
-  components: {
-    Multiselect: vue_multiselect__WEBPACK_IMPORTED_MODULE_1___default.a,
-    appItem: _appList_appItem__WEBPACK_IMPORTED_MODULE_0__["default"]
-  },
-  computed: {
-    loading: function loading() {
-      return this.$store.getters.loading('list');
-    },
-    apps: function apps() {
-      var _this = this;
-
-      var apps = this.$store.getters.getAllApps.filter(function (app) {
-        return app.name.toLowerCase().search(_this.search.toLowerCase()) !== -1;
-      }).sort(function (a, b) {
-        var sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name;
-        var sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name;
-        return OC.Util.naturalSortCompare(sortStringA, sortStringB);
-      });
-
-      if (this.category === 'installed') {
-        return apps.filter(function (app) {
-          return app.installed;
-        });
-      }
-
-      if (this.category === 'enabled') {
-        return apps.filter(function (app) {
-          return app.active && app.installed;
-        });
-      }
-
-      if (this.category === 'disabled') {
-        return apps.filter(function (app) {
-          return !app.active && app.installed;
-        });
-      }
-
-      if (this.category === 'app-bundles') {
-        return apps.filter(function (app) {
-          return app.bundles;
-        });
-      }
-
-      if (this.category === 'updates') {
-        return apps.filter(function (app) {
-          return app.update;
-        });
-      } // filter app store categories
-
-
-      return apps.filter(function (app) {
-        return app.appstore && app.category !== undefined && (app.category === _this.category || app.category.indexOf(_this.category) > -1);
-      });
-    },
-    bundles: function bundles() {
-      return this.$store.getters.getServerData.bundles;
-    },
-    bundleApps: function bundleApps() {
-      return function (bundle) {
-        return this.$store.getters.getAllApps.filter(function (app) {
-          return app.bundleId === bundle;
-        });
-      };
-    },
-    searchApps: function searchApps() {
-      var _this2 = this;
-
-      if (this.search === '') {
-        return [];
-      }
-
-      return this.$store.getters.getAllApps.filter(function (app) {
-        if (app.name.toLowerCase().search(_this2.search.toLowerCase()) !== -1) {
-          return !_this2.apps.find(function (_app) {
-            return _app.id === app.id;
-          });
-        }
-
-        return false;
-      });
-    },
-    useAppStoreView: function useAppStoreView() {
-      return !this.useListView && !this.useBundleView;
-    },
-    useListView: function useListView() {
-      return this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates';
-    },
-    useBundleView: function useBundleView() {
-      return this.category === 'app-bundles';
-    },
-    allBundlesEnabled: function allBundlesEnabled() {
-      var self = this;
-      return function (id) {
-        return self.bundleApps(id).filter(function (app) {
-          return !app.active;
-        }).length === 0;
-      };
-    },
-    bundleToggleText: function bundleToggleText() {
-      var self = this;
-      return function (id) {
-        if (self.allBundlesEnabled(id)) {
-          return t('settings', 'Disable all');
-        }
-
-        return t('settings', 'Enable all');
-      };
-    }
-  },
-  methods: {
-    toggleBundle: function toggleBundle(id) {
-      if (this.allBundlesEnabled(id)) {
-        return this.disableBundle(id);
-      }
-
-      return this.enableBundle(id);
-    },
-    enableBundle: function enableBundle(id) {
-      var apps = this.bundleApps(id).map(function (app) {
-        return app.id;
-      });
-      this.$store.dispatch('enableApp', {
-        appId: apps,
-        groups: []
-      }).catch(function (error) {
-        console.log(error);
-        OC.Notification.show(error);
-      });
-    },
-    disableBundle: function disableBundle(id) {
-      var apps = this.bundleApps(id).map(function (app) {
-        return app.id;
-      });
-      this.$store.dispatch('disableApp', {
-        appId: apps,
-        groups: []
-      }).catch(function (error) {
-        OC.Notification.show(error);
-      });
-    }
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appItem.vue?vue&type=script&lang=js&":
-/*!****************************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appList/appItem.vue?vue&type=script&lang=js& ***!
-  \****************************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-multiselect */ "./node_modules/vue-multiselect/dist/vue-multiselect.min.js");
-/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _appScore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./appScore */ "./settings/src/components/appList/appScore.vue");
-/* harmony import */ var _appManagement__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../appManagement */ "./settings/src/components/appManagement.vue");
-/* harmony import */ var _svgFilterMixin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../svgFilterMixin */ "./settings/src/components/svgFilterMixin.vue");
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-
-
-
-
-/* harmony default export */ __webpack_exports__["default"] = ({
-  name: 'appItem',
-  mixins: [_appManagement__WEBPACK_IMPORTED_MODULE_2__["default"], _svgFilterMixin__WEBPACK_IMPORTED_MODULE_3__["default"]],
-  props: {
-    app: {},
-    category: {},
-    listView: {
-      type: Boolean,
-      default: true
-    }
-  },
-  watch: {
-    '$route.params.id': function $routeParamsId(id) {
-      this.isSelected = this.app.id === id;
-    }
-  },
-  components: {
-    Multiselect: vue_multiselect__WEBPACK_IMPORTED_MODULE_0___default.a,
-    AppScore: _appScore__WEBPACK_IMPORTED_MODULE_1__["default"]
-  },
-  data: function data() {
-    return {
-      isSelected: false,
-      scrolled: false
-    };
-  },
-  mounted: function mounted() {
-    this.isSelected = this.app.id === this.$route.params.id;
-  },
-  computed: {},
-  watchers: {},
-  methods: {
-    showAppDetails: function showAppDetails(event) {
-      if (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {
-        return;
-      }
-
-      this.$router.push({
-        name: 'apps-details',
-        params: {
-          category: this.category,
-          id: this.app.id
-        }
-      });
-    },
-    prefix: function prefix(_prefix, content) {
-      return _prefix + '_' + content;
-    }
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appScore.vue?vue&type=script&lang=js&":
-/*!*****************************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appList/appScore.vue?vue&type=script&lang=js& ***!
-  \*****************************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-/* harmony default export */ __webpack_exports__["default"] = ({
-  name: 'appScore',
-  props: ['score'],
-  computed: {
-    scoreImage: function scoreImage() {
-      var score = Math.round(this.score * 10);
-      var imageName = 'rating/s' + score + '.svg';
-      return OC.imagePath('core', imageName);
-    }
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appManagement.vue?vue&type=script&lang=js&":
-/*!**************************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appManagement.vue?vue&type=script&lang=js& ***!
-  \**************************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-/* harmony default export */ __webpack_exports__["default"] = ({
-  mounted: function mounted() {
-    if (this.app.groups.length > 0) {
-      this.groupCheckedAppsData = true;
-    }
-  },
-  computed: {
-    appGroups: function appGroups() {
-      return this.app.groups.map(function (group) {
-        return {
-          id: group,
-          name: group
-        };
-      });
-    },
-    loading: function loading() {
-      var self = this;
-      return function (id) {
-        return self.$store.getters.loading(id);
-      };
-    },
-    installing: function installing() {
-      return this.$store.getters.loading('install');
-    },
-    enableButtonText: function enableButtonText() {
-      if (this.app.needsDownload) {
-        return t('settings', 'Download and enable');
-      }
-
-      return t('settings', 'Enable');
-    },
-    forceEnableButtonText: function forceEnableButtonText() {
-      if (this.app.needsDownload) {
-        return t('settings', 'Enable untested app');
-      }
-
-      return t('settings', 'Enable untested app');
-    },
-    enableButtonTooltip: function enableButtonTooltip() {
-      if (this.app.needsDownload) {
-        return t('settings', 'The app will be downloaded from the app store');
-      }
-
-      return false;
-    },
-    forceEnableButtonTooltip: function forceEnableButtonTooltip() {
-      var base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.');
-
-      if (this.app.needsDownload) {
-        return base + ' ' + t('settings', 'The app will be downloaded from the app store');
-      }
-
-      return base;
-    }
-  },
-  methods: {
-    asyncFindGroup: function asyncFindGroup(query) {
-      return this.$store.dispatch('getGroups', {
-        search: query,
-        limit: 5,
-        offset: 0
-      });
-    },
-    isLimitedToGroups: function isLimitedToGroups(app) {
-      if (this.app.groups.length || this.groupCheckedAppsData) {
-        return true;
-      }
-
-      return false;
-    },
-    setGroupLimit: function setGroupLimit() {
-      if (!this.groupCheckedAppsData) {
-        this.$store.dispatch('enableApp', {
-          appId: this.app.id,
-          groups: []
-        });
-      }
-    },
-    canLimitToGroups: function canLimitToGroups(app) {
-      if (app.types && app.types.includes('filesystem') || app.types.includes('prelogin') || app.types.includes('authentication') || app.types.includes('logging') || app.types.includes('prevent_group_restriction')) {
-        return false;
-      }
-
-      return true;
-    },
-    addGroupLimitation: function addGroupLimitation(group) {
-      var groups = this.app.groups.concat([]).concat([group.id]);
-      this.$store.dispatch('enableApp', {
-        appId: this.app.id,
-        groups: groups
-      });
-    },
-    removeGroupLimitation: function removeGroupLimitation(group) {
-      var currentGroups = this.app.groups.concat([]);
-      var index = currentGroups.indexOf(group.id);
-
-      if (index > -1) {
-        currentGroups.splice(index, 1);
-      }
-
-      this.$store.dispatch('enableApp', {
-        appId: this.app.id,
-        groups: currentGroups
-      });
-    },
-    forceEnable: function forceEnable(appId) {
-      this.$store.dispatch('forceEnableApp', {
-        appId: appId,
-        groups: []
-      }).then(function (response) {
-        OC.Settings.Apps.rebuildNavigation();
-      }).catch(function (error) {
-        OC.Notification.show(error);
-      });
-    },
-    enable: function enable(appId) {
-      this.$store.dispatch('enableApp', {
-        appId: appId,
-        groups: []
-      }).then(function (response) {
-        OC.Settings.Apps.rebuildNavigation();
-      }).catch(function (error) {
-        OC.Notification.show(error);
-      });
-    },
-    disable: function disable(appId) {
-      this.$store.dispatch('disableApp', {
-        appId: appId
-      }).then(function (response) {
-        OC.Settings.Apps.rebuildNavigation();
-      }).catch(function (error) {
-        OC.Notification.show(error);
-      });
-    },
-    remove: function remove(appId) {
-      this.$store.dispatch('uninstallApp', {
-        appId: appId
-      }).then(function (response) {
-        OC.Settings.Apps.rebuildNavigation();
-      }).catch(function (error) {
-        OC.Notification.show(error);
-      });
-    },
-    install: function install(appId) {
-      this.$store.dispatch('enableApp', {
-        appId: appId
-      }).then(function (response) {
-        OC.Settings.Apps.rebuildNavigation();
-      }).catch(function (error) {
-        OC.Notification.show(error);
-      });
-    },
-    update: function update(appId) {
-      this.$store.dispatch('updateApp', {
-        appId: appId
-      }).then(function (response) {
-        OC.Settings.Apps.rebuildNavigation();
-      }).catch(function (error) {
-        OC.Notification.show(error);
-      });
-    }
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/prefixMixin.vue?vue&type=script&lang=js&":
-/*!************************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/prefixMixin.vue?vue&type=script&lang=js& ***!
-  \************************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-/* harmony default export */ __webpack_exports__["default"] = ({
-  name: 'prefixMixin',
-  methods: {
-    prefix: function prefix(_prefix, content) {
-      return _prefix + '_' + content;
-    }
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/svgFilterMixin.vue?vue&type=script&lang=js&":
-/*!***************************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/svgFilterMixin.vue?vue&type=script&lang=js& ***!
-  \***************************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-/* harmony default export */ __webpack_exports__["default"] = ({
-  name: 'svgFilterMixin',
-  mounted: function mounted() {
-    this.filterId = 'invertIconApps' + Math.floor(Math.random() * 100) + new Date().getSeconds() + new Date().getMilliseconds();
-  },
-  computed: {
-    filterUrl: function filterUrl() {
-      return "url(#".concat(this.filterId, ")");
-    }
-  },
-  data: function data() {
-    return {
-      filterId: ''
-    };
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/views/Apps.vue?vue&type=script&lang=js&":
-/*!************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/views/Apps.vue?vue&type=script&lang=js& ***!
-  \************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! nextcloud-vue */ "./node_modules/nextcloud-vue/dist/ncvuecomponents.js");
-/* harmony import */ var nextcloud_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _components_appList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/appList */ "./settings/src/components/appList.vue");
-/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js");
-/* harmony import */ var vue_localstorage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-localstorage */ "./node_modules/vue-localstorage/dist/vue-local-storage.js");
-/* harmony import */ var vue_localstorage__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue_localstorage__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _components_appDetails__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../components/appDetails */ "./settings/src/components/appDetails.vue");
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-
-
-
-
-
-vue__WEBPACK_IMPORTED_MODULE_2__["default"].use(vue_localstorage__WEBPACK_IMPORTED_MODULE_3___default.a);
-/* harmony default export */ __webpack_exports__["default"] = ({
-  name: 'Apps',
-  props: {
-    category: {
-      type: String,
-      default: 'installed'
-    },
-    id: {
-      type: String,
-      default: ''
-    }
-  },
-  components: {
-    AppContent: nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__["AppContent"],
-    AppDetails: _components_appDetails__WEBPACK_IMPORTED_MODULE_4__["default"],
-    appList: _components_appList__WEBPACK_IMPORTED_MODULE_1__["default"],
-    AppNavigationItem: nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__["AppNavigationItem"]
-  },
-  methods: {
-    setSearch: function setSearch(query) {
-      this.searchQuery = query;
-    },
-    resetSearch: function resetSearch() {
-      this.setSearch('');
-    }
-  },
-  beforeMount: function beforeMount() {
-    this.$store.dispatch('getCategories');
-    this.$store.dispatch('getAllApps');
-    this.$store.dispatch('getGroups', {
-      offset: 0,
-      limit: 5
-    });
-    this.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount);
-  },
-  mounted: function mounted() {
-    /** 
-     * Register search
-     */
-    this.appSearch = new OCA.Search(this.setSearch, this.resetSearch);
-  },
-  data: function data() {
-    return {
-      searchQuery: ''
-    };
-  },
-  watch: {
-    category: function category(val, old) {
-      this.setSearch('');
-    }
-  },
-  computed: {
-    loading: function loading() {
-      return this.$store.getters.loading('categories');
-    },
-    loadingList: function loadingList() {
-      return this.$store.getters.loading('list');
-    },
-    currentApp: function currentApp() {
-      var _this = this;
-
-      return this.apps.find(function (app) {
-        return app.id === _this.id;
-      });
-    },
-    categories: function categories() {
-      return this.$store.getters.getCategories;
-    },
-    apps: function apps() {
-      return this.$store.getters.getAllApps;
-    },
-    updateCount: function updateCount() {
-      return this.$store.getters.getUpdateCount;
-    },
-    settings: function settings() {
-      return this.$store.getters.getServerData;
-    },
-    // BUILD APP NAVIGATION MENU OBJECT
-    menu: function menu() {
-      var _this2 = this;
-
-      // Data provided php side
-      var categories = this.$store.getters.getCategories;
-      categories = Array.isArray(categories) ? categories : []; // Map groups
-
-      categories = categories.map(function (category) {
-        var item = {};
-        item.id = 'app-category-' + category.ident;
-        item.icon = 'icon-category-' + category.ident;
-        item.classes = []; // empty classes, active will be set later
-
-        item.router = {
-          // router link to
-          name: 'apps-category',
-          params: {
-            category: category.ident
-          }
-        };
-        item.text = category.displayName;
-        return item;
-      }); // Add everyone group
-
-      var defaultCategories = [{
-        id: 'app-category-your-apps',
-        classes: [],
-        router: {
-          name: 'apps'
-        },
-        icon: 'icon-category-installed',
-        text: t('settings', 'Your apps')
-      }, {
-        id: 'app-category-enabled',
-        classes: [],
-        icon: 'icon-category-enabled',
-        router: {
-          name: 'apps-category',
-          params: {
-            category: 'enabled'
-          }
-        },
-        text: t('settings', 'Active apps')
-      }, {
-        id: 'app-category-disabled',
-        classes: [],
-        icon: 'icon-category-disabled',
-        router: {
-          name: 'apps-category',
-          params: {
-            category: 'disabled'
-          }
-        },
-        text: t('settings', 'Disabled apps')
-      }];
-
-      if (!this.settings.appstoreEnabled) {
-        return defaultCategories;
-      }
-
-      if (this.$store.getters.getUpdateCount > 0) {
-        defaultCategories.push({
-          id: 'app-category-updates',
-          classes: [],
-          icon: 'icon-download',
-          router: {
-            name: 'apps-category',
-            params: {
-              category: 'updates'
-            }
-          },
-          text: t('settings', 'Updates'),
-          utils: {
-            counter: this.$store.getters.getUpdateCount
-          }
-        });
-      }
-
-      defaultCategories.push({
-        id: 'app-category-app-bundles',
-        classes: [],
-        icon: 'icon-category-app-bundles',
-        router: {
-          name: 'apps-category',
-          params: {
-            category: 'app-bundles'
-          }
-        },
-        text: t('settings', 'App bundles')
-      });
-      categories = defaultCategories.concat(categories); // Set current group as active
-
-      var activeGroup = categories.findIndex(function (group) {
-        return group.id === 'app-category-' + _this2.category;
-      });
-
-      if (activeGroup >= 0) {
-        categories[activeGroup].classes.push('active');
-      } else {
-        categories[0].classes.push('active');
-      }
-
-      categories.push({
-        id: 'app-developer-docs',
-        classes: [],
-        href: this.settings.developerDocumentation,
-        text: t('settings', 'Developer documentation') + ' ↗'
-      }); // Return
-
-      return categories;
-    }
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&":
-/*!**********************************************************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css& ***!
-  \**********************************************************************************************************************************************************************************************************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-exports = module.exports = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
-// Module
-exports.push([module.i, "\n.force[data-v-02f2d131] {\n\tbackground: var(--color-main-background);\n\tborder-color: var(--color-error);\n\tcolor: var(--color-error);\n}\n.force[data-v-02f2d131]:hover,\n.force[data-v-02f2d131]:active {\n\tbackground: var(--color-error);\n\tborder-color: var(--color-error) !important;\n\tcolor: var(--color-main-background);\n}\n", ""]);
-
-
-
-/***/ }),
-
-/***/ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&":
-/*!***************************************************************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appList/appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css& ***!
-  \***************************************************************************************************************************************************************************************************************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-exports = module.exports = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js")(false);
-// Module
-exports.push([module.i, "\n.force[data-v-09ee4a84] {\n\tbackground: var(--color-main-background);\n\tborder-color: var(--color-error);\n\tcolor: var(--color-error);\n}\n.force[data-v-09ee4a84]:hover,\n.force[data-v-09ee4a84]:active {\n\tbackground: var(--color-error);\n\tborder-color: var(--color-error) !important;\n\tcolor: var(--color-main-background);\n}\n", ""]);
-
-
-
-/***/ }),
-
-/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appDetails.vue?vue&type=template&id=02f2d131&scoped=true&":
-/*!*************************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appDetails.vue?vue&type=template&id=02f2d131&scoped=true& ***!
-  \*************************************************************************************************************************************************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
-var render = function() {
-  var _vm = this
-  var _h = _vm.$createElement
-  var _c = _vm._self._c || _h
-  return _c(
-    "div",
-    { staticStyle: { padding: "20px" }, attrs: { id: "app-details-view" } },
-    [
-      _c(
-        "a",
-        {
-          staticClass: "close icon-close",
-          attrs: { href: "#" },
-          on: { click: _vm.hideAppDetails }
-        },
-        [_c("span", { staticClass: "hidden-visually" }, [_vm._v("Close")])]
-      ),
-      _vm._v(" "),
-      _c("h2", [
-        !_vm.app.preview
-          ? _c("div", { staticClass: "icon-settings-dark" })
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.app.previewAsIcon && _vm.app.preview
-          ? _c(
-              "svg",
-              { attrs: { width: "32", height: "32", viewBox: "0 0 32 32" } },
-              [
-                _c("defs", [
-                  _c(
-                    "filter",
-                    { attrs: { id: _vm.filterId } },
-                    [
-                      _c("feColorMatrix", {
-                        attrs: {
-                          in: "SourceGraphic",
-                          type: "matrix",
-                          values: "-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"
-                        }
-                      })
-                    ],
-                    1
-                  )
-                ]),
-                _vm._v(" "),
-                _c("image", {
-                  staticClass: "app-icon",
-                  attrs: {
-                    x: "0",
-                    y: "0",
-                    width: "32",
-                    height: "32",
-                    preserveAspectRatio: "xMinYMin meet",
-                    filter: _vm.filterUrl,
-                    "xlink:href": _vm.app.preview
-                  }
-                })
-              ]
-            )
-          : _vm._e(),
-        _vm._v("\n\t\t" + _vm._s(_vm.app.name))
-      ]),
-      _vm._v(" "),
-      _vm.app.screenshot
-        ? _c("img", { attrs: { src: _vm.app.screenshot, width: "100%" } })
-        : _vm._e(),
-      _vm._v(" "),
-      _vm.app.level === 200 || _vm.hasRating
-        ? _c(
-            "div",
-            { staticClass: "app-level" },
-            [
-              _vm.app.level === 200
-                ? _c(
-                    "span",
-                    {
-                      directives: [
-                        {
-                          name: "tooltip",
-                          rawName: "v-tooltip.auto",
-                          value: _vm.t(
-                            "settings",
-                            "Official apps are developed by and within the community. They offer central functionality and are ready for production use."
-                          ),
-                          expression:
-                            "t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')",
-                          modifiers: { auto: true }
-                        }
-                      ],
-                      staticClass: "official icon-checkmark"
-                    },
-                    [_vm._v("\n\t\t\t" + _vm._s(_vm.t("settings", "Official")))]
-                  )
-                : _vm._e(),
-              _vm._v(" "),
-              _vm.hasRating
-                ? _c("app-score", {
-                    attrs: { score: _vm.app.appstoreData.ratingOverall }
-                  })
-                : _vm._e()
-            ],
-            1
-          )
-        : _vm._e(),
-      _vm._v(" "),
-      _vm.author
-        ? _c(
-            "div",
-            { staticClass: "app-author" },
-            [
-              _vm._v("\n\t\t" + _vm._s(_vm.t("settings", "by")) + "\n\t\t"),
-              _vm._l(_vm.author, function(a, index) {
-                return _c("span", [
-                  a["@attributes"] && a["@attributes"]["homepage"]
-                    ? _c(
-                        "a",
-                        { attrs: { href: a["@attributes"]["homepage"] } },
-                        [_vm._v(_vm._s(a["@value"]))]
-                      )
-                    : a["@value"]
-                    ? _c("span", [_vm._v(_vm._s(a["@value"]))])
-                    : _c("span", [_vm._v(_vm._s(a))]),
-                  index + 1 < _vm.author.length
-                    ? _c("span", [_vm._v(", ")])
-                    : _vm._e()
-                ])
-              })
-            ],
-            2
-          )
-        : _vm._e(),
-      _vm._v(" "),
-      _vm.licence
-        ? _c("div", { staticClass: "app-licence" }, [
-            _vm._v(_vm._s(_vm.licence))
-          ])
-        : _vm._e(),
-      _vm._v(" "),
-      _c("div", { staticClass: "actions" }, [
-        _c("div", { staticClass: "actions-buttons" }, [
-          _vm.app.update
-            ? _c("input", {
-                staticClass: "update primary",
-                attrs: {
-                  type: "button",
-                  value: _vm.t("settings", "Update to {version}", {
-                    version: _vm.app.update
-                  }),
-                  disabled: _vm.installing || _vm.loading(_vm.app.id)
-                },
-                on: {
-                  click: function($event) {
-                    return _vm.update(_vm.app.id)
-                  }
-                }
-              })
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.app.canUnInstall
-            ? _c("input", {
-                staticClass: "uninstall",
-                attrs: {
-                  type: "button",
-                  value: _vm.t("settings", "Remove"),
-                  disabled: _vm.installing || _vm.loading(_vm.app.id)
-                },
-                on: {
-                  click: function($event) {
-                    return _vm.remove(_vm.app.id)
-                  }
-                }
-              })
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.app.active
-            ? _c("input", {
-                staticClass: "enable",
-                attrs: {
-                  type: "button",
-                  value: _vm.t("settings", "Disable"),
-                  disabled: _vm.installing || _vm.loading(_vm.app.id)
-                },
-                on: {
-                  click: function($event) {
-                    return _vm.disable(_vm.app.id)
-                  }
-                }
-              })
-            : _vm._e(),
-          _vm._v(" "),
-          !_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible)
-            ? _c("input", {
-                directives: [
-                  {
-                    name: "tooltip",
-                    rawName: "v-tooltip.auto",
-                    value: _vm.enableButtonTooltip,
-                    expression: "enableButtonTooltip",
-                    modifiers: { auto: true }
-                  }
-                ],
-                staticClass: "enable primary",
-                attrs: {
-                  type: "button",
-                  value: _vm.enableButtonText,
-                  disabled:
-                    !_vm.app.canInstall ||
-                    _vm.installing ||
-                    _vm.loading(_vm.app.id)
-                },
-                on: {
-                  click: function($event) {
-                    return _vm.enable(_vm.app.id)
-                  }
-                }
-              })
-            : !_vm.app.active
-            ? _c("input", {
-                directives: [
-                  {
-                    name: "tooltip",
-                    rawName: "v-tooltip.auto",
-                    value: _vm.forceEnableButtonTooltip,
-                    expression: "forceEnableButtonTooltip",
-                    modifiers: { auto: true }
-                  }
-                ],
-                staticClass: "enable force",
-                attrs: {
-                  type: "button",
-                  value: _vm.forceEnableButtonText,
-                  disabled: _vm.installing || _vm.loading(_vm.app.id)
-                },
-                on: {
-                  click: function($event) {
-                    return _vm.forceEnable(_vm.app.id)
-                  }
-                }
-              })
-            : _vm._e()
-        ]),
-        _vm._v(" "),
-        _c("div", { staticClass: "app-groups" }, [
-          _vm.app.active && _vm.canLimitToGroups(_vm.app)
-            ? _c(
-                "div",
-                { staticClass: "groups-enable" },
-                [
-                  _c("input", {
-                    directives: [
-                      {
-                        name: "model",
-                        rawName: "v-model",
-                        value: _vm.groupCheckedAppsData,
-                        expression: "groupCheckedAppsData"
-                      }
-                    ],
-                    staticClass: "groups-enable__checkbox checkbox",
-                    attrs: {
-                      type: "checkbox",
-                      id: _vm.prefix("groups_enable", _vm.app.id)
-                    },
-                    domProps: {
-                      value: _vm.app.id,
-                      checked: Array.isArray(_vm.groupCheckedAppsData)
-                        ? _vm._i(_vm.groupCheckedAppsData, _vm.app.id) > -1
-                        : _vm.groupCheckedAppsData
-                    },
-                    on: {
-                      change: [
-                        function($event) {
-                          var $$a = _vm.groupCheckedAppsData,
-                            $$el = $event.target,
-                            $$c = $$el.checked ? true : false
-                          if (Array.isArray($$a)) {
-                            var $$v = _vm.app.id,
-                              $$i = _vm._i($$a, $$v)
-                            if ($$el.checked) {
-                              $$i < 0 &&
-                                (_vm.groupCheckedAppsData = $$a.concat([$$v]))
-                            } else {
-                              $$i > -1 &&
-                                (_vm.groupCheckedAppsData = $$a
-                                  .slice(0, $$i)
-                                  .concat($$a.slice($$i + 1)))
-                            }
-                          } else {
-                            _vm.groupCheckedAppsData = $$c
-                          }
-                        },
-                        _vm.setGroupLimit
-                      ]
-                    }
-                  }),
-                  _vm._v(" "),
-                  _c(
-                    "label",
-                    { attrs: { for: _vm.prefix("groups_enable", _vm.app.id) } },
-                    [_vm._v(_vm._s(_vm.t("settings", "Limit to groups")))]
-                  ),
-                  _vm._v(" "),
-                  _c("input", {
-                    staticClass: "group_select",
-                    attrs: {
-                      type: "hidden",
-                      title: _vm.t("settings", "All"),
-                      value: ""
-                    }
-                  }),
-                  _vm._v(" "),
-                  _vm.isLimitedToGroups(_vm.app)
-                    ? _c(
-                        "multiselect",
-                        {
-                          staticClass: "multiselect-vue",
-                          attrs: {
-                            options: _vm.groups,
-                            value: _vm.appGroups,
-                            "options-limit": 5,
-                            placeholder: _vm.t(
-                              "settings",
-                              "Limit app usage to groups"
-                            ),
-                            label: "name",
-                            "track-by": "id",
-                            multiple: true,
-                            "close-on-select": false
-                          },
-                          on: {
-                            select: _vm.addGroupLimitation,
-                            remove: _vm.removeGroupLimitation,
-                            "search-change": _vm.asyncFindGroup
-                          }
-                        },
-                        [
-                          _c(
-                            "span",
-                            { attrs: { slot: "noResult" }, slot: "noResult" },
-                            [_vm._v(_vm._s(_vm.t("settings", "No results")))]
-                          )
-                        ]
-                      )
-                    : _vm._e()
-                ],
-                1
-              )
-            : _vm._e()
-        ])
-      ]),
-      _vm._v(" "),
-      _c("p", { staticClass: "documentation" }, [
-        !_vm.app.internal
-          ? _c(
-              "a",
-              {
-                staticClass: "appslink",
-                attrs: {
-                  href: _vm.appstoreUrl,
-                  target: "_blank",
-                  rel: "noreferrer noopener"
-                }
-              },
-              [_vm._v(_vm._s(_vm.t("settings", "View in store")) + " ↗")]
-            )
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.app.website
-          ? _c(
-              "a",
-              {
-                staticClass: "appslink",
-                attrs: {
-                  href: _vm.app.website,
-                  target: "_blank",
-                  rel: "noreferrer noopener"
-                }
-              },
-              [_vm._v(_vm._s(_vm.t("settings", "Visit website")) + " ↗")]
-            )
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.app.bugs
-          ? _c(
-              "a",
-              {
-                staticClass: "appslink",
-                attrs: {
-                  href: _vm.app.bugs,
-                  target: "_blank",
-                  rel: "noreferrer noopener"
-                }
-              },
-              [_vm._v(_vm._s(_vm.t("settings", "Report a bug")) + " ↗")]
-            )
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.app.documentation && _vm.app.documentation.user
-          ? _c(
-              "a",
-              {
-                staticClass: "appslink",
-                attrs: {
-                  href: _vm.app.documentation.user,
-                  target: "_blank",
-                  rel: "noreferrer noopener"
-                }
-              },
-              [_vm._v(_vm._s(_vm.t("settings", "User documentation")) + " ↗")]
-            )
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.app.documentation && _vm.app.documentation.admin
-          ? _c(
-              "a",
-              {
-                staticClass: "appslink",
-                attrs: {
-                  href: _vm.app.documentation.admin,
-                  target: "_blank",
-                  rel: "noreferrer noopener"
-                }
-              },
-              [_vm._v(_vm._s(_vm.t("settings", "Admin documentation")) + " ↗")]
-            )
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.app.documentation && _vm.app.documentation.developer
-          ? _c(
-              "a",
-              {
-                staticClass: "appslink",
-                attrs: {
-                  href: _vm.app.documentation.developer,
-                  target: "_blank",
-                  rel: "noreferrer noopener"
-                }
-              },
-              [
-                _vm._v(
-                  _vm._s(_vm.t("settings", "Developer documentation")) + " ↗"
-                )
-              ]
-            )
-          : _vm._e()
-      ]),
-      _vm._v(" "),
-      _c("ul", { staticClass: "app-dependencies" }, [
-        _vm.app.missingMinOwnCloudVersion
-          ? _c("li", [
-              _vm._v(
-                _vm._s(
-                  _vm.t(
-                    "settings",
-                    "This app has no minimum Nextcloud version assigned. This will be an error in the future."
-                  )
-                )
-              )
-            ])
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.app.missingMaxOwnCloudVersion
-          ? _c("li", [
-              _vm._v(
-                _vm._s(
-                  _vm.t(
-                    "settings",
-                    "This app has no maximum Nextcloud version assigned. This will be an error in the future."
-                  )
-                )
-              )
-            ])
-          : _vm._e(),
-        _vm._v(" "),
-        !_vm.app.canInstall
-          ? _c("li", [
-              _vm._v(
-                "\n\t\t\t" +
-                  _vm._s(
-                    _vm.t(
-                      "settings",
-                      "This app cannot be installed because the following dependencies are not fulfilled:"
-                    )
-                  ) +
-                  "\n\t\t\t"
-              ),
-              _c(
-                "ul",
-                { staticClass: "missing-dependencies" },
-                _vm._l(_vm.app.missingDependencies, function(dep) {
-                  return _c("li", [_vm._v(_vm._s(dep))])
-                }),
-                0
-              )
-            ])
-          : _vm._e()
-      ]),
-      _vm._v(" "),
-      _c("div", {
-        staticClass: "app-description",
-        domProps: { innerHTML: _vm._s(_vm.renderMarkdown) }
-      })
-    ]
-  )
-}
-var staticRenderFns = []
-render._withStripped = true
-
-
-
-/***/ }),
-
-/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList.vue?vue&type=template&id=11a8c382&":
-/*!**********************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appList.vue?vue&type=template&id=11a8c382& ***!
-  \**********************************************************************************************************************************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
-var render = function() {
-  var _vm = this
-  var _h = _vm.$createElement
-  var _c = _vm._self._c || _h
-  return _c("div", { attrs: { id: "app-content-inner" } }, [
-    _c(
-      "div",
-      {
-        staticClass: "apps-list",
-        class: {
-          installed: _vm.useBundleView || _vm.useListView,
-          store: _vm.useAppStoreView
-        },
-        attrs: { id: "apps-list" }
-      },
-      [
-        _vm.useListView
-          ? [
-              _c(
-                "transition-group",
-                {
-                  staticClass: "apps-list-container",
-                  attrs: { name: "app-list", tag: "div" }
-                },
-                _vm._l(_vm.apps, function(app) {
-                  return _c("app-item", {
-                    key: app.id,
-                    attrs: { app: app, category: _vm.category }
-                  })
-                }),
-                1
-              )
-            ]
-          : _vm._e(),
-        _vm._v(" "),
-        _vm._l(_vm.bundles, function(bundle) {
-          return _vm.useBundleView && _vm.bundleApps(bundle.id).length > 0
-            ? [
-                _c(
-                  "transition-group",
-                  {
-                    staticClass: "apps-list-container",
-                    attrs: { name: "app-list", tag: "div" }
-                  },
-                  [
-                    _c("div", { key: bundle.id, staticClass: "apps-header" }, [
-                      _c("div", { staticClass: "app-image" }),
-                      _vm._v(" "),
-                      _c("h2", [
-                        _vm._v(_vm._s(bundle.name) + " "),
-                        _c("input", {
-                          attrs: {
-                            type: "button",
-                            value: _vm.bundleToggleText(bundle.id)
-                          },
-                          on: {
-                            click: function($event) {
-                              return _vm.toggleBundle(bundle.id)
-                            }
-                          }
-                        })
-                      ]),
-                      _vm._v(" "),
-                      _c("div", { staticClass: "app-version" }),
-                      _vm._v(" "),
-                      _c("div", { staticClass: "app-level" }),
-                      _vm._v(" "),
-                      _c("div", { staticClass: "app-groups" }),
-                      _vm._v(" "),
-                      _c("div", { staticClass: "actions" }, [_vm._v(" ")])
-                    ]),
-                    _vm._v(" "),
-                    _vm._l(_vm.bundleApps(bundle.id), function(app) {
-                      return _c("app-item", {
-                        key: bundle.id + app.id,
-                        attrs: { app: app, category: _vm.category }
-                      })
-                    })
-                  ],
-                  2
-                )
-              ]
-            : _vm._e()
-        }),
-        _vm._v(" "),
-        _vm.useAppStoreView
-          ? _vm._l(_vm.apps, function(app) {
-              return _c("app-item", {
-                key: app.id,
-                attrs: { app: app, category: _vm.category, "list-view": false }
-              })
-            })
-          : _vm._e()
-      ],
-      2
-    ),
-    _vm._v(" "),
-    _c(
-      "div",
-      { staticClass: "apps-list installed", attrs: { id: "apps-list-search" } },
-      [
-        _c(
-          "div",
-          { staticClass: "apps-list-container" },
-          [
-            _vm.search !== "" && _vm.searchApps.length > 0
-              ? [
-                  _c("div", { staticClass: "section" }, [
-                    _c("div"),
-                    _vm._v(" "),
-                    _c("td", { attrs: { colspan: "5" } }, [
-                      _c("h2", [
-                        _vm._v(
-                          _vm._s(
-                            _vm.t("settings", "Results from other categories")
-                          )
-                        )
-                      ])
-                    ])
-                  ]),
-                  _vm._v(" "),
-                  _vm._l(_vm.searchApps, function(app) {
-                    return _c("app-item", {
-                      key: app.id,
-                      attrs: {
-                        app: app,
-                        category: _vm.category,
-                        "list-view": true
-                      }
-                    })
-                  })
-                ]
-              : _vm._e()
-          ],
-          2
-        )
-      ]
-    ),
-    _vm._v(" "),
-    !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0
-      ? _c(
-          "div",
-          {
-            staticClass: "emptycontent emptycontent-search",
-            attrs: { id: "apps-list-empty" }
-          },
-          [
-            _c("div", {
-              staticClass: "icon-settings-dark",
-              attrs: { id: "app-list-empty-icon" }
-            }),
-            _vm._v(" "),
-            _c("h2", [
-              _vm._v(
-                _vm._s(_vm.t("settings", "No apps found for your version"))
-              )
-            ])
-          ]
-        )
-      : _vm._e(),
-    _vm._v(" "),
-    _c("div", { attrs: { id: "searchresults" } })
-  ])
-}
-var staticRenderFns = []
-render._withStripped = true
-
-
-
-/***/ }),
-
-/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appItem.vue?vue&type=template&id=09ee4a84&scoped=true&":
-/*!******************************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appList/appItem.vue?vue&type=template&id=09ee4a84&scoped=true& ***!
-  \******************************************************************************************************************************************************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
-var render = function() {
-  var _vm = this
-  var _h = _vm.$createElement
-  var _c = _vm._self._c || _h
-  return _c(
-    "div",
-    {
-      staticClass: "section",
-      class: { selected: _vm.isSelected },
-      on: { click: _vm.showAppDetails }
-    },
-    [
-      _c(
-        "div",
-        {
-          staticClass: "app-image app-image-icon",
-          on: { click: _vm.showAppDetails }
-        },
-        [
-          (_vm.listView && !_vm.app.preview) ||
-          (!_vm.listView && !_vm.app.screenshot)
-            ? _c("div", { staticClass: "icon-settings-dark" })
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.listView && _vm.app.preview
-            ? _c(
-                "svg",
-                { attrs: { width: "32", height: "32", viewBox: "0 0 32 32" } },
-                [
-                  _c("defs", [
-                    _c(
-                      "filter",
-                      { attrs: { id: _vm.filterId } },
-                      [
-                        _c("feColorMatrix", {
-                          attrs: {
-                            in: "SourceGraphic",
-                            type: "matrix",
-                            values: "-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"
-                          }
-                        })
-                      ],
-                      1
-                    )
-                  ]),
-                  _vm._v(" "),
-                  _c("image", {
-                    staticClass: "app-icon",
-                    attrs: {
-                      x: "0",
-                      y: "0",
-                      width: "32",
-                      height: "32",
-                      preserveAspectRatio: "xMinYMin meet",
-                      filter: _vm.filterUrl,
-                      "xlink:href": _vm.app.preview
-                    }
-                  })
-                ]
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          !_vm.listView && _vm.app.screenshot
-            ? _c("img", { attrs: { src: _vm.app.screenshot, width: "100%" } })
-            : _vm._e()
-        ]
-      ),
-      _vm._v(" "),
-      _c(
-        "div",
-        { staticClass: "app-name", on: { click: _vm.showAppDetails } },
-        [_vm._v("\n\t\t" + _vm._s(_vm.app.name) + "\n\t")]
-      ),
-      _vm._v(" "),
-      !_vm.listView
-        ? _c("div", { staticClass: "app-summary" }, [
-            _vm._v(_vm._s(_vm.app.summary))
-          ])
-        : _vm._e(),
-      _vm._v(" "),
-      _vm.listView
-        ? _c("div", { staticClass: "app-version" }, [
-            _vm.app.version
-              ? _c("span", [_vm._v(_vm._s(_vm.app.version))])
-              : _vm.app.appstoreData.releases[0].version
-              ? _c("span", [
-                  _vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))
-                ])
-              : _vm._e()
-          ])
-        : _vm._e(),
-      _vm._v(" "),
-      _c(
-        "div",
-        { staticClass: "app-level" },
-        [
-          _vm.app.level === 200
-            ? _c(
-                "span",
-                {
-                  directives: [
-                    {
-                      name: "tooltip",
-                      rawName: "v-tooltip.auto",
-                      value: _vm.t(
-                        "settings",
-                        "Official apps are developed by and within the community. They offer central functionality and are ready for production use."
-                      ),
-                      expression:
-                        "t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')",
-                      modifiers: { auto: true }
-                    }
-                  ],
-                  staticClass: "official icon-checkmark"
-                },
-                [_vm._v("\n\t\t\t" + _vm._s(_vm.t("settings", "Official")))]
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          !_vm.listView
-            ? _c("app-score", { attrs: { score: _vm.app.score } })
-            : _vm._e()
-        ],
-        1
-      ),
-      _vm._v(" "),
-      _c("div", { staticClass: "actions" }, [
-        _vm.app.error
-          ? _c("div", { staticClass: "warning" }, [
-              _vm._v(_vm._s(_vm.app.error))
-            ])
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.loading(_vm.app.id)
-          ? _c("div", { staticClass: "icon icon-loading-small" })
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.app.update
-          ? _c("input", {
-              staticClass: "update primary",
-              attrs: {
-                type: "button",
-                value: _vm.t("settings", "Update to {update}", {
-                  update: _vm.app.update
-                }),
-                disabled: _vm.installing || _vm.loading(_vm.app.id)
-              },
-              on: {
-                click: function($event) {
-                  $event.stopPropagation()
-                  return _vm.update(_vm.app.id)
-                }
-              }
-            })
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.app.canUnInstall
-          ? _c("input", {
-              staticClass: "uninstall",
-              attrs: {
-                type: "button",
-                value: _vm.t("settings", "Remove"),
-                disabled: _vm.installing || _vm.loading(_vm.app.id)
-              },
-              on: {
-                click: function($event) {
-                  $event.stopPropagation()
-                  return _vm.remove(_vm.app.id)
-                }
-              }
-            })
-          : _vm._e(),
-        _vm._v(" "),
-        _vm.app.active
-          ? _c("input", {
-              staticClass: "enable",
-              attrs: {
-                type: "button",
-                value: _vm.t("settings", "Disable"),
-                disabled: _vm.installing || _vm.loading(_vm.app.id)
-              },
-              on: {
-                click: function($event) {
-                  $event.stopPropagation()
-                  return _vm.disable(_vm.app.id)
-                }
-              }
-            })
-          : _vm._e(),
-        _vm._v(" "),
-        !_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible)
-          ? _c("input", {
-              directives: [
-                {
-                  name: "tooltip",
-                  rawName: "v-tooltip.auto",
-                  value: _vm.enableButtonTooltip,
-                  expression: "enableButtonTooltip",
-                  modifiers: { auto: true }
-                }
-              ],
-              staticClass: "enable",
-              attrs: {
-                type: "button",
-                value: _vm.enableButtonText,
-                disabled:
-                  !_vm.app.canInstall ||
-                  _vm.installing ||
-                  _vm.loading(_vm.app.id)
-              },
-              on: {
-                click: function($event) {
-                  $event.stopPropagation()
-                  return _vm.enable(_vm.app.id)
-                }
-              }
-            })
-          : !_vm.app.active
-          ? _c("input", {
-              directives: [
-                {
-                  name: "tooltip",
-                  rawName: "v-tooltip.auto",
-                  value: _vm.forceEnableButtonTooltip,
-                  expression: "forceEnableButtonTooltip",
-                  modifiers: { auto: true }
-                }
-              ],
-              staticClass: "enable force",
-              attrs: {
-                type: "button",
-                value: _vm.forceEnableButtonText,
-                disabled: _vm.installing || _vm.loading(_vm.app.id)
-              },
-              on: {
-                click: function($event) {
-                  $event.stopPropagation()
-                  return _vm.forceEnable(_vm.app.id)
-                }
-              }
-            })
-          : _vm._e()
-      ])
-    ]
-  )
-}
-var staticRenderFns = []
-render._withStripped = true
-
-
-
-/***/ }),
-
-/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appScore.vue?vue&type=template&id=350044f1&":
-/*!*******************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appList/appScore.vue?vue&type=template&id=350044f1& ***!
-  \*******************************************************************************************************************************************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
-var render = function() {
-  var _vm = this
-  var _h = _vm.$createElement
-  var _c = _vm._self._c || _h
-  return _c("img", {
-    staticClass: "app-score-image",
-    attrs: { src: _vm.scoreImage }
-  })
-}
-var staticRenderFns = []
-render._withStripped = true
-
-
-
-/***/ }),
-
-/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/views/Apps.vue?vue&type=template&id=25c6e9ec&":
-/*!**************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/views/Apps.vue?vue&type=template&id=25c6e9ec& ***!
-  \**************************************************************************************************************************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
-var render = function() {
-  var _vm = this
-  var _h = _vm.$createElement
-  var _c = _vm._self._c || _h
-  return _c("AppContent", {
-    class: { "with-app-sidebar": _vm.currentApp },
-    attrs: {
-      "app-name": "settings",
-      "content-class": { "icon-loading": _vm.loadingList },
-      "navigation-class": { "icon-loading": _vm.loading }
-    },
-    scopedSlots: _vm._u(
-      [
-        {
-          key: "navigation",
-          fn: function() {
-            return [
-              _c(
-                "ul",
-                { attrs: { id: "appscategories" } },
-                _vm._l(_vm.menu, function(item) {
-                  return _c("AppNavigationItem", {
-                    key: item.key,
-                    attrs: { item: item }
-                  })
-                }),
-                1
-              )
-            ]
-          },
-          proxy: true
-        },
-        {
-          key: "content",
-          fn: function() {
-            return [
-              _c("app-list", {
-                attrs: {
-                  category: _vm.category,
-                  app: _vm.currentApp,
-                  search: _vm.searchQuery
-                }
-              })
-            ]
-          },
-          proxy: true
-        },
-        _vm.id && _vm.currentApp
-          ? {
-              key: "sidebar",
-              fn: function() {
-                return [
-                  _c("app-details", {
-                    attrs: { category: _vm.category, app: _vm.currentApp }
-                  })
-                ]
-              },
-              proxy: true
-            }
-          : null
-      ],
-      null,
-      true
-    )
-  })
-}
-var staticRenderFns = []
-render._withStripped = true
-
-
-
-/***/ }),
-
-/***/ "./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&":
-/*!******************************************************************************************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/vue-style-loader!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css& ***!
-  \******************************************************************************************************************************************************************************************************************************************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-// style-loader: Adds some css to the DOM by adding a <style> tag
-
-// load the styles
-var content = __webpack_require__(/*! !../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css& */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&");
-if(typeof content === 'string') content = [[module.i, content, '']];
-if(content.locals) module.exports = content.locals;
-// add the styles to the DOM
-var add = __webpack_require__(/*! ../../../node_modules/vue-style-loader/lib/addStylesClient.js */ "./node_modules/vue-style-loader/lib/addStylesClient.js").default
-var update = add("ea375ae0", content, false, {});
-// Hot Module Replacement
-if(false) {}
-
-/***/ }),
-
-/***/ "./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&":
-/*!***********************************************************************************************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/vue-style-loader!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/appList/appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css& ***!
-  \***********************************************************************************************************************************************************************************************************************************************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-// style-loader: Adds some css to the DOM by adding a <style> tag
-
-// load the styles
-var content = __webpack_require__(/*! !../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css& */ "./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&");
-if(typeof content === 'string') content = [[module.i, content, '']];
-if(content.locals) module.exports = content.locals;
-// add the styles to the DOM
-var add = __webpack_require__(/*! ../../../../node_modules/vue-style-loader/lib/addStylesClient.js */ "./node_modules/vue-style-loader/lib/addStylesClient.js").default
-var update = add("732d0d00", content, false, {});
-// Hot Module Replacement
-if(false) {}
-
-/***/ }),
-
-/***/ "./settings/src/components/appDetails.vue":
-/*!************************************************!*\
-  !*** ./settings/src/components/appDetails.vue ***!
-  \************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _appDetails_vue_vue_type_template_id_02f2d131_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appDetails.vue?vue&type=template&id=02f2d131&scoped=true& */ "./settings/src/components/appDetails.vue?vue&type=template&id=02f2d131&scoped=true&");
-/* harmony import */ var _appDetails_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./appDetails.vue?vue&type=script&lang=js& */ "./settings/src/components/appDetails.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _appDetails_vue_vue_type_style_index_0_id_02f2d131_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css& */ "./settings/src/components/appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&");
-/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-
-
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
-  _appDetails_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
-  _appDetails_vue_vue_type_template_id_02f2d131_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"],
-  _appDetails_vue_vue_type_template_id_02f2d131_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
-  false,
-  null,
-  "02f2d131",
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/components/appDetails.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/components/appDetails.vue?vue&type=script&lang=js&":
-/*!*************************************************************************!*\
-  !*** ./settings/src/components/appDetails.vue?vue&type=script&lang=js& ***!
-  \*************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./appDetails.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appDetails.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/components/appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&":
-/*!*********************************************************************************************************!*\
-  !*** ./settings/src/components/appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css& ***!
-  \*********************************************************************************************************/
-/*! no static exports found */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_style_index_0_id_02f2d131_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-style-loader!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css& */ "./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&");
-/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_style_index_0_id_02f2d131_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_style_index_0_id_02f2d131_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__);
-/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_style_index_0_id_02f2d131_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_style_index_0_id_02f2d131_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
- /* harmony default export */ __webpack_exports__["default"] = (_node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_style_index_0_id_02f2d131_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); 
-
-/***/ }),
-
-/***/ "./settings/src/components/appDetails.vue?vue&type=template&id=02f2d131&scoped=true&":
-/*!*******************************************************************************************!*\
-  !*** ./settings/src/components/appDetails.vue?vue&type=template&id=02f2d131&scoped=true& ***!
-  \*******************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_template_id_02f2d131_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./appDetails.vue?vue&type=template&id=02f2d131&scoped=true& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appDetails.vue?vue&type=template&id=02f2d131&scoped=true&");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_template_id_02f2d131_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appDetails_vue_vue_type_template_id_02f2d131_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
-
-
-
-/***/ }),
-
-/***/ "./settings/src/components/appList.vue":
-/*!*********************************************!*\
-  !*** ./settings/src/components/appList.vue ***!
-  \*********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _appList_vue_vue_type_template_id_11a8c382___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appList.vue?vue&type=template&id=11a8c382& */ "./settings/src/components/appList.vue?vue&type=template&id=11a8c382&");
-/* harmony import */ var _appList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./appList.vue?vue&type=script&lang=js& */ "./settings/src/components/appList.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
-  _appList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
-  _appList_vue_vue_type_template_id_11a8c382___WEBPACK_IMPORTED_MODULE_0__["render"],
-  _appList_vue_vue_type_template_id_11a8c382___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
-  false,
-  null,
-  null,
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/components/appList.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/components/appList.vue?vue&type=script&lang=js&":
-/*!**********************************************************************!*\
-  !*** ./settings/src/components/appList.vue?vue&type=script&lang=js& ***!
-  \**********************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./appList.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/components/appList.vue?vue&type=template&id=11a8c382&":
-/*!****************************************************************************!*\
-  !*** ./settings/src/components/appList.vue?vue&type=template&id=11a8c382& ***!
-  \****************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appList_vue_vue_type_template_id_11a8c382___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./appList.vue?vue&type=template&id=11a8c382& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList.vue?vue&type=template&id=11a8c382&");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appList_vue_vue_type_template_id_11a8c382___WEBPACK_IMPORTED_MODULE_0__["render"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appList_vue_vue_type_template_id_11a8c382___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
-
-
-
-/***/ }),
-
-/***/ "./settings/src/components/appList/appItem.vue":
-/*!*****************************************************!*\
-  !*** ./settings/src/components/appList/appItem.vue ***!
-  \*****************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _appItem_vue_vue_type_template_id_09ee4a84_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appItem.vue?vue&type=template&id=09ee4a84&scoped=true& */ "./settings/src/components/appList/appItem.vue?vue&type=template&id=09ee4a84&scoped=true&");
-/* harmony import */ var _appItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./appItem.vue?vue&type=script&lang=js& */ "./settings/src/components/appList/appItem.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _appItem_vue_vue_type_style_index_0_id_09ee4a84_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css& */ "./settings/src/components/appList/appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&");
-/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-
-
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
-  _appItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
-  _appItem_vue_vue_type_template_id_09ee4a84_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"],
-  _appItem_vue_vue_type_template_id_09ee4a84_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
-  false,
-  null,
-  "09ee4a84",
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/components/appList/appItem.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/components/appList/appItem.vue?vue&type=script&lang=js&":
-/*!******************************************************************************!*\
-  !*** ./settings/src/components/appList/appItem.vue?vue&type=script&lang=js& ***!
-  \******************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib??vue-loader-options!./appItem.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appItem.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/components/appList/appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&":
-/*!**************************************************************************************************************!*\
-  !*** ./settings/src/components/appList/appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css& ***!
-  \**************************************************************************************************************/
-/*! no static exports found */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_style_index_0_id_09ee4a84_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-style-loader!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css& */ "./node_modules/vue-style-loader/index.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&");
-/* harmony import */ var _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_style_index_0_id_09ee4a84_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_style_index_0_id_09ee4a84_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__);
-/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_style_index_0_id_09ee4a84_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_style_index_0_id_09ee4a84_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
- /* harmony default export */ __webpack_exports__["default"] = (_node_modules_vue_style_loader_index_js_node_modules_css_loader_dist_cjs_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_style_index_0_id_09ee4a84_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); 
-
-/***/ }),
-
-/***/ "./settings/src/components/appList/appItem.vue?vue&type=template&id=09ee4a84&scoped=true&":
-/*!************************************************************************************************!*\
-  !*** ./settings/src/components/appList/appItem.vue?vue&type=template&id=09ee4a84&scoped=true& ***!
-  \************************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_template_id_09ee4a84_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./appItem.vue?vue&type=template&id=09ee4a84&scoped=true& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appItem.vue?vue&type=template&id=09ee4a84&scoped=true&");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_template_id_09ee4a84_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appItem_vue_vue_type_template_id_09ee4a84_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
-
-
-
-/***/ }),
-
-/***/ "./settings/src/components/appList/appScore.vue":
-/*!******************************************************!*\
-  !*** ./settings/src/components/appList/appScore.vue ***!
-  \******************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _appScore_vue_vue_type_template_id_350044f1___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appScore.vue?vue&type=template&id=350044f1& */ "./settings/src/components/appList/appScore.vue?vue&type=template&id=350044f1&");
-/* harmony import */ var _appScore_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./appScore.vue?vue&type=script&lang=js& */ "./settings/src/components/appList/appScore.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
-  _appScore_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
-  _appScore_vue_vue_type_template_id_350044f1___WEBPACK_IMPORTED_MODULE_0__["render"],
-  _appScore_vue_vue_type_template_id_350044f1___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
-  false,
-  null,
-  null,
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/components/appList/appScore.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/components/appList/appScore.vue?vue&type=script&lang=js&":
-/*!*******************************************************************************!*\
-  !*** ./settings/src/components/appList/appScore.vue?vue&type=script&lang=js& ***!
-  \*******************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appScore_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib??vue-loader-options!./appScore.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appScore.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appScore_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/components/appList/appScore.vue?vue&type=template&id=350044f1&":
-/*!*************************************************************************************!*\
-  !*** ./settings/src/components/appList/appScore.vue?vue&type=template&id=350044f1& ***!
-  \*************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appScore_vue_vue_type_template_id_350044f1___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./appScore.vue?vue&type=template&id=350044f1& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appList/appScore.vue?vue&type=template&id=350044f1&");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appScore_vue_vue_type_template_id_350044f1___WEBPACK_IMPORTED_MODULE_0__["render"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_appScore_vue_vue_type_template_id_350044f1___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
-
-
-
-/***/ }),
-
-/***/ "./settings/src/components/appManagement.vue":
-/*!***************************************************!*\
-  !*** ./settings/src/components/appManagement.vue ***!
-  \***************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _appManagement_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./appManagement.vue?vue&type=script&lang=js& */ "./settings/src/components/appManagement.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-var render, staticRenderFns
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__["default"])(
-  _appManagement_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
-  render,
-  staticRenderFns,
-  false,
-  null,
-  null,
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/components/appManagement.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/components/appManagement.vue?vue&type=script&lang=js&":
-/*!****************************************************************************!*\
-  !*** ./settings/src/components/appManagement.vue?vue&type=script&lang=js& ***!
-  \****************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appManagement_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./appManagement.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/appManagement.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_appManagement_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/components/prefixMixin.vue":
-/*!*************************************************!*\
-  !*** ./settings/src/components/prefixMixin.vue ***!
-  \*************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _prefixMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prefixMixin.vue?vue&type=script&lang=js& */ "./settings/src/components/prefixMixin.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-var render, staticRenderFns
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__["default"])(
-  _prefixMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
-  render,
-  staticRenderFns,
-  false,
-  null,
-  null,
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/components/prefixMixin.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/components/prefixMixin.vue?vue&type=script&lang=js&":
-/*!**************************************************************************!*\
-  !*** ./settings/src/components/prefixMixin.vue?vue&type=script&lang=js& ***!
-  \**************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_prefixMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./prefixMixin.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/prefixMixin.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_prefixMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/components/svgFilterMixin.vue":
-/*!****************************************************!*\
-  !*** ./settings/src/components/svgFilterMixin.vue ***!
-  \****************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _svgFilterMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./svgFilterMixin.vue?vue&type=script&lang=js& */ "./settings/src/components/svgFilterMixin.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-var render, staticRenderFns
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__["default"])(
-  _svgFilterMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"],
-  render,
-  staticRenderFns,
-  false,
-  null,
-  null,
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/components/svgFilterMixin.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/components/svgFilterMixin.vue?vue&type=script&lang=js&":
-/*!*****************************************************************************!*\
-  !*** ./settings/src/components/svgFilterMixin.vue?vue&type=script&lang=js& ***!
-  \*****************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_svgFilterMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./svgFilterMixin.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/svgFilterMixin.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_svgFilterMixin_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/views/Apps.vue":
-/*!*************************************!*\
-  !*** ./settings/src/views/Apps.vue ***!
-  \*************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _Apps_vue_vue_type_template_id_25c6e9ec___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Apps.vue?vue&type=template&id=25c6e9ec& */ "./settings/src/views/Apps.vue?vue&type=template&id=25c6e9ec&");
-/* harmony import */ var _Apps_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Apps.vue?vue&type=script&lang=js& */ "./settings/src/views/Apps.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
-  _Apps_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
-  _Apps_vue_vue_type_template_id_25c6e9ec___WEBPACK_IMPORTED_MODULE_0__["render"],
-  _Apps_vue_vue_type_template_id_25c6e9ec___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
-  false,
-  null,
-  null,
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/views/Apps.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/views/Apps.vue?vue&type=script&lang=js&":
-/*!**************************************************************!*\
-  !*** ./settings/src/views/Apps.vue?vue&type=script&lang=js& ***!
-  \**************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Apps_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./Apps.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/views/Apps.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Apps_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/views/Apps.vue?vue&type=template&id=25c6e9ec&":
-/*!********************************************************************!*\
-  !*** ./settings/src/views/Apps.vue?vue&type=template&id=25c6e9ec& ***!
-  \********************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Apps_vue_vue_type_template_id_25c6e9ec___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./Apps.vue?vue&type=template&id=25c6e9ec& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/views/Apps.vue?vue&type=template&id=25c6e9ec&");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Apps_vue_vue_type_template_id_25c6e9ec___WEBPACK_IMPORTED_MODULE_0__["render"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Apps_vue_vue_type_template_id_25c6e9ec___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
-
-
-
-/***/ })
-
-}]);
-//# sourceMappingURL=vue-1.js.map
\ No newline at end of file
diff --git a/settings/js/vue-1.js.map b/settings/js/vue-1.js.map
deleted file mode 100644 (file)
index a086556..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"vue-1.js","sources":["webpack:///./settings/src/components/appDetails.vue?b288","webpack:///./settings/src/components/appList.vue?da0c","webpack:///./settings/src/components/appList/appItem.vue?a9b9","webpack:///./settings/src/components/appList/appScore.vue?c3d6","webpack:///./settings/src/components/appManagement.vue?d664","webpack:///./settings/src/components/prefixMixin.vue?787b","webpack:///./settings/src/components/svgFilterMixin.vue?2b11","webpack:///./settings/src/views/Apps.vue?8b77","webpack:///./settings/src/components/appDetails.vue?c7fc","webpack:///./settings/src/components/appList/appItem.vue?2bea","webpack:///./settings/src/components/appDetails.vue?8443","webpack:///./settings/src/components/appList.vue?96c0","webpack:///./settings/src/components/appList/appItem.vue?ebd9","webpack:///./settings/src/components/appList/appScore.vue?322c","webpack:///./settings/src/views/Apps.vue?eaa3","webpack:///./settings/src/components/appDetails.vue?de42","webpack:///./settings/src/components/appList/appItem.vue?1d58","webpack:///./settings/src/components/appDetails.vue","webpack:///./settings/src/components/appDetails.vue?c695","webpack:///./settings/src/components/appDetails.vue?b5d6","webpack:///./settings/src/components/appDetails.vue?8043","webpack:///./settings/src/components/appList.vue","webpack:///./settings/src/components/appList.vue?42a6","webpack:///./settings/src/components/appList.vue?ecc2","webpack:///./settings/src/components/appList/appItem.vue","webpack:///./settings/src/components/appList/appItem.vue?9674","webpack:///./settings/src/components/appList/appItem.vue?b594","webpack:///./settings/src/components/appList/appItem.vue?6ecf","webpack:///./settings/src/components/appList/appScore.vue","webpack:///./settings/src/components/appList/appScore.vue?02ae","webpack:///./settings/src/components/appList/appScore.vue?e776","webpack:///./settings/src/components/appManagement.vue","webpack:///./settings/src/components/appManagement.vue?f8d8","webpack:///./settings/src/components/prefixMixin.vue","webpack:///./settings/src/components/prefixMixin.vue?4873","webpack:///./settings/src/components/svgFilterMixin.vue","webpack:///./settings/src/components/svgFilterMixin.vue?e63f","webpack:///./settings/src/views/Apps.vue","webpack:///./settings/src/views/Apps.vue?b69d","webpack:///./settings/src/views/Apps.vue?8013"],"sourcesContent":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport Multiselect from 'vue-multiselect';\nimport marked from 'marked';\nimport dompurify from 'dompurify';\nimport AppScore from './appList/appScore';\nimport AppManagement from './appManagement';\nimport prefix from './prefixMixin';\nimport SvgFilterMixin from './svgFilterMixin';\nexport default {\n  mixins: [AppManagement, prefix, SvgFilterMixin],\n  name: 'appDetails',\n  props: ['category', 'app'],\n  components: {\n    Multiselect: Multiselect,\n    AppScore: AppScore\n  },\n  data: function data() {\n    return {\n      groupCheckedAppsData: false\n    };\n  },\n  mounted: function mounted() {\n    if (this.app.groups.length > 0) {\n      this.groupCheckedAppsData = true;\n    }\n  },\n  methods: {\n    hideAppDetails: function hideAppDetails() {\n      this.$router.push({\n        name: 'apps-category',\n        params: {\n          category: this.category\n        }\n      });\n    }\n  },\n  computed: {\n    appstoreUrl: function appstoreUrl() {\n      return \"https://apps.nextcloud.com/apps/\".concat(this.app.id);\n    },\n    licence: function licence() {\n      if (this.app.licence) {\n        return t('settings', '{license}-licensed', {\n          license: ('' + this.app.licence).toUpperCase()\n        });\n      }\n\n      return null;\n    },\n    hasRating: function hasRating() {\n      return this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5;\n    },\n    author: function author() {\n      if (typeof this.app.author === 'string') {\n        return [{\n          '@value': this.app.author\n        }];\n      }\n\n      if (this.app.author['@value']) {\n        return [this.app.author];\n      }\n\n      return this.app.author;\n    },\n    appGroups: function appGroups() {\n      return this.app.groups.map(function (group) {\n        return {\n          id: group,\n          name: group\n        };\n      });\n    },\n    groups: function groups() {\n      return this.$store.getters.getGroups.filter(function (group) {\n        return group.id !== 'disabled';\n      }).sort(function (a, b) {\n        return a.name.localeCompare(b.name);\n      });\n    },\n    renderMarkdown: function renderMarkdown() {\n      var renderer = new marked.Renderer();\n\n      renderer.link = function (href, title, text) {\n        try {\n          var prot = decodeURIComponent(unescape(href)).replace(/[^\\w:]/g, '').toLowerCase();\n        } catch (e) {\n          return '';\n        }\n\n        if (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n          return '';\n        }\n\n        var out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"';\n\n        if (title) {\n          out += ' title=\"' + title + '\"';\n        }\n\n        out += '>' + text + '</a>';\n        return out;\n      };\n\n      renderer.image = function (href, title, text) {\n        if (text) {\n          return text;\n        }\n\n        return title;\n      };\n\n      renderer.blockquote = function (quote) {\n        return quote;\n      };\n\n      return dompurify.sanitize(marked(this.app.description.trim(), {\n        renderer: renderer,\n        gfm: false,\n        highlight: false,\n        tables: false,\n        breaks: false,\n        pedantic: false,\n        sanitize: true,\n        smartLists: true,\n        smartypants: false\n      }), {\n        SAFE_FOR_JQUERY: true,\n        ALLOWED_TAGS: ['strong', 'p', 'a', 'ul', 'ol', 'li', 'em', 'del', 'blockquote']\n      });\n    }\n  }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport appItem from './appList/appItem';\nimport Multiselect from 'vue-multiselect';\nimport prefix from './prefixMixin';\nexport default {\n  name: 'appList',\n  mixins: [prefix],\n  props: ['category', 'app', 'search'],\n  components: {\n    Multiselect: Multiselect,\n    appItem: appItem\n  },\n  computed: {\n    loading: function loading() {\n      return this.$store.getters.loading('list');\n    },\n    apps: function apps() {\n      var _this = this;\n\n      var apps = this.$store.getters.getAllApps.filter(function (app) {\n        return app.name.toLowerCase().search(_this.search.toLowerCase()) !== -1;\n      }).sort(function (a, b) {\n        var sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name;\n        var sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name;\n        return OC.Util.naturalSortCompare(sortStringA, sortStringB);\n      });\n\n      if (this.category === 'installed') {\n        return apps.filter(function (app) {\n          return app.installed;\n        });\n      }\n\n      if (this.category === 'enabled') {\n        return apps.filter(function (app) {\n          return app.active && app.installed;\n        });\n      }\n\n      if (this.category === 'disabled') {\n        return apps.filter(function (app) {\n          return !app.active && app.installed;\n        });\n      }\n\n      if (this.category === 'app-bundles') {\n        return apps.filter(function (app) {\n          return app.bundles;\n        });\n      }\n\n      if (this.category === 'updates') {\n        return apps.filter(function (app) {\n          return app.update;\n        });\n      } // filter app store categories\n\n\n      return apps.filter(function (app) {\n        return app.appstore && app.category !== undefined && (app.category === _this.category || app.category.indexOf(_this.category) > -1);\n      });\n    },\n    bundles: function bundles() {\n      return this.$store.getters.getServerData.bundles;\n    },\n    bundleApps: function bundleApps() {\n      return function (bundle) {\n        return this.$store.getters.getAllApps.filter(function (app) {\n          return app.bundleId === bundle;\n        });\n      };\n    },\n    searchApps: function searchApps() {\n      var _this2 = this;\n\n      if (this.search === '') {\n        return [];\n      }\n\n      return this.$store.getters.getAllApps.filter(function (app) {\n        if (app.name.toLowerCase().search(_this2.search.toLowerCase()) !== -1) {\n          return !_this2.apps.find(function (_app) {\n            return _app.id === app.id;\n          });\n        }\n\n        return false;\n      });\n    },\n    useAppStoreView: function useAppStoreView() {\n      return !this.useListView && !this.useBundleView;\n    },\n    useListView: function useListView() {\n      return this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates';\n    },\n    useBundleView: function useBundleView() {\n      return this.category === 'app-bundles';\n    },\n    allBundlesEnabled: function allBundlesEnabled() {\n      var self = this;\n      return function (id) {\n        return self.bundleApps(id).filter(function (app) {\n          return !app.active;\n        }).length === 0;\n      };\n    },\n    bundleToggleText: function bundleToggleText() {\n      var self = this;\n      return function (id) {\n        if (self.allBundlesEnabled(id)) {\n          return t('settings', 'Disable all');\n        }\n\n        return t('settings', 'Enable all');\n      };\n    }\n  },\n  methods: {\n    toggleBundle: function toggleBundle(id) {\n      if (this.allBundlesEnabled(id)) {\n        return this.disableBundle(id);\n      }\n\n      return this.enableBundle(id);\n    },\n    enableBundle: function enableBundle(id) {\n      var apps = this.bundleApps(id).map(function (app) {\n        return app.id;\n      });\n      this.$store.dispatch('enableApp', {\n        appId: apps,\n        groups: []\n      }).catch(function (error) {\n        console.log(error);\n        OC.Notification.show(error);\n      });\n    },\n    disableBundle: function disableBundle(id) {\n      var apps = this.bundleApps(id).map(function (app) {\n        return app.id;\n      });\n      this.$store.dispatch('disableApp', {\n        appId: apps,\n        groups: []\n      }).catch(function (error) {\n        OC.Notification.show(error);\n      });\n    }\n  }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport Multiselect from 'vue-multiselect';\nimport AppScore from './appScore';\nimport AppManagement from '../appManagement';\nimport SvgFilterMixin from '../svgFilterMixin';\nexport default {\n  name: 'appItem',\n  mixins: [AppManagement, SvgFilterMixin],\n  props: {\n    app: {},\n    category: {},\n    listView: {\n      type: Boolean,\n      default: true\n    }\n  },\n  watch: {\n    '$route.params.id': function $routeParamsId(id) {\n      this.isSelected = this.app.id === id;\n    }\n  },\n  components: {\n    Multiselect: Multiselect,\n    AppScore: AppScore\n  },\n  data: function data() {\n    return {\n      isSelected: false,\n      scrolled: false\n    };\n  },\n  mounted: function mounted() {\n    this.isSelected = this.app.id === this.$route.params.id;\n  },\n  computed: {},\n  watchers: {},\n  methods: {\n    showAppDetails: function showAppDetails(event) {\n      if (event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A') {\n        return;\n      }\n\n      this.$router.push({\n        name: 'apps-details',\n        params: {\n          category: this.category,\n          id: this.app.id\n        }\n      });\n    },\n    prefix: function prefix(_prefix, content) {\n      return _prefix + '_' + content;\n    }\n  }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n  name: 'appScore',\n  props: ['score'],\n  computed: {\n    scoreImage: function scoreImage() {\n      var score = Math.round(this.score * 10);\n      var imageName = 'rating/s' + score + '.svg';\n      return OC.imagePath('core', imageName);\n    }\n  }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n  mounted: function mounted() {\n    if (this.app.groups.length > 0) {\n      this.groupCheckedAppsData = true;\n    }\n  },\n  computed: {\n    appGroups: function appGroups() {\n      return this.app.groups.map(function (group) {\n        return {\n          id: group,\n          name: group\n        };\n      });\n    },\n    loading: function loading() {\n      var self = this;\n      return function (id) {\n        return self.$store.getters.loading(id);\n      };\n    },\n    installing: function installing() {\n      return this.$store.getters.loading('install');\n    },\n    enableButtonText: function enableButtonText() {\n      if (this.app.needsDownload) {\n        return t('settings', 'Download and enable');\n      }\n\n      return t('settings', 'Enable');\n    },\n    forceEnableButtonText: function forceEnableButtonText() {\n      if (this.app.needsDownload) {\n        return t('settings', 'Enable untested app');\n      }\n\n      return t('settings', 'Enable untested app');\n    },\n    enableButtonTooltip: function enableButtonTooltip() {\n      if (this.app.needsDownload) {\n        return t('settings', 'The app will be downloaded from the app store');\n      }\n\n      return false;\n    },\n    forceEnableButtonTooltip: function forceEnableButtonTooltip() {\n      var base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.');\n\n      if (this.app.needsDownload) {\n        return base + ' ' + t('settings', 'The app will be downloaded from the app store');\n      }\n\n      return base;\n    }\n  },\n  methods: {\n    asyncFindGroup: function asyncFindGroup(query) {\n      return this.$store.dispatch('getGroups', {\n        search: query,\n        limit: 5,\n        offset: 0\n      });\n    },\n    isLimitedToGroups: function isLimitedToGroups(app) {\n      if (this.app.groups.length || this.groupCheckedAppsData) {\n        return true;\n      }\n\n      return false;\n    },\n    setGroupLimit: function setGroupLimit() {\n      if (!this.groupCheckedAppsData) {\n        this.$store.dispatch('enableApp', {\n          appId: this.app.id,\n          groups: []\n        });\n      }\n    },\n    canLimitToGroups: function canLimitToGroups(app) {\n      if (app.types && app.types.includes('filesystem') || app.types.includes('prelogin') || app.types.includes('authentication') || app.types.includes('logging') || app.types.includes('prevent_group_restriction')) {\n        return false;\n      }\n\n      return true;\n    },\n    addGroupLimitation: function addGroupLimitation(group) {\n      var groups = this.app.groups.concat([]).concat([group.id]);\n      this.$store.dispatch('enableApp', {\n        appId: this.app.id,\n        groups: groups\n      });\n    },\n    removeGroupLimitation: function removeGroupLimitation(group) {\n      var currentGroups = this.app.groups.concat([]);\n      var index = currentGroups.indexOf(group.id);\n\n      if (index > -1) {\n        currentGroups.splice(index, 1);\n      }\n\n      this.$store.dispatch('enableApp', {\n        appId: this.app.id,\n        groups: currentGroups\n      });\n    },\n    forceEnable: function forceEnable(appId) {\n      this.$store.dispatch('forceEnableApp', {\n        appId: appId,\n        groups: []\n      }).then(function (response) {\n        OC.Settings.Apps.rebuildNavigation();\n      }).catch(function (error) {\n        OC.Notification.show(error);\n      });\n    },\n    enable: function enable(appId) {\n      this.$store.dispatch('enableApp', {\n        appId: appId,\n        groups: []\n      }).then(function (response) {\n        OC.Settings.Apps.rebuildNavigation();\n      }).catch(function (error) {\n        OC.Notification.show(error);\n      });\n    },\n    disable: function disable(appId) {\n      this.$store.dispatch('disableApp', {\n        appId: appId\n      }).then(function (response) {\n        OC.Settings.Apps.rebuildNavigation();\n      }).catch(function (error) {\n        OC.Notification.show(error);\n      });\n    },\n    remove: function remove(appId) {\n      this.$store.dispatch('uninstallApp', {\n        appId: appId\n      }).then(function (response) {\n        OC.Settings.Apps.rebuildNavigation();\n      }).catch(function (error) {\n        OC.Notification.show(error);\n      });\n    },\n    install: function install(appId) {\n      this.$store.dispatch('enableApp', {\n        appId: appId\n      }).then(function (response) {\n        OC.Settings.Apps.rebuildNavigation();\n      }).catch(function (error) {\n        OC.Notification.show(error);\n      });\n    },\n    update: function update(appId) {\n      this.$store.dispatch('updateApp', {\n        appId: appId\n      }).then(function (response) {\n        OC.Settings.Apps.rebuildNavigation();\n      }).catch(function (error) {\n        OC.Notification.show(error);\n      });\n    }\n  }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n  name: 'prefixMixin',\n  methods: {\n    prefix: function prefix(_prefix, content) {\n      return _prefix + '_' + content;\n    }\n  }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n  name: 'svgFilterMixin',\n  mounted: function mounted() {\n    this.filterId = 'invertIconApps' + Math.floor(Math.random() * 100) + new Date().getSeconds() + new Date().getMilliseconds();\n  },\n  computed: {\n    filterUrl: function filterUrl() {\n      return \"url(#\".concat(this.filterId, \")\");\n    }\n  },\n  data: function data() {\n    return {\n      filterId: ''\n    };\n  }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport { AppContent, AppNavigationItem } from 'nextcloud-vue';\nimport appList from '../components/appList';\nimport Vue from 'vue';\nimport VueLocalStorage from 'vue-localstorage';\nimport AppDetails from '../components/appDetails';\nVue.use(VueLocalStorage);\nexport default {\n  name: 'Apps',\n  props: {\n    category: {\n      type: String,\n      default: 'installed'\n    },\n    id: {\n      type: String,\n      default: ''\n    }\n  },\n  components: {\n    AppContent: AppContent,\n    AppDetails: AppDetails,\n    appList: appList,\n    AppNavigationItem: AppNavigationItem\n  },\n  methods: {\n    setSearch: function setSearch(query) {\n      this.searchQuery = query;\n    },\n    resetSearch: function resetSearch() {\n      this.setSearch('');\n    }\n  },\n  beforeMount: function beforeMount() {\n    this.$store.dispatch('getCategories');\n    this.$store.dispatch('getAllApps');\n    this.$store.dispatch('getGroups', {\n      offset: 0,\n      limit: 5\n    });\n    this.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount);\n  },\n  mounted: function mounted() {\n    /** \n     * Register search\n     */\n    this.appSearch = new OCA.Search(this.setSearch, this.resetSearch);\n  },\n  data: function data() {\n    return {\n      searchQuery: ''\n    };\n  },\n  watch: {\n    category: function category(val, old) {\n      this.setSearch('');\n    }\n  },\n  computed: {\n    loading: function loading() {\n      return this.$store.getters.loading('categories');\n    },\n    loadingList: function loadingList() {\n      return this.$store.getters.loading('list');\n    },\n    currentApp: function currentApp() {\n      var _this = this;\n\n      return this.apps.find(function (app) {\n        return app.id === _this.id;\n      });\n    },\n    categories: function categories() {\n      return this.$store.getters.getCategories;\n    },\n    apps: function apps() {\n      return this.$store.getters.getAllApps;\n    },\n    updateCount: function updateCount() {\n      return this.$store.getters.getUpdateCount;\n    },\n    settings: function settings() {\n      return this.$store.getters.getServerData;\n    },\n    // BUILD APP NAVIGATION MENU OBJECT\n    menu: function menu() {\n      var _this2 = this;\n\n      // Data provided php side\n      var categories = this.$store.getters.getCategories;\n      categories = Array.isArray(categories) ? categories : []; // Map groups\n\n      categories = categories.map(function (category) {\n        var item = {};\n        item.id = 'app-category-' + category.ident;\n        item.icon = 'icon-category-' + category.ident;\n        item.classes = []; // empty classes, active will be set later\n\n        item.router = {\n          // router link to\n          name: 'apps-category',\n          params: {\n            category: category.ident\n          }\n        };\n        item.text = category.displayName;\n        return item;\n      }); // Add everyone group\n\n      var defaultCategories = [{\n        id: 'app-category-your-apps',\n        classes: [],\n        router: {\n          name: 'apps'\n        },\n        icon: 'icon-category-installed',\n        text: t('settings', 'Your apps')\n      }, {\n        id: 'app-category-enabled',\n        classes: [],\n        icon: 'icon-category-enabled',\n        router: {\n          name: 'apps-category',\n          params: {\n            category: 'enabled'\n          }\n        },\n        text: t('settings', 'Active apps')\n      }, {\n        id: 'app-category-disabled',\n        classes: [],\n        icon: 'icon-category-disabled',\n        router: {\n          name: 'apps-category',\n          params: {\n            category: 'disabled'\n          }\n        },\n        text: t('settings', 'Disabled apps')\n      }];\n\n      if (!this.settings.appstoreEnabled) {\n        return defaultCategories;\n      }\n\n      if (this.$store.getters.getUpdateCount > 0) {\n        defaultCategories.push({\n          id: 'app-category-updates',\n          classes: [],\n          icon: 'icon-download',\n          router: {\n            name: 'apps-category',\n            params: {\n              category: 'updates'\n            }\n          },\n          text: t('settings', 'Updates'),\n          utils: {\n            counter: this.$store.getters.getUpdateCount\n          }\n        });\n      }\n\n      defaultCategories.push({\n        id: 'app-category-app-bundles',\n        classes: [],\n        icon: 'icon-category-app-bundles',\n        router: {\n          name: 'apps-category',\n          params: {\n            category: 'app-bundles'\n          }\n        },\n        text: t('settings', 'App bundles')\n      });\n      categories = defaultCategories.concat(categories); // Set current group as active\n\n      var activeGroup = categories.findIndex(function (group) {\n        return group.id === 'app-category-' + _this2.category;\n      });\n\n      if (activeGroup >= 0) {\n        categories[activeGroup].classes.push('active');\n      } else {\n        categories[0].classes.push('active');\n      }\n\n      categories.push({\n        id: 'app-developer-docs',\n        classes: [],\n        href: this.settings.developerDocumentation,\n        text: t('settings', 'Developer documentation') + ' ↗'\n      }); // Return\n\n      return categories;\n    }\n  }\n};","exports = module.exports = require(\"../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-02f2d131] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-02f2d131]:hover,\\n.force[data-v-02f2d131]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n\n","exports = module.exports = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\")(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-09ee4a84] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-09ee4a84]:hover,\\n.force[data-v-09ee4a84]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n\n","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { staticStyle: { padding: \"20px\" }, attrs: { id: \"app-details-view\" } },\n    [\n      _c(\n        \"a\",\n        {\n          staticClass: \"close icon-close\",\n          attrs: { href: \"#\" },\n          on: { click: _vm.hideAppDetails }\n        },\n        [_c(\"span\", { staticClass: \"hidden-visually\" }, [_vm._v(\"Close\")])]\n      ),\n      _vm._v(\" \"),\n      _c(\"h2\", [\n        !_vm.app.preview\n          ? _c(\"div\", { staticClass: \"icon-settings-dark\" })\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.app.previewAsIcon && _vm.app.preview\n          ? _c(\n              \"svg\",\n              { attrs: { width: \"32\", height: \"32\", viewBox: \"0 0 32 32\" } },\n              [\n                _c(\"defs\", [\n                  _c(\n                    \"filter\",\n                    { attrs: { id: _vm.filterId } },\n                    [\n                      _c(\"feColorMatrix\", {\n                        attrs: {\n                          in: \"SourceGraphic\",\n                          type: \"matrix\",\n                          values: \"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"\n                        }\n                      })\n                    ],\n                    1\n                  )\n                ]),\n                _vm._v(\" \"),\n                _c(\"image\", {\n                  staticClass: \"app-icon\",\n                  attrs: {\n                    x: \"0\",\n                    y: \"0\",\n                    width: \"32\",\n                    height: \"32\",\n                    preserveAspectRatio: \"xMinYMin meet\",\n                    filter: _vm.filterUrl,\n                    \"xlink:href\": _vm.app.preview\n                  }\n                })\n              ]\n            )\n          : _vm._e(),\n        _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.app.name))\n      ]),\n      _vm._v(\" \"),\n      _vm.app.screenshot\n        ? _c(\"img\", { attrs: { src: _vm.app.screenshot, width: \"100%\" } })\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.app.level === 200 || _vm.hasRating\n        ? _c(\n            \"div\",\n            { staticClass: \"app-level\" },\n            [\n              _vm.app.level === 200\n                ? _c(\n                    \"span\",\n                    {\n                      directives: [\n                        {\n                          name: \"tooltip\",\n                          rawName: \"v-tooltip.auto\",\n                          value: _vm.t(\n                            \"settings\",\n                            \"Official apps are developed by and within the community. They offer central functionality and are ready for production use.\"\n                          ),\n                          expression:\n                            \"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\",\n                          modifiers: { auto: true }\n                        }\n                      ],\n                      staticClass: \"official icon-checkmark\"\n                    },\n                    [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Official\")))]\n                  )\n                : _vm._e(),\n              _vm._v(\" \"),\n              _vm.hasRating\n                ? _c(\"app-score\", {\n                    attrs: { score: _vm.app.appstoreData.ratingOverall }\n                  })\n                : _vm._e()\n            ],\n            1\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.author\n        ? _c(\n            \"div\",\n            { staticClass: \"app-author\" },\n            [\n              _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.t(\"settings\", \"by\")) + \"\\n\\t\\t\"),\n              _vm._l(_vm.author, function(a, index) {\n                return _c(\"span\", [\n                  a[\"@attributes\"] && a[\"@attributes\"][\"homepage\"]\n                    ? _c(\n                        \"a\",\n                        { attrs: { href: a[\"@attributes\"][\"homepage\"] } },\n                        [_vm._v(_vm._s(a[\"@value\"]))]\n                      )\n                    : a[\"@value\"]\n                    ? _c(\"span\", [_vm._v(_vm._s(a[\"@value\"]))])\n                    : _c(\"span\", [_vm._v(_vm._s(a))]),\n                  index + 1 < _vm.author.length\n                    ? _c(\"span\", [_vm._v(\", \")])\n                    : _vm._e()\n                ])\n              })\n            ],\n            2\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.licence\n        ? _c(\"div\", { staticClass: \"app-licence\" }, [\n            _vm._v(_vm._s(_vm.licence))\n          ])\n        : _vm._e(),\n      _vm._v(\" \"),\n      _c(\"div\", { staticClass: \"actions\" }, [\n        _c(\"div\", { staticClass: \"actions-buttons\" }, [\n          _vm.app.update\n            ? _c(\"input\", {\n                staticClass: \"update primary\",\n                attrs: {\n                  type: \"button\",\n                  value: _vm.t(\"settings\", \"Update to {version}\", {\n                    version: _vm.app.update\n                  }),\n                  disabled: _vm.installing || _vm.loading(_vm.app.id)\n                },\n                on: {\n                  click: function($event) {\n                    return _vm.update(_vm.app.id)\n                  }\n                }\n              })\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.app.canUnInstall\n            ? _c(\"input\", {\n                staticClass: \"uninstall\",\n                attrs: {\n                  type: \"button\",\n                  value: _vm.t(\"settings\", \"Remove\"),\n                  disabled: _vm.installing || _vm.loading(_vm.app.id)\n                },\n                on: {\n                  click: function($event) {\n                    return _vm.remove(_vm.app.id)\n                  }\n                }\n              })\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.app.active\n            ? _c(\"input\", {\n                staticClass: \"enable\",\n                attrs: {\n                  type: \"button\",\n                  value: _vm.t(\"settings\", \"Disable\"),\n                  disabled: _vm.installing || _vm.loading(_vm.app.id)\n                },\n                on: {\n                  click: function($event) {\n                    return _vm.disable(_vm.app.id)\n                  }\n                }\n              })\n            : _vm._e(),\n          _vm._v(\" \"),\n          !_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible)\n            ? _c(\"input\", {\n                directives: [\n                  {\n                    name: \"tooltip\",\n                    rawName: \"v-tooltip.auto\",\n                    value: _vm.enableButtonTooltip,\n                    expression: \"enableButtonTooltip\",\n                    modifiers: { auto: true }\n                  }\n                ],\n                staticClass: \"enable primary\",\n                attrs: {\n                  type: \"button\",\n                  value: _vm.enableButtonText,\n                  disabled:\n                    !_vm.app.canInstall ||\n                    _vm.installing ||\n                    _vm.loading(_vm.app.id)\n                },\n                on: {\n                  click: function($event) {\n                    return _vm.enable(_vm.app.id)\n                  }\n                }\n              })\n            : !_vm.app.active\n            ? _c(\"input\", {\n                directives: [\n                  {\n                    name: \"tooltip\",\n                    rawName: \"v-tooltip.auto\",\n                    value: _vm.forceEnableButtonTooltip,\n                    expression: \"forceEnableButtonTooltip\",\n                    modifiers: { auto: true }\n                  }\n                ],\n                staticClass: \"enable force\",\n                attrs: {\n                  type: \"button\",\n                  value: _vm.forceEnableButtonText,\n                  disabled: _vm.installing || _vm.loading(_vm.app.id)\n                },\n                on: {\n                  click: function($event) {\n                    return _vm.forceEnable(_vm.app.id)\n                  }\n                }\n              })\n            : _vm._e()\n        ]),\n        _vm._v(\" \"),\n        _c(\"div\", { staticClass: \"app-groups\" }, [\n          _vm.app.active && _vm.canLimitToGroups(_vm.app)\n            ? _c(\n                \"div\",\n                { staticClass: \"groups-enable\" },\n                [\n                  _c(\"input\", {\n                    directives: [\n                      {\n                        name: \"model\",\n                        rawName: \"v-model\",\n                        value: _vm.groupCheckedAppsData,\n                        expression: \"groupCheckedAppsData\"\n                      }\n                    ],\n                    staticClass: \"groups-enable__checkbox checkbox\",\n                    attrs: {\n                      type: \"checkbox\",\n                      id: _vm.prefix(\"groups_enable\", _vm.app.id)\n                    },\n                    domProps: {\n                      value: _vm.app.id,\n                      checked: Array.isArray(_vm.groupCheckedAppsData)\n                        ? _vm._i(_vm.groupCheckedAppsData, _vm.app.id) > -1\n                        : _vm.groupCheckedAppsData\n                    },\n                    on: {\n                      change: [\n                        function($event) {\n                          var $$a = _vm.groupCheckedAppsData,\n                            $$el = $event.target,\n                            $$c = $$el.checked ? true : false\n                          if (Array.isArray($$a)) {\n                            var $$v = _vm.app.id,\n                              $$i = _vm._i($$a, $$v)\n                            if ($$el.checked) {\n                              $$i < 0 &&\n                                (_vm.groupCheckedAppsData = $$a.concat([$$v]))\n                            } else {\n                              $$i > -1 &&\n                                (_vm.groupCheckedAppsData = $$a\n                                  .slice(0, $$i)\n                                  .concat($$a.slice($$i + 1)))\n                            }\n                          } else {\n                            _vm.groupCheckedAppsData = $$c\n                          }\n                        },\n                        _vm.setGroupLimit\n                      ]\n                    }\n                  }),\n                  _vm._v(\" \"),\n                  _c(\n                    \"label\",\n                    { attrs: { for: _vm.prefix(\"groups_enable\", _vm.app.id) } },\n                    [_vm._v(_vm._s(_vm.t(\"settings\", \"Limit to groups\")))]\n                  ),\n                  _vm._v(\" \"),\n                  _c(\"input\", {\n                    staticClass: \"group_select\",\n                    attrs: {\n                      type: \"hidden\",\n                      title: _vm.t(\"settings\", \"All\"),\n                      value: \"\"\n                    }\n                  }),\n                  _vm._v(\" \"),\n                  _vm.isLimitedToGroups(_vm.app)\n                    ? _c(\n                        \"multiselect\",\n                        {\n                          staticClass: \"multiselect-vue\",\n                          attrs: {\n                            options: _vm.groups,\n                            value: _vm.appGroups,\n                            \"options-limit\": 5,\n                            placeholder: _vm.t(\n                              \"settings\",\n                              \"Limit app usage to groups\"\n                            ),\n                            label: \"name\",\n                            \"track-by\": \"id\",\n                            multiple: true,\n                            \"close-on-select\": false\n                          },\n                          on: {\n                            select: _vm.addGroupLimitation,\n                            remove: _vm.removeGroupLimitation,\n                            \"search-change\": _vm.asyncFindGroup\n                          }\n                        },\n                        [\n                          _c(\n                            \"span\",\n                            { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n                            [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))]\n                          )\n                        ]\n                      )\n                    : _vm._e()\n                ],\n                1\n              )\n            : _vm._e()\n        ])\n      ]),\n      _vm._v(\" \"),\n      _c(\"p\", { staticClass: \"documentation\" }, [\n        !_vm.app.internal\n          ? _c(\n              \"a\",\n              {\n                staticClass: \"appslink\",\n                attrs: {\n                  href: _vm.appstoreUrl,\n                  target: \"_blank\",\n                  rel: \"noreferrer noopener\"\n                }\n              },\n              [_vm._v(_vm._s(_vm.t(\"settings\", \"View in store\")) + \" ↗\")]\n            )\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.app.website\n          ? _c(\n              \"a\",\n              {\n                staticClass: \"appslink\",\n                attrs: {\n                  href: _vm.app.website,\n                  target: \"_blank\",\n                  rel: \"noreferrer noopener\"\n                }\n              },\n              [_vm._v(_vm._s(_vm.t(\"settings\", \"Visit website\")) + \" ↗\")]\n            )\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.app.bugs\n          ? _c(\n              \"a\",\n              {\n                staticClass: \"appslink\",\n                attrs: {\n                  href: _vm.app.bugs,\n                  target: \"_blank\",\n                  rel: \"noreferrer noopener\"\n                }\n              },\n              [_vm._v(_vm._s(_vm.t(\"settings\", \"Report a bug\")) + \" ↗\")]\n            )\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.app.documentation && _vm.app.documentation.user\n          ? _c(\n              \"a\",\n              {\n                staticClass: \"appslink\",\n                attrs: {\n                  href: _vm.app.documentation.user,\n                  target: \"_blank\",\n                  rel: \"noreferrer noopener\"\n                }\n              },\n              [_vm._v(_vm._s(_vm.t(\"settings\", \"User documentation\")) + \" ↗\")]\n            )\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.app.documentation && _vm.app.documentation.admin\n          ? _c(\n              \"a\",\n              {\n                staticClass: \"appslink\",\n                attrs: {\n                  href: _vm.app.documentation.admin,\n                  target: \"_blank\",\n                  rel: \"noreferrer noopener\"\n                }\n              },\n              [_vm._v(_vm._s(_vm.t(\"settings\", \"Admin documentation\")) + \" ↗\")]\n            )\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.app.documentation && _vm.app.documentation.developer\n          ? _c(\n              \"a\",\n              {\n                staticClass: \"appslink\",\n                attrs: {\n                  href: _vm.app.documentation.developer,\n                  target: \"_blank\",\n                  rel: \"noreferrer noopener\"\n                }\n              },\n              [\n                _vm._v(\n                  _vm._s(_vm.t(\"settings\", \"Developer documentation\")) + \" ↗\"\n                )\n              ]\n            )\n          : _vm._e()\n      ]),\n      _vm._v(\" \"),\n      _c(\"ul\", { staticClass: \"app-dependencies\" }, [\n        _vm.app.missingMinOwnCloudVersion\n          ? _c(\"li\", [\n              _vm._v(\n                _vm._s(\n                  _vm.t(\n                    \"settings\",\n                    \"This app has no minimum Nextcloud version assigned. This will be an error in the future.\"\n                  )\n                )\n              )\n            ])\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.app.missingMaxOwnCloudVersion\n          ? _c(\"li\", [\n              _vm._v(\n                _vm._s(\n                  _vm.t(\n                    \"settings\",\n                    \"This app has no maximum Nextcloud version assigned. This will be an error in the future.\"\n                  )\n                )\n              )\n            ])\n          : _vm._e(),\n        _vm._v(\" \"),\n        !_vm.app.canInstall\n          ? _c(\"li\", [\n              _vm._v(\n                \"\\n\\t\\t\\t\" +\n                  _vm._s(\n                    _vm.t(\n                      \"settings\",\n                      \"This app cannot be installed because the following dependencies are not fulfilled:\"\n                    )\n                  ) +\n                  \"\\n\\t\\t\\t\"\n              ),\n              _c(\n                \"ul\",\n                { staticClass: \"missing-dependencies\" },\n                _vm._l(_vm.app.missingDependencies, function(dep) {\n                  return _c(\"li\", [_vm._v(_vm._s(dep))])\n                }),\n                0\n              )\n            ])\n          : _vm._e()\n      ]),\n      _vm._v(\" \"),\n      _c(\"div\", {\n        staticClass: \"app-description\",\n        domProps: { innerHTML: _vm._s(_vm.renderMarkdown) }\n      })\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { attrs: { id: \"app-content-inner\" } }, [\n    _c(\n      \"div\",\n      {\n        staticClass: \"apps-list\",\n        class: {\n          installed: _vm.useBundleView || _vm.useListView,\n          store: _vm.useAppStoreView\n        },\n        attrs: { id: \"apps-list\" }\n      },\n      [\n        _vm.useListView\n          ? [\n              _c(\n                \"transition-group\",\n                {\n                  staticClass: \"apps-list-container\",\n                  attrs: { name: \"app-list\", tag: \"div\" }\n                },\n                _vm._l(_vm.apps, function(app) {\n                  return _c(\"app-item\", {\n                    key: app.id,\n                    attrs: { app: app, category: _vm.category }\n                  })\n                }),\n                1\n              )\n            ]\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm._l(_vm.bundles, function(bundle) {\n          return _vm.useBundleView && _vm.bundleApps(bundle.id).length > 0\n            ? [\n                _c(\n                  \"transition-group\",\n                  {\n                    staticClass: \"apps-list-container\",\n                    attrs: { name: \"app-list\", tag: \"div\" }\n                  },\n                  [\n                    _c(\"div\", { key: bundle.id, staticClass: \"apps-header\" }, [\n                      _c(\"div\", { staticClass: \"app-image\" }),\n                      _vm._v(\" \"),\n                      _c(\"h2\", [\n                        _vm._v(_vm._s(bundle.name) + \" \"),\n                        _c(\"input\", {\n                          attrs: {\n                            type: \"button\",\n                            value: _vm.bundleToggleText(bundle.id)\n                          },\n                          on: {\n                            click: function($event) {\n                              return _vm.toggleBundle(bundle.id)\n                            }\n                          }\n                        })\n                      ]),\n                      _vm._v(\" \"),\n                      _c(\"div\", { staticClass: \"app-version\" }),\n                      _vm._v(\" \"),\n                      _c(\"div\", { staticClass: \"app-level\" }),\n                      _vm._v(\" \"),\n                      _c(\"div\", { staticClass: \"app-groups\" }),\n                      _vm._v(\" \"),\n                      _c(\"div\", { staticClass: \"actions\" }, [_vm._v(\" \")])\n                    ]),\n                    _vm._v(\" \"),\n                    _vm._l(_vm.bundleApps(bundle.id), function(app) {\n                      return _c(\"app-item\", {\n                        key: bundle.id + app.id,\n                        attrs: { app: app, category: _vm.category }\n                      })\n                    })\n                  ],\n                  2\n                )\n              ]\n            : _vm._e()\n        }),\n        _vm._v(\" \"),\n        _vm.useAppStoreView\n          ? _vm._l(_vm.apps, function(app) {\n              return _c(\"app-item\", {\n                key: app.id,\n                attrs: { app: app, category: _vm.category, \"list-view\": false }\n              })\n            })\n          : _vm._e()\n      ],\n      2\n    ),\n    _vm._v(\" \"),\n    _c(\n      \"div\",\n      { staticClass: \"apps-list installed\", attrs: { id: \"apps-list-search\" } },\n      [\n        _c(\n          \"div\",\n          { staticClass: \"apps-list-container\" },\n          [\n            _vm.search !== \"\" && _vm.searchApps.length > 0\n              ? [\n                  _c(\"div\", { staticClass: \"section\" }, [\n                    _c(\"div\"),\n                    _vm._v(\" \"),\n                    _c(\"td\", { attrs: { colspan: \"5\" } }, [\n                      _c(\"h2\", [\n                        _vm._v(\n                          _vm._s(\n                            _vm.t(\"settings\", \"Results from other categories\")\n                          )\n                        )\n                      ])\n                    ])\n                  ]),\n                  _vm._v(\" \"),\n                  _vm._l(_vm.searchApps, function(app) {\n                    return _c(\"app-item\", {\n                      key: app.id,\n                      attrs: {\n                        app: app,\n                        category: _vm.category,\n                        \"list-view\": true\n                      }\n                    })\n                  })\n                ]\n              : _vm._e()\n          ],\n          2\n        )\n      ]\n    ),\n    _vm._v(\" \"),\n    !_vm.loading && _vm.searchApps.length === 0 && _vm.apps.length === 0\n      ? _c(\n          \"div\",\n          {\n            staticClass: \"emptycontent emptycontent-search\",\n            attrs: { id: \"apps-list-empty\" }\n          },\n          [\n            _c(\"div\", {\n              staticClass: \"icon-settings-dark\",\n              attrs: { id: \"app-list-empty-icon\" }\n            }),\n            _vm._v(\" \"),\n            _c(\"h2\", [\n              _vm._v(\n                _vm._s(_vm.t(\"settings\", \"No apps found for your version\"))\n              )\n            ])\n          ]\n        )\n      : _vm._e(),\n    _vm._v(\" \"),\n    _c(\"div\", { attrs: { id: \"searchresults\" } })\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      staticClass: \"section\",\n      class: { selected: _vm.isSelected },\n      on: { click: _vm.showAppDetails }\n    },\n    [\n      _c(\n        \"div\",\n        {\n          staticClass: \"app-image app-image-icon\",\n          on: { click: _vm.showAppDetails }\n        },\n        [\n          (_vm.listView && !_vm.app.preview) ||\n          (!_vm.listView && !_vm.app.screenshot)\n            ? _c(\"div\", { staticClass: \"icon-settings-dark\" })\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.listView && _vm.app.preview\n            ? _c(\n                \"svg\",\n                { attrs: { width: \"32\", height: \"32\", viewBox: \"0 0 32 32\" } },\n                [\n                  _c(\"defs\", [\n                    _c(\n                      \"filter\",\n                      { attrs: { id: _vm.filterId } },\n                      [\n                        _c(\"feColorMatrix\", {\n                          attrs: {\n                            in: \"SourceGraphic\",\n                            type: \"matrix\",\n                            values: \"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"\n                          }\n                        })\n                      ],\n                      1\n                    )\n                  ]),\n                  _vm._v(\" \"),\n                  _c(\"image\", {\n                    staticClass: \"app-icon\",\n                    attrs: {\n                      x: \"0\",\n                      y: \"0\",\n                      width: \"32\",\n                      height: \"32\",\n                      preserveAspectRatio: \"xMinYMin meet\",\n                      filter: _vm.filterUrl,\n                      \"xlink:href\": _vm.app.preview\n                    }\n                  })\n                ]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          !_vm.listView && _vm.app.screenshot\n            ? _c(\"img\", { attrs: { src: _vm.app.screenshot, width: \"100%\" } })\n            : _vm._e()\n        ]\n      ),\n      _vm._v(\" \"),\n      _c(\n        \"div\",\n        { staticClass: \"app-name\", on: { click: _vm.showAppDetails } },\n        [_vm._v(\"\\n\\t\\t\" + _vm._s(_vm.app.name) + \"\\n\\t\")]\n      ),\n      _vm._v(\" \"),\n      !_vm.listView\n        ? _c(\"div\", { staticClass: \"app-summary\" }, [\n            _vm._v(_vm._s(_vm.app.summary))\n          ])\n        : _vm._e(),\n      _vm._v(\" \"),\n      _vm.listView\n        ? _c(\"div\", { staticClass: \"app-version\" }, [\n            _vm.app.version\n              ? _c(\"span\", [_vm._v(_vm._s(_vm.app.version))])\n              : _vm.app.appstoreData.releases[0].version\n              ? _c(\"span\", [\n                  _vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))\n                ])\n              : _vm._e()\n          ])\n        : _vm._e(),\n      _vm._v(\" \"),\n      _c(\n        \"div\",\n        { staticClass: \"app-level\" },\n        [\n          _vm.app.level === 200\n            ? _c(\n                \"span\",\n                {\n                  directives: [\n                    {\n                      name: \"tooltip\",\n                      rawName: \"v-tooltip.auto\",\n                      value: _vm.t(\n                        \"settings\",\n                        \"Official apps are developed by and within the community. They offer central functionality and are ready for production use.\"\n                      ),\n                      expression:\n                        \"t('settings', 'Official apps are developed by and within the community. They offer central functionality and are ready for production use.')\",\n                      modifiers: { auto: true }\n                    }\n                  ],\n                  staticClass: \"official icon-checkmark\"\n                },\n                [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Official\")))]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          !_vm.listView\n            ? _c(\"app-score\", { attrs: { score: _vm.app.score } })\n            : _vm._e()\n        ],\n        1\n      ),\n      _vm._v(\" \"),\n      _c(\"div\", { staticClass: \"actions\" }, [\n        _vm.app.error\n          ? _c(\"div\", { staticClass: \"warning\" }, [\n              _vm._v(_vm._s(_vm.app.error))\n            ])\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.loading(_vm.app.id)\n          ? _c(\"div\", { staticClass: \"icon icon-loading-small\" })\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.app.update\n          ? _c(\"input\", {\n              staticClass: \"update primary\",\n              attrs: {\n                type: \"button\",\n                value: _vm.t(\"settings\", \"Update to {update}\", {\n                  update: _vm.app.update\n                }),\n                disabled: _vm.installing || _vm.loading(_vm.app.id)\n              },\n              on: {\n                click: function($event) {\n                  $event.stopPropagation()\n                  return _vm.update(_vm.app.id)\n                }\n              }\n            })\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.app.canUnInstall\n          ? _c(\"input\", {\n              staticClass: \"uninstall\",\n              attrs: {\n                type: \"button\",\n                value: _vm.t(\"settings\", \"Remove\"),\n                disabled: _vm.installing || _vm.loading(_vm.app.id)\n              },\n              on: {\n                click: function($event) {\n                  $event.stopPropagation()\n                  return _vm.remove(_vm.app.id)\n                }\n              }\n            })\n          : _vm._e(),\n        _vm._v(\" \"),\n        _vm.app.active\n          ? _c(\"input\", {\n              staticClass: \"enable\",\n              attrs: {\n                type: \"button\",\n                value: _vm.t(\"settings\", \"Disable\"),\n                disabled: _vm.installing || _vm.loading(_vm.app.id)\n              },\n              on: {\n                click: function($event) {\n                  $event.stopPropagation()\n                  return _vm.disable(_vm.app.id)\n                }\n              }\n            })\n          : _vm._e(),\n        _vm._v(\" \"),\n        !_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible)\n          ? _c(\"input\", {\n              directives: [\n                {\n                  name: \"tooltip\",\n                  rawName: \"v-tooltip.auto\",\n                  value: _vm.enableButtonTooltip,\n                  expression: \"enableButtonTooltip\",\n                  modifiers: { auto: true }\n                }\n              ],\n              staticClass: \"enable\",\n              attrs: {\n                type: \"button\",\n                value: _vm.enableButtonText,\n                disabled:\n                  !_vm.app.canInstall ||\n                  _vm.installing ||\n                  _vm.loading(_vm.app.id)\n              },\n              on: {\n                click: function($event) {\n                  $event.stopPropagation()\n                  return _vm.enable(_vm.app.id)\n                }\n              }\n            })\n          : !_vm.app.active\n          ? _c(\"input\", {\n              directives: [\n                {\n                  name: \"tooltip\",\n                  rawName: \"v-tooltip.auto\",\n                  value: _vm.forceEnableButtonTooltip,\n                  expression: \"forceEnableButtonTooltip\",\n                  modifiers: { auto: true }\n                }\n              ],\n              staticClass: \"enable force\",\n              attrs: {\n                type: \"button\",\n                value: _vm.forceEnableButtonText,\n                disabled: _vm.installing || _vm.loading(_vm.app.id)\n              },\n              on: {\n                click: function($event) {\n                  $event.stopPropagation()\n                  return _vm.forceEnable(_vm.app.id)\n                }\n              }\n            })\n          : _vm._e()\n      ])\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"img\", {\n    staticClass: \"app-score-image\",\n    attrs: { src: _vm.scoreImage }\n  })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"AppContent\", {\n    class: { \"with-app-sidebar\": _vm.currentApp },\n    attrs: {\n      \"app-name\": \"settings\",\n      \"content-class\": { \"icon-loading\": _vm.loadingList },\n      \"navigation-class\": { \"icon-loading\": _vm.loading }\n    },\n    scopedSlots: _vm._u(\n      [\n        {\n          key: \"navigation\",\n          fn: function() {\n            return [\n              _c(\n                \"ul\",\n                { attrs: { id: \"appscategories\" } },\n                _vm._l(_vm.menu, function(item) {\n                  return _c(\"AppNavigationItem\", {\n                    key: item.key,\n                    attrs: { item: item }\n                  })\n                }),\n                1\n              )\n            ]\n          },\n          proxy: true\n        },\n        {\n          key: \"content\",\n          fn: function() {\n            return [\n              _c(\"app-list\", {\n                attrs: {\n                  category: _vm.category,\n                  app: _vm.currentApp,\n                  search: _vm.searchQuery\n                }\n              })\n            ]\n          },\n          proxy: true\n        },\n        _vm.id && _vm.currentApp\n          ? {\n              key: \"sidebar\",\n              fn: function() {\n                return [\n                  _c(\"app-details\", {\n                    attrs: { category: _vm.category, app: _vm.currentApp }\n                  })\n                ]\n              },\n              proxy: true\n            }\n          : null\n      ],\n      null,\n      true\n    )\n  })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ea375ae0\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&\", function() {\n     var newContent = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&\");\n     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"732d0d00\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n   module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&\", function() {\n     var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&\");\n     if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n     update(newContent);\n   });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","import { render, staticRenderFns } from \"./appDetails.vue?vue&type=template&id=02f2d131&scoped=true&\"\nimport script from \"./appDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./appDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"02f2d131\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('02f2d131', component.options)\n    } else {\n      api.reload('02f2d131', component.options)\n    }\n    module.hot.accept(\"./appDetails.vue?vue&type=template&id=02f2d131&scoped=true&\", function () {\n      api.rerender('02f2d131', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"settings/src/components/appDetails.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/vue-style-loader/index.js!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=style&index=0&id=02f2d131&scoped=true&lang=css&\"","export * from \"-!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appDetails.vue?vue&type=template&id=02f2d131&scoped=true&\"","import { render, staticRenderFns } from \"./appList.vue?vue&type=template&id=11a8c382&\"\nimport script from \"./appList.vue?vue&type=script&lang=js&\"\nexport * from \"./appList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('11a8c382', component.options)\n    } else {\n      api.reload('11a8c382', component.options)\n    }\n    module.hot.accept(\"./appList.vue?vue&type=template&id=11a8c382&\", function () {\n      api.rerender('11a8c382', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"settings/src/components/appList.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appList.vue?vue&type=script&lang=js&\"","export * from \"-!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appList.vue?vue&type=template&id=11a8c382&\"","import { render, staticRenderFns } from \"./appItem.vue?vue&type=template&id=09ee4a84&scoped=true&\"\nimport script from \"./appItem.vue?vue&type=script&lang=js&\"\nexport * from \"./appItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"09ee4a84\",\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('09ee4a84', component.options)\n    } else {\n      api.reload('09ee4a84', component.options)\n    }\n    module.hot.accept(\"./appItem.vue?vue&type=template&id=09ee4a84&scoped=true&\", function () {\n      api.rerender('09ee4a84', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"settings/src/components/appList/appItem.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=style&index=0&id=09ee4a84&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appItem.vue?vue&type=template&id=09ee4a84&scoped=true&\"","import { render, staticRenderFns } from \"./appScore.vue?vue&type=template&id=350044f1&\"\nimport script from \"./appScore.vue?vue&type=script&lang=js&\"\nexport * from \"./appScore.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('350044f1', component.options)\n    } else {\n      api.reload('350044f1', component.options)\n    }\n    module.hot.accept(\"./appScore.vue?vue&type=template&id=350044f1&\", function () {\n      api.rerender('350044f1', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"settings/src/components/appList/appScore.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appScore.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appScore.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appScore.vue?vue&type=template&id=350044f1&\"","var render, staticRenderFns\nimport script from \"./appManagement.vue?vue&type=script&lang=js&\"\nexport * from \"./appManagement.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('116da0a4', component.options)\n    } else {\n      api.reload('116da0a4', component.options)\n    }\n    \n  }\n}\ncomponent.options.__file = \"settings/src/components/appManagement.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appManagement.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./appManagement.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./prefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./prefixMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('257430ef', component.options)\n    } else {\n      api.reload('257430ef', component.options)\n    }\n    \n  }\n}\ncomponent.options.__file = \"settings/src/components/prefixMixin.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prefixMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./prefixMixin.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./svgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./svgFilterMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('ebfe8d96', component.options)\n    } else {\n      api.reload('ebfe8d96', component.options)\n    }\n    \n  }\n}\ncomponent.options.__file = \"settings/src/components/svgFilterMixin.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgFilterMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./svgFilterMixin.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=25c6e9ec&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('25c6e9ec', component.options)\n    } else {\n      api.reload('25c6e9ec', component.options)\n    }\n    module.hot.accept(\"./Apps.vue?vue&type=template&id=25c6e9ec&\", function () {\n      api.rerender('25c6e9ec', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"settings/src/views/Apps.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"","export * from \"-!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=template&id=25c6e9ec&\""],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpOA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7NA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnHA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxLA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC3OA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1fA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACtKA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxPA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAYA;AACA;AACA;;;;;;;;;;;;ACjCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAYA;AACA;AACA;;;;;;;;;;;;ACjCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAYA;AACA;AACA;;;;;;;;;;;;ACjCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;A","sourceRoot":""}
\ No newline at end of file
diff --git a/settings/js/vue-2.js b/settings/js/vue-2.js
deleted file mode 100644 (file)
index 3a4b72d..0000000
+++ /dev/null
@@ -1,3125 +0,0 @@
-(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[2],{
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/userList.vue?vue&type=script&lang=js&":
-/*!*********************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/userList.vue?vue&type=script&lang=js& ***!
-  \*********************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _userList_userRow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userList/userRow */ "./settings/src/components/userList/userRow.vue");
-/* harmony import */ var nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! nextcloud-vue */ "./node_modules/nextcloud-vue/dist/ncvuecomponents.js");
-/* harmony import */ var nextcloud_vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var vue_infinite_loading__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue-infinite-loading */ "./node_modules/vue-infinite-loading/dist/vue-infinite-loading.js");
-/* harmony import */ var vue_infinite_loading__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(vue_infinite_loading__WEBPACK_IMPORTED_MODULE_2__);
-/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js");
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-
-
-
-
-/* harmony default export */ __webpack_exports__["default"] = ({
-  name: 'userList',
-  props: ['users', 'showConfig', 'selectedGroup', 'externalActions'],
-  components: {
-    userRow: _userList_userRow__WEBPACK_IMPORTED_MODULE_0__["default"],
-    Multiselect: nextcloud_vue__WEBPACK_IMPORTED_MODULE_1__["Multiselect"],
-    InfiniteLoading: vue_infinite_loading__WEBPACK_IMPORTED_MODULE_2___default.a
-  },
-  data: function data() {
-    var unlimitedQuota = {
-      id: 'none',
-      label: t('settings', 'Unlimited')
-    },
-        defaultQuota = {
-      id: 'default',
-      label: t('settings', 'Default quota')
-    };
-    return {
-      unlimitedQuota: unlimitedQuota,
-      defaultQuota: defaultQuota,
-      loading: {
-        all: false,
-        groups: false
-      },
-      scrolled: false,
-      searchQuery: '',
-      newUser: {
-        id: '',
-        displayName: '',
-        password: '',
-        mailAddress: '',
-        groups: [],
-        subAdminsGroups: [],
-        quota: defaultQuota,
-        language: {
-          code: 'en',
-          name: t('settings', 'Default language')
-        }
-      }
-    };
-  },
-  mounted: function mounted() {
-    if (!this.settings.canChangePassword) {
-      OC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));
-    }
-    /** 
-     * Init default language from server data. The use of this.settings
-     * requires a computed variable, which break the v-model binding of the form,
-     * this is a much easier solution than getter and setter on a computed var
-     */
-
-
-    vue__WEBPACK_IMPORTED_MODULE_3__["default"].set(this.newUser.language, 'code', this.settings.defaultLanguage);
-    /**
-     * In case the user directly loaded the user list within a group
-     * the watch won't be triggered. We need to initialize it.
-     */
-
-    this.setNewUserDefaultGroup(this.selectedGroup);
-    /** 
-     * Register search
-     */
-
-    this.userSearch = new OCA.Search(this.search, this.resetSearch);
-  },
-  computed: {
-    settings: function settings() {
-      return this.$store.getters.getServerData;
-    },
-    filteredUsers: function filteredUsers() {
-      if (this.selectedGroup === 'disabled') {
-        var disabledUsers = this.users.filter(function (user) {
-          return user.enabled === false;
-        });
-
-        if (disabledUsers.length === 0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) {
-          // disabled group is empty, redirection to all users
-          this.$router.push({
-            name: 'users'
-          });
-          this.$refs.infiniteLoading.stateChanger.reset();
-        }
-
-        return disabledUsers;
-      }
-
-      if (!this.settings.isAdmin) {
-        // we don't want subadmins to edit themselves
-        return this.users.filter(function (user) {
-          return user.enabled !== false && user.id !== oc_current_user;
-        });
-      }
-
-      return this.users.filter(function (user) {
-        return user.enabled !== false;
-      });
-    },
-    groups: function groups() {
-      // data provided php side + remove the disabled group
-      return this.$store.getters.getGroups.filter(function (group) {
-        return group.id !== 'disabled';
-      }).sort(function (a, b) {
-        return a.name.localeCompare(b.name);
-      });
-    },
-    canAddGroups: function canAddGroups() {
-      // disabled if no permission to add new users to group
-      return this.groups.map(function (group) {
-        // clone object because we don't want
-        // to edit the original groups
-        group = Object.assign({}, group);
-        group.$isDisabled = group.canAdd === false;
-        return group;
-      });
-    },
-    subAdminsGroups: function subAdminsGroups() {
-      // data provided php side
-      return this.$store.getters.getSubadminGroups;
-    },
-    quotaOptions: function quotaOptions() {
-      // convert the preset array into objects
-      var quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {
-        return acc.concat({
-          id: cur,
-          label: cur
-        });
-      }, []); // add default presets
-
-      quotaPreset.unshift(this.unlimitedQuota);
-      quotaPreset.unshift(this.defaultQuota);
-      return quotaPreset;
-    },
-    minPasswordLength: function minPasswordLength() {
-      return this.$store.getters.getPasswordPolicyMinLength;
-    },
-    usersOffset: function usersOffset() {
-      return this.$store.getters.getUsersOffset;
-    },
-    usersLimit: function usersLimit() {
-      return this.$store.getters.getUsersLimit;
-    },
-    usersCount: function usersCount() {
-      return this.users.length;
-    },
-
-    /* LANGUAGES */
-    languages: function languages() {
-      return Array({
-        label: t('settings', 'Common languages'),
-        languages: this.settings.languages.commonlanguages
-      }, {
-        label: t('settings', 'All languages'),
-        languages: this.settings.languages.languages
-      });
-    }
-  },
-  watch: {
-    // watch url change and group select
-    selectedGroup: function selectedGroup(val, old) {
-      this.$store.commit('resetUsers');
-      this.$refs.infiniteLoading.stateChanger.reset();
-      this.setNewUserDefaultGroup(val);
-    },
-    // make sure the infiniteLoading state is changed if we manually
-    // add/remove data from the store
-    usersCount: function usersCount(val, old) {
-      // deleting the last user, reset the list 
-      if (val === 0 && old === 1) {
-        this.$refs.infiniteLoading.stateChanger.reset(); // adding the first user, warn the infiniteLoader that 
-        // the list is not empty anymore (we don't fetch the newly
-        // added user as we already have all the info we need)
-      } else if (val === 1 && old === 0) {
-        this.$refs.infiniteLoading.stateChanger.loaded();
-      }
-    }
-  },
-  methods: {
-    onScroll: function onScroll(event) {
-      this.scrolled = event.target.scrollTo > 0;
-    },
-
-    /**
-     * Validate quota string to make sure it's a valid human file size
-     * 
-     * @param {string} quota Quota in readable format '5 GB'
-     * @returns {Object}
-     */
-    validateQuota: function validateQuota(quota) {
-      // only used for new presets sent through @Tag
-      var validQuota = OC.Util.computerFileSize(quota);
-
-      if (validQuota !== null && validQuota >= 0) {
-        // unify format output
-        quota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));
-        return this.newUser.quota = {
-          id: quota,
-          label: quota
-        };
-      } // Default is unlimited
-
-
-      return this.newUser.quota = this.quotaOptions[0];
-    },
-    infiniteHandler: function infiniteHandler($state) {
-      this.$store.dispatch('getUsers', {
-        offset: this.usersOffset,
-        limit: this.usersLimit,
-        group: this.selectedGroup !== 'disabled' ? this.selectedGroup : '',
-        search: this.searchQuery
-      }).then(function (response) {
-        response ? $state.loaded() : $state.complete();
-      });
-    },
-
-    /* SEARCH */
-    search: function search(query) {
-      this.searchQuery = query;
-      this.$store.commit('resetUsers');
-      this.$refs.infiniteLoading.stateChanger.reset();
-    },
-    resetSearch: function resetSearch() {
-      this.search('');
-    },
-    resetForm: function resetForm() {
-      // revert form to original state
-      Object.assign(this.newUser, this.$options.data.call(this).newUser); // reset group
-
-      this.setNewUserDefaultGroup(this.selectedGroup);
-      this.loading.all = false;
-    },
-    createUser: function createUser() {
-      var _this = this;
-
-      this.loading.all = true;
-      this.$store.dispatch('addUser', {
-        userid: this.newUser.id,
-        password: this.newUser.password,
-        displayName: this.newUser.displayName,
-        email: this.newUser.mailAddress,
-        groups: this.newUser.groups.map(function (group) {
-          return group.id;
-        }),
-        subadmin: this.newUser.subAdminsGroups.map(function (group) {
-          return group.id;
-        }),
-        quota: this.newUser.quota.id,
-        language: this.newUser.language.code
-      }).then(function () {
-        _this.resetForm();
-
-        _this.$refs.newusername.focus();
-      }).catch(function (error) {
-        _this.loading.all = false;
-
-        if (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {
-          var statuscode = error.response.data.ocs.meta.statuscode;
-
-          if (statuscode === 102) {
-            // wrong username
-            _this.$refs.newusername.focus();
-          } else if (statuscode === 107) {
-            // wrong password
-            _this.$refs.newuserpassword.focus();
-          }
-        }
-      });
-    },
-    setNewUserDefaultGroup: function setNewUserDefaultGroup(value) {
-      if (value && value.length > 0) {
-        // setting new user default group to the current selected one
-        var currentGroup = this.groups.find(function (group) {
-          return group.id === value;
-        });
-
-        if (currentGroup) {
-          this.newUser.groups = [currentGroup];
-          return;
-        }
-      } // fallback, empty selected group
-
-
-      this.newUser.groups = [];
-    },
-
-    /**
-     * Create a new group
-     * 
-     * @param {string} groups Group id
-     * @returns {Promise}
-     */
-    createGroup: function createGroup(gid) {
-      var _this2 = this;
-
-      this.loading.groups = true;
-      this.$store.dispatch('addGroup', gid).then(function (group) {
-        _this2.newUser.groups.push(_this2.groups.find(function (group) {
-          return group.id === gid;
-        }));
-
-        _this2.loading.groups = false;
-      }).catch(function () {
-        _this2.loading.groups = false;
-      });
-      return this.$store.getters.getGroups[this.groups.length];
-    }
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/userList/userRow.vue?vue&type=script&lang=js&":
-/*!*****************************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/userList/userRow.vue?vue&type=script&lang=js& ***!
-  \*****************************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var vue_click_outside__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue-click-outside */ "./node_modules/vue-click-outside/index.js");
-/* harmony import */ var vue_click_outside__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue_click_outside__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js");
-/* harmony import */ var v_tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! v-tooltip */ "./node_modules/v-tooltip/dist/v-tooltip.esm.js");
-/* harmony import */ var nextcloud_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! nextcloud-vue */ "./node_modules/nextcloud-vue/dist/ncvuecomponents.js");
-/* harmony import */ var nextcloud_vue__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(nextcloud_vue__WEBPACK_IMPORTED_MODULE_3__);
-function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
-
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-
-
-
-
-vue__WEBPACK_IMPORTED_MODULE_1__["default"].use(v_tooltip__WEBPACK_IMPORTED_MODULE_2__["default"]);
-/* harmony default export */ __webpack_exports__["default"] = ({
-  name: 'userRow',
-  props: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig', 'languages', 'externalActions'],
-  components: {
-    PopoverMenu: nextcloud_vue__WEBPACK_IMPORTED_MODULE_3__["PopoverMenu"],
-    Multiselect: nextcloud_vue__WEBPACK_IMPORTED_MODULE_3__["Multiselect"]
-  },
-  directives: {
-    ClickOutside: vue_click_outside__WEBPACK_IMPORTED_MODULE_0___default.a
-  },
-  mounted: function mounted() {// required if popup needs to stay opened after menu click
-    // since we only have disable/delete actions, let's close it directly
-    // this.popupItem = this.$el;
-  },
-  data: function data() {
-    return {
-      rand: parseInt(Math.random() * 1000),
-      openedMenu: false,
-      feedbackMessage: '',
-      loading: {
-        all: false,
-        displayName: false,
-        password: false,
-        mailAddress: false,
-        groups: false,
-        subadmins: false,
-        quota: false,
-        delete: false,
-        disable: false,
-        languages: false
-      }
-    };
-  },
-  computed: {
-    /* USER POPOVERMENU ACTIONS */
-    userActions: function userActions() {
-      var actions = [{
-        icon: 'icon-delete',
-        text: t('settings', 'Delete user'),
-        action: this.deleteUser
-      }, {
-        icon: this.user.enabled ? 'icon-close' : 'icon-add',
-        text: this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'),
-        action: this.enableDisableUser
-      }];
-
-      if (this.user.email !== null && this.user.email !== '') {
-        actions.push({
-          icon: 'icon-mail',
-          text: t('settings', 'Resend welcome email'),
-          action: this.sendWelcomeMail
-        });
-      }
-
-      return actions.concat(this.externalActions);
-    },
-
-    /* GROUPS MANAGEMENT */
-    userGroups: function userGroups() {
-      var _this = this;
-
-      var userGroups = this.groups.filter(function (group) {
-        return _this.user.groups.includes(group.id);
-      });
-      return userGroups;
-    },
-    userSubAdminsGroups: function userSubAdminsGroups() {
-      var _this2 = this;
-
-      var userSubAdminsGroups = this.subAdminsGroups.filter(function (group) {
-        return _this2.user.subadmin.includes(group.id);
-      });
-      return userSubAdminsGroups;
-    },
-    availableGroups: function availableGroups() {
-      var _this3 = this;
-
-      return this.groups.map(function (group) {
-        // clone object because we don't want
-        // to edit the original groups
-        var groupClone = Object.assign({}, group); // two settings here:
-        // 1. user NOT in group but no permission to add
-        // 2. user is in group but no permission to remove
-
-        groupClone.$isDisabled = group.canAdd === false && !_this3.user.groups.includes(group.id) || group.canRemove === false && _this3.user.groups.includes(group.id);
-        return groupClone;
-      });
-    },
-
-    /* QUOTA MANAGEMENT */
-    usedSpace: function usedSpace() {
-      if (this.user.quota.used) {
-        return t('settings', '{size} used', {
-          size: OC.Util.humanFileSize(this.user.quota.used)
-        });
-      }
-
-      return t('settings', '{size} used', {
-        size: OC.Util.humanFileSize(0)
-      });
-    },
-    usedQuota: function usedQuota() {
-      var quota = this.user.quota.quota;
-
-      if (quota > 0) {
-        quota = Math.min(100, Math.round(this.user.quota.used / quota * 100));
-      } else {
-        var usedInGB = this.user.quota.used / (10 * Math.pow(2, 30)); //asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota
-
-        quota = 95 * (1 - 1 / (usedInGB + 1));
-      }
-
-      return isNaN(quota) ? 0 : quota;
-    },
-    // Mapping saved values to objects
-    userQuota: function userQuota() {
-      if (this.user.quota.quota >= 0) {
-        // if value is valid, let's map the quotaOptions or return custom quota
-        var humanQuota = OC.Util.humanFileSize(this.user.quota.quota);
-        var userQuota = this.quotaOptions.find(function (quota) {
-          return quota.id === humanQuota;
-        });
-        return userQuota ? userQuota : {
-          id: humanQuota,
-          label: humanQuota
-        };
-      } else if (this.user.quota.quota === 'default') {
-        // default quota is replaced by the proper value on load
-        return this.quotaOptions[0];
-      }
-
-      return this.quotaOptions[1]; // unlimited
-    },
-
-    /* PASSWORD POLICY? */
-    minPasswordLength: function minPasswordLength() {
-      return this.$store.getters.getPasswordPolicyMinLength;
-    },
-
-    /* LANGUAGE */
-    userLanguage: function userLanguage() {
-      var _this4 = this;
-
-      var availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);
-      var userLang = availableLanguages.find(function (lang) {
-        return lang.code === _this4.user.language;
-      });
-
-      if (_typeof(userLang) !== 'object' && this.user.language !== '') {
-        return {
-          code: this.user.language,
-          name: this.user.language
-        };
-      } else if (this.user.language === '') {
-        return false;
-      }
-
-      return userLang;
-    }
-  },
-  methods: {
-    /* MENU HANDLING */
-    toggleMenu: function toggleMenu() {
-      this.openedMenu = !this.openedMenu;
-    },
-    hideMenu: function hideMenu() {
-      this.openedMenu = false;
-    },
-
-    /**
-     * Generate avatar url
-     * 
-     * @param {string} user The user name
-     * @param {int} size Size integer, default 32
-     * @returns {string}
-     */
-    generateAvatar: function generateAvatar(user) {
-      var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32;
-      return OC.generateUrl('/avatar/{user}/{size}?v={version}', {
-        user: user,
-        size: size,
-        version: oc_userconfig.avatar.version
-      });
-    },
-
-    /**
-     * Format array of groups objects to a string for the popup
-     * 
-     * @param {array} groups The groups
-     * @returns {string}
-     */
-    formatGroupsTitle: function formatGroupsTitle(groups) {
-      var names = groups.map(function (group) {
-        return group.name;
-      });
-      return names.slice(2).join(', ');
-    },
-    deleteUser: function deleteUser() {
-      var _this5 = this;
-
-      this.loading.delete = true;
-      this.loading.all = true;
-      var userid = this.user.id;
-      return this.$store.dispatch('deleteUser', userid).then(function () {
-        _this5.loading.delete = false;
-        _this5.loading.all = false;
-      });
-    },
-    enableDisableUser: function enableDisableUser() {
-      var _this6 = this;
-
-      this.loading.delete = true;
-      this.loading.all = true;
-      var userid = this.user.id;
-      var enabled = !this.user.enabled;
-      return this.$store.dispatch('enableDisableUser', {
-        userid: userid,
-        enabled: enabled
-      }).then(function () {
-        _this6.loading.delete = false;
-        _this6.loading.all = false;
-      });
-    },
-
-    /**
-     * Set user displayName
-     * 
-     * @param {string} displayName The display name
-     * @returns {Promise}
-     */
-    updateDisplayName: function updateDisplayName() {
-      var _this7 = this;
-
-      var displayName = this.$refs.displayName.value;
-      this.loading.displayName = true;
-      this.$store.dispatch('setUserData', {
-        userid: this.user.id,
-        key: 'displayname',
-        value: displayName
-      }).then(function () {
-        _this7.loading.displayName = false;
-        _this7.$refs.displayName.value = displayName;
-      });
-    },
-
-    /**
-     * Set user password
-     * 
-     * @param {string} password The email adress
-     * @returns {Promise}
-     */
-    updatePassword: function updatePassword() {
-      var _this8 = this;
-
-      var password = this.$refs.password.value;
-      this.loading.password = true;
-      this.$store.dispatch('setUserData', {
-        userid: this.user.id,
-        key: 'password',
-        value: password
-      }).then(function () {
-        _this8.loading.password = false;
-        _this8.$refs.password.value = ''; // empty & show placeholder 
-      });
-    },
-
-    /**
-     * Set user mailAddress
-     * 
-     * @param {string} mailAddress The email adress
-     * @returns {Promise}
-     */
-    updateEmail: function updateEmail() {
-      var _this9 = this;
-
-      var mailAddress = this.$refs.mailAddress.value;
-      this.loading.mailAddress = true;
-      this.$store.dispatch('setUserData', {
-        userid: this.user.id,
-        key: 'email',
-        value: mailAddress
-      }).then(function () {
-        _this9.loading.mailAddress = false;
-        _this9.$refs.mailAddress.value = mailAddress;
-      });
-    },
-
-    /**
-     * Create a new group and add user to it
-     * 
-     * @param {string} groups Group id
-     * @returns {Promise}
-     */
-    createGroup: function createGroup(gid) {
-      var _this10 = this;
-
-      this.loading = {
-        groups: true,
-        subadmins: true
-      };
-      this.$store.dispatch('addGroup', gid).then(function () {
-        _this10.loading = {
-          groups: false,
-          subadmins: false
-        };
-        var userid = _this10.user.id;
-
-        _this10.$store.dispatch('addUserGroup', {
-          userid: userid,
-          gid: gid
-        });
-      }).catch(function () {
-        _this10.loading = {
-          groups: false,
-          subadmins: false
-        };
-      });
-      return this.$store.getters.getGroups[this.groups.length];
-    },
-
-    /**
-     * Add user to group
-     * 
-     * @param {object} group Group object
-     * @returns {Promise}
-     */
-    addUserGroup: function addUserGroup(group) {
-      var _this11 = this;
-
-      if (group.canAdd === false) {
-        return false;
-      }
-
-      this.loading.groups = true;
-      var userid = this.user.id;
-      var gid = group.id;
-      return this.$store.dispatch('addUserGroup', {
-        userid: userid,
-        gid: gid
-      }).then(function () {
-        return _this11.loading.groups = false;
-      });
-    },
-
-    /**
-     * Remove user from group
-     * 
-     * @param {object} group Group object
-     * @returns {Promise}
-     */
-    removeUserGroup: function removeUserGroup(group) {
-      var _this12 = this;
-
-      if (group.canRemove === false) {
-        return false;
-      }
-
-      this.loading.groups = true;
-      var userid = this.user.id;
-      var gid = group.id;
-      return this.$store.dispatch('removeUserGroup', {
-        userid: userid,
-        gid: gid
-      }).then(function () {
-        _this12.loading.groups = false; // remove user from current list if current list is the removed group
-
-        if (_this12.$route.params.selectedGroup === gid) {
-          _this12.$store.commit('deleteUser', userid);
-        }
-      }).catch(function () {
-        _this12.loading.groups = false;
-      });
-    },
-
-    /**
-     * Add user to group
-     * 
-     * @param {object} group Group object
-     * @returns {Promise}
-     */
-    addUserSubAdmin: function addUserSubAdmin(group) {
-      var _this13 = this;
-
-      this.loading.subadmins = true;
-      var userid = this.user.id;
-      var gid = group.id;
-      return this.$store.dispatch('addUserSubAdmin', {
-        userid: userid,
-        gid: gid
-      }).then(function () {
-        return _this13.loading.subadmins = false;
-      });
-    },
-
-    /**
-     * Remove user from group
-     * 
-     * @param {object} group Group object
-     * @returns {Promise}
-     */
-    removeUserSubAdmin: function removeUserSubAdmin(group) {
-      var _this14 = this;
-
-      this.loading.subadmins = true;
-      var userid = this.user.id;
-      var gid = group.id;
-      return this.$store.dispatch('removeUserSubAdmin', {
-        userid: userid,
-        gid: gid
-      }).then(function () {
-        return _this14.loading.subadmins = false;
-      });
-    },
-
-    /**
-     * Dispatch quota set request
-     * 
-     * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}
-     * @returns {string}
-     */
-    setUserQuota: function setUserQuota() {
-      var _this15 = this;
-
-      var quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';
-      this.loading.quota = true; // ensure we only send the preset id
-
-      quota = quota.id ? quota.id : quota;
-      this.$store.dispatch('setUserData', {
-        userid: this.user.id,
-        key: 'quota',
-        value: quota
-      }).then(function () {
-        return _this15.loading.quota = false;
-      });
-      return quota;
-    },
-
-    /**
-     * Validate quota string to make sure it's a valid human file size
-     * 
-     * @param {string} quota Quota in readable format '5 GB'
-     * @returns {Promise|boolean}
-     */
-    validateQuota: function validateQuota(quota) {
-      // only used for new presets sent through @Tag
-      var validQuota = OC.Util.computerFileSize(quota);
-
-      if (validQuota !== null && validQuota >= 0) {
-        // unify format output
-        return this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));
-      } // if no valid do not change
-
-
-      return false;
-    },
-
-    /**
-     * Dispatch language set request
-     * 
-     * @param {Object} lang language object {code:'en', name:'English'}
-     * @returns {Object}
-     */
-    setUserLanguage: function setUserLanguage(lang) {
-      var _this16 = this;
-
-      this.loading.languages = true; // ensure we only send the preset id
-
-      this.$store.dispatch('setUserData', {
-        userid: this.user.id,
-        key: 'language',
-        value: lang.code
-      }).then(function () {
-        return _this16.loading.languages = false;
-      });
-      return lang;
-    },
-
-    /**
-     * Dispatch new welcome mail request
-     */
-    sendWelcomeMail: function sendWelcomeMail() {
-      var _this17 = this;
-
-      this.loading.all = true;
-      this.$store.dispatch('sendWelcomeMail', this.user.id).then(function (success) {
-        if (success) {
-          // Show feedback to indicate the success
-          _this17.feedbackMessage = t('setting', 'Welcome mail sent!');
-          setTimeout(function () {
-            _this17.feedbackMessage = '';
-          }, 2000);
-        }
-
-        _this17.loading.all = false;
-      });
-    }
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/views/Users.vue?vue&type=script&lang=js&":
-/*!*************************************************************************************************************************************************!*\
-  !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/views/Users.vue?vue&type=script&lang=js& ***!
-  \*************************************************************************************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! nextcloud-vue */ "./node_modules/nextcloud-vue/dist/ncvuecomponents.js");
-/* harmony import */ var nextcloud_vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var _components_userList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/userList */ "./settings/src/components/userList.vue");
-/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.runtime.esm.js");
-/* harmony import */ var vue_localstorage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue-localstorage */ "./node_modules/vue-localstorage/dist/vue-local-storage.js");
-/* harmony import */ var vue_localstorage__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(vue_localstorage__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-multiselect */ "./node_modules/vue-multiselect/dist/vue-multiselect.min.js");
-/* harmony import */ var vue_multiselect__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_multiselect__WEBPACK_IMPORTED_MODULE_4__);
-/* harmony import */ var _store_api__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../store/api */ "./settings/src/store/api.js");
-function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
-
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-
-
-
-
-
-
-vue__WEBPACK_IMPORTED_MODULE_2__["default"].use(vue_localstorage__WEBPACK_IMPORTED_MODULE_3___default.a);
-/* harmony default export */ __webpack_exports__["default"] = ({
-  name: 'Users',
-  props: ['selectedGroup'],
-  components: {
-    AppContent: nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__["AppContent"],
-    AppNavigationItem: nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__["AppNavigationItem"],
-    AppNavigationNew: nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__["AppNavigationNew"],
-    AppNavigationSettings: nextcloud_vue__WEBPACK_IMPORTED_MODULE_0__["AppNavigationSettings"],
-    userList: _components_userList__WEBPACK_IMPORTED_MODULE_1__["default"],
-    Multiselect: vue_multiselect__WEBPACK_IMPORTED_MODULE_4___default.a
-  },
-  beforeMount: function beforeMount() {
-    this.$store.commit('initGroups', {
-      groups: this.$store.getters.getServerData.groups,
-      orderBy: this.$store.getters.getServerData.sortGroups,
-      userCount: this.$store.getters.getServerData.userCount
-    });
-    this.$store.dispatch('getPasswordPolicyMinLength');
-  },
-  created: function created() {
-    // init the OCA.Settings.UserList object
-    // and add the registerAction method
-    Object.assign(OCA, {
-      Settings: {
-        UserList: {
-          registerAction: this.registerAction
-        }
-      }
-    });
-  },
-  data: function data() {
-    return {
-      // default quota is set to unlimited
-      unlimitedQuota: {
-        id: 'none',
-        label: t('settings', 'Unlimited')
-      },
-      // temporary value used for multiselect change
-      selectedQuota: false,
-      externalActions: [],
-      showAddGroupEntry: false,
-      loadingAddGroup: false,
-      showConfig: {
-        showStoragePath: false,
-        showUserBackend: false,
-        showLastLogin: false,
-        showNewUserForm: false,
-        showLanguages: false
-      }
-    };
-  },
-  methods: {
-    toggleNewUserMenu: function toggleNewUserMenu() {
-      this.showConfig.showNewUserForm = !this.showConfig.showNewUserForm;
-
-      if (this.showConfig.showNewUserForm) {
-        vue__WEBPACK_IMPORTED_MODULE_2__["default"].nextTick(function () {
-          window.newusername.focus();
-        });
-      }
-    },
-    getLocalstorage: function getLocalstorage(key) {
-      // force initialization
-      var localConfig = this.$localStorage.get(key); // if localstorage is null, fallback to original values
-
-      this.showConfig[key] = localConfig !== null ? localConfig === 'true' : this.showConfig[key];
-      return this.showConfig[key];
-    },
-    setLocalStorage: function setLocalStorage(key, status) {
-      this.showConfig[key] = status;
-      this.$localStorage.set(key, status);
-      return status;
-    },
-    removeGroup: function removeGroup(groupid) {
-      var self = this; // TODO migrate to a vue js confirm dialog component 
-
-      OC.dialogs.confirm(t('settings', 'You are about to remove the group {group}. The users will NOT be deleted.', {
-        group: groupid
-      }), t('settings', 'Please confirm the group removal '), function (success) {
-        if (success) {
-          self.$store.dispatch('removeGroup', groupid);
-        }
-      });
-    },
-
-    /**
-     * Dispatch default quota set request
-     * 
-     * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}
-     * @returns {string}
-     */
-    setDefaultQuota: function setDefaultQuota() {
-      var _this = this;
-
-      var quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';
-      this.$store.dispatch('setAppConfig', {
-        app: 'files',
-        key: 'default_quota',
-        // ensure we only send the preset id
-        value: quota.id ? quota.id : quota
-      }).then(function () {
-        if (_typeof(quota) !== 'object') {
-          quota = {
-            id: quota,
-            label: quota
-          };
-        }
-
-        _this.defaultQuota = quota;
-      });
-    },
-
-    /**
-     * Validate quota string to make sure it's a valid human file size
-     * 
-     * @param {string} quota Quota in readable format '5 GB'
-     * @returns {Promise|boolean}
-     */
-    validateQuota: function validateQuota(quota) {
-      // only used for new presets sent through @Tag
-      var validQuota = OC.Util.computerFileSize(quota);
-
-      if (validQuota === 0) {
-        return this.setDefaultQuota('none');
-      } else if (validQuota !== null) {
-        // unify format output
-        return this.setDefaultQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));
-      } // if no valid do not change
-
-
-      return false;
-    },
-
-    /**
-     * Register a new action for the user menu
-     * 
-     * @param {string} icon the icon class
-     * @param {string} text the text to display
-     * @param {function} action the function to run
-     */
-    registerAction: function registerAction(icon, text, action) {
-      this.externalActions.push({
-        icon: icon,
-        text: text,
-        action: action
-      });
-      return this.externalActions;
-    },
-
-    /**
-     * Create a new group
-     * 
-     * @param {Object} event The form submit event
-     */
-    createGroup: function createGroup(event) {
-      var _this2 = this;
-
-      var gid = event.target[0].value;
-      this.loadingAddGroup = true;
-      this.$store.dispatch('addGroup', gid).then(function () {
-        _this2.showAddGroupEntry = false;
-        _this2.loadingAddGroup = false;
-
-        _this2.$router.push({
-          name: 'group',
-          params: {
-            selectedGroup: gid
-          }
-        });
-      }).catch(function () {
-        _this2.loadingAddGroup = false;
-      });
-    }
-  },
-  computed: {
-    users: function users() {
-      return this.$store.getters.getUsers;
-    },
-    usersOffset: function usersOffset() {
-      return this.$store.getters.getUsersOffset;
-    },
-    usersLimit: function usersLimit() {
-      return this.$store.getters.getUsersLimit;
-    },
-    // Local settings
-    showLanguages: {
-      get: function get() {
-        return this.getLocalstorage('showLanguages');
-      },
-      set: function set(status) {
-        this.setLocalStorage('showLanguages', status);
-      }
-    },
-    showLastLogin: {
-      get: function get() {
-        return this.getLocalstorage('showLastLogin');
-      },
-      set: function set(status) {
-        this.setLocalStorage('showLastLogin', status);
-      }
-    },
-    showUserBackend: {
-      get: function get() {
-        return this.getLocalstorage('showUserBackend');
-      },
-      set: function set(status) {
-        this.setLocalStorage('showUserBackend', status);
-      }
-    },
-    showStoragePath: {
-      get: function get() {
-        return this.getLocalstorage('showStoragePath');
-      },
-      set: function set(status) {
-        this.setLocalStorage('showStoragePath', status);
-      }
-    },
-    userCount: function userCount() {
-      return this.$store.getters.getUserCount;
-    },
-    settings: function settings() {
-      return this.$store.getters.getServerData;
-    },
-    // default quota
-    quotaOptions: function quotaOptions() {
-      // convert the preset array into objects
-      var quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {
-        return acc.concat({
-          id: cur,
-          label: cur
-        });
-      }, []); // add default presets
-
-      quotaPreset.unshift(this.unlimitedQuota);
-      return quotaPreset;
-    },
-    // mapping saved values to objects
-    defaultQuota: {
-      get: function get() {
-        if (this.selectedQuota !== false) {
-          return this.selectedQuota;
-        }
-
-        if (OC.Util.computerFileSize(this.settings.defaultQuota) > 0) {
-          // if value is valid, let's map the quotaOptions or return custom quota
-          return {
-            id: this.settings.defaultQuota,
-            label: this.settings.defaultQuota
-          };
-        }
-
-        return this.unlimitedQuota; // unlimited
-      },
-      set: function set(quota) {
-        this.selectedQuota = quota;
-      }
-    },
-    // BUILD APP NAVIGATION MENU OBJECT
-    menu: function menu() {
-      var _this3 = this;
-
-      // Data provided php side
-      var self = this;
-      var groups = this.$store.getters.getGroups;
-      groups = Array.isArray(groups) ? groups : []; // Map groups
-
-      groups = groups.map(function (group) {
-        var item = {};
-        item.id = group.id.replace(' ', '_');
-        item.key = item.id;
-        item.utils = {}; // router link to
-
-        item.router = {
-          name: 'group',
-          params: {
-            selectedGroup: group.id
-          }
-        }; // group name
-
-        item.text = group.name;
-        item.title = group.name; // users count for all groups
-
-        if (group.usercount - group.disabled > 0 || group.usercount === -1) {
-          item.utils.counter = group.usercount - group.disabled;
-        }
-
-        if (item.id !== 'admin' && item.id !== 'disabled' && _this3.settings.isAdmin) {
-          // add delete button on real groups
-          item.utils.actions = [{
-            icon: 'icon-delete',
-            text: t('settings', 'Remove group'),
-            action: function action() {
-              self.removeGroup(group.id);
-            }
-          }];
-        }
-
-        ;
-        return item;
-      }); // Every item is added on top of the array, so we're going backward
-      // Groups, separator, disabled, admin, everyone
-      // Add separator
-
-      var realGroups = groups.find(function (group) {
-        return group.id !== 'disabled' && group.id !== 'admin';
-      });
-      realGroups = typeof realGroups === 'undefined' ? [] : realGroups;
-      realGroups = Array.isArray(realGroups) ? realGroups : [realGroups];
-
-      if (realGroups.length > 0) {
-        var separator = {
-          caption: true,
-          text: t('settings', 'Groups')
-        };
-        groups.unshift(separator);
-      } // Adjust admin and disabled groups
-
-
-      var adminGroup = groups.find(function (group) {
-        return group.id == 'admin';
-      });
-      var disabledGroup = groups.find(function (group) {
-        return group.id == 'disabled';
-      }); // filter out admin and disabled
-
-      groups = groups.filter(function (group) {
-        return ['admin', 'disabled'].indexOf(group.id) === -1;
-      });
-
-      if (adminGroup && adminGroup.text) {
-        adminGroup.text = t('settings', 'Admins'); // rename admin group
-
-        adminGroup.icon = 'icon-user-admin'; // set icon
-
-        groups.unshift(adminGroup); // add admin group if present
-      }
-
-      if (disabledGroup && disabledGroup.text) {
-        disabledGroup.text = t('settings', 'Disabled users'); // rename disabled group
-
-        disabledGroup.icon = 'icon-disabled-users'; // set icon
-
-        if (disabledGroup.utils && (disabledGroup.utils.counter > 0 // add disabled if not empty 
-        || disabledGroup.utils.counter === -1) // add disabled if ldap enabled 
-        ) {
-            groups.unshift(disabledGroup);
-          }
-      } // Add everyone group
-
-
-      var everyoneGroup = {
-        id: 'everyone',
-        key: 'everyone',
-        icon: 'icon-contacts-dark',
-        router: {
-          name: 'users'
-        },
-        text: t('settings', 'Everyone')
-      }; // users count
-
-      if (this.userCount > 0) {
-        vue__WEBPACK_IMPORTED_MODULE_2__["default"].set(everyoneGroup, 'utils', {
-          counter: this.userCount
-        });
-      }
-
-      groups.unshift(everyoneGroup);
-      var addGroup = {
-        id: 'addgroup',
-        key: 'addgroup',
-        icon: 'icon-add',
-        text: t('settings', 'Add group'),
-        classes: this.loadingAddGroup ? 'icon-loading-small' : ''
-      };
-
-      if (this.showAddGroupEntry) {
-        vue__WEBPACK_IMPORTED_MODULE_2__["default"].set(addGroup, 'edit', {
-          text: t('settings', 'Add group'),
-          action: this.createGroup,
-          reset: function reset() {
-            self.showAddGroupEntry = false;
-          }
-        });
-        addGroup.classes = 'editing';
-      } else {
-        vue__WEBPACK_IMPORTED_MODULE_2__["default"].set(addGroup, 'action', function () {
-          self.showAddGroupEntry = true; // focus input
-
-          vue__WEBPACK_IMPORTED_MODULE_2__["default"].nextTick(function () {
-            window.addgroup.querySelector('form > input[type="text"]').focus();
-          });
-        });
-      }
-
-      groups.unshift(addGroup);
-      return groups;
-    }
-  }
-});
-
-/***/ }),
-
-/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/userList.vue?vue&type=template&id=1347754e&":
-/*!***********************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/userList.vue?vue&type=template&id=1347754e& ***!
-  \***********************************************************************************************************************************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
-var render = function() {
-  var _vm = this
-  var _h = _vm.$createElement
-  var _c = _vm._self._c || _h
-  return _c(
-    "div",
-    {
-      staticClass: "user-list-grid",
-      attrs: { id: "app-content" },
-      on: {
-        "&scroll": function($event) {
-          return _vm.onScroll($event)
-        }
-      }
-    },
-    [
-      _c(
-        "div",
-        {
-          staticClass: "row",
-          class: { sticky: _vm.scrolled && !_vm.showConfig.showNewUserForm },
-          attrs: { id: "grid-header" }
-        },
-        [
-          _c("div", { staticClass: "avatar", attrs: { id: "headerAvatar" } }),
-          _vm._v(" "),
-          _c("div", { staticClass: "name", attrs: { id: "headerName" } }, [
-            _vm._v(_vm._s(_vm.t("settings", "Username")))
-          ]),
-          _vm._v(" "),
-          _c(
-            "div",
-            { staticClass: "displayName", attrs: { id: "headerDisplayName" } },
-            [_vm._v(_vm._s(_vm.t("settings", "Display name")))]
-          ),
-          _vm._v(" "),
-          _c(
-            "div",
-            { staticClass: "password", attrs: { id: "headerPassword" } },
-            [_vm._v(_vm._s(_vm.t("settings", "Password")))]
-          ),
-          _vm._v(" "),
-          _c(
-            "div",
-            { staticClass: "mailAddress", attrs: { id: "headerAddress" } },
-            [_vm._v(_vm._s(_vm.t("settings", "Email")))]
-          ),
-          _vm._v(" "),
-          _c("div", { staticClass: "groups", attrs: { id: "headerGroups" } }, [
-            _vm._v(_vm._s(_vm.t("settings", "Groups")))
-          ]),
-          _vm._v(" "),
-          _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin
-            ? _c(
-                "div",
-                { staticClass: "subadmins", attrs: { id: "headerSubAdmins" } },
-                [_vm._v(_vm._s(_vm.t("settings", "Group admin for")))]
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          _c("div", { staticClass: "quota", attrs: { id: "headerQuota" } }, [
-            _vm._v(_vm._s(_vm.t("settings", "Quota")))
-          ]),
-          _vm._v(" "),
-          _vm.showConfig.showLanguages
-            ? _c(
-                "div",
-                { staticClass: "languages", attrs: { id: "headerLanguages" } },
-                [_vm._v(_vm._s(_vm.t("settings", "Language")))]
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.showConfig.showStoragePath
-            ? _c(
-                "div",
-                { staticClass: "headerStorageLocation storageLocation" },
-                [_vm._v(_vm._s(_vm.t("settings", "Storage location")))]
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.showConfig.showUserBackend
-            ? _c("div", { staticClass: "headerUserBackend userBackend" }, [
-                _vm._v(_vm._s(_vm.t("settings", "User backend")))
-              ])
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.showConfig.showLastLogin
-            ? _c("div", { staticClass: "headerLastLogin lastLogin" }, [
-                _vm._v(_vm._s(_vm.t("settings", "Last login")))
-              ])
-            : _vm._e(),
-          _vm._v(" "),
-          _c("div", { staticClass: "userActions" })
-        ]
-      ),
-      _vm._v(" "),
-      _c(
-        "form",
-        {
-          directives: [
-            {
-              name: "show",
-              rawName: "v-show",
-              value: _vm.showConfig.showNewUserForm,
-              expression: "showConfig.showNewUserForm"
-            }
-          ],
-          staticClass: "row",
-          class: { sticky: _vm.scrolled && _vm.showConfig.showNewUserForm },
-          attrs: { id: "new-user", disabled: _vm.loading.all },
-          on: {
-            submit: function($event) {
-              $event.preventDefault()
-              return _vm.createUser($event)
-            }
-          }
-        },
-        [
-          _c("div", {
-            class: _vm.loading.all ? "icon-loading-small" : "icon-add"
-          }),
-          _vm._v(" "),
-          _c("div", { staticClass: "name" }, [
-            _c("input", {
-              directives: [
-                {
-                  name: "model",
-                  rawName: "v-model",
-                  value: _vm.newUser.id,
-                  expression: "newUser.id"
-                }
-              ],
-              ref: "newusername",
-              attrs: {
-                id: "newusername",
-                type: "text",
-                required: "",
-                placeholder: _vm.t("settings", "Username"),
-                name: "username",
-                autocomplete: "off",
-                autocapitalize: "none",
-                autocorrect: "off",
-                pattern: "[a-zA-Z0-9 _\\.@\\-']+"
-              },
-              domProps: { value: _vm.newUser.id },
-              on: {
-                input: function($event) {
-                  if ($event.target.composing) {
-                    return
-                  }
-                  _vm.$set(_vm.newUser, "id", $event.target.value)
-                }
-              }
-            })
-          ]),
-          _vm._v(" "),
-          _c("div", { staticClass: "displayName" }, [
-            _c("input", {
-              directives: [
-                {
-                  name: "model",
-                  rawName: "v-model",
-                  value: _vm.newUser.displayName,
-                  expression: "newUser.displayName"
-                }
-              ],
-              attrs: {
-                id: "newdisplayname",
-                type: "text",
-                placeholder: _vm.t("settings", "Display name"),
-                name: "displayname",
-                autocomplete: "off",
-                autocapitalize: "none",
-                autocorrect: "off"
-              },
-              domProps: { value: _vm.newUser.displayName },
-              on: {
-                input: function($event) {
-                  if ($event.target.composing) {
-                    return
-                  }
-                  _vm.$set(_vm.newUser, "displayName", $event.target.value)
-                }
-              }
-            })
-          ]),
-          _vm._v(" "),
-          _c("div", { staticClass: "password" }, [
-            _c("input", {
-              directives: [
-                {
-                  name: "model",
-                  rawName: "v-model",
-                  value: _vm.newUser.password,
-                  expression: "newUser.password"
-                }
-              ],
-              ref: "newuserpassword",
-              attrs: {
-                id: "newuserpassword",
-                type: "password",
-                required: _vm.newUser.mailAddress === "",
-                placeholder: _vm.t("settings", "Password"),
-                name: "password",
-                autocomplete: "new-password",
-                autocapitalize: "none",
-                autocorrect: "off",
-                minlength: _vm.minPasswordLength
-              },
-              domProps: { value: _vm.newUser.password },
-              on: {
-                input: function($event) {
-                  if ($event.target.composing) {
-                    return
-                  }
-                  _vm.$set(_vm.newUser, "password", $event.target.value)
-                }
-              }
-            })
-          ]),
-          _vm._v(" "),
-          _c("div", { staticClass: "mailAddress" }, [
-            _c("input", {
-              directives: [
-                {
-                  name: "model",
-                  rawName: "v-model",
-                  value: _vm.newUser.mailAddress,
-                  expression: "newUser.mailAddress"
-                }
-              ],
-              attrs: {
-                id: "newemail",
-                type: "email",
-                required: _vm.newUser.password === "",
-                placeholder: _vm.t("settings", "Email"),
-                name: "email",
-                autocomplete: "off",
-                autocapitalize: "none",
-                autocorrect: "off"
-              },
-              domProps: { value: _vm.newUser.mailAddress },
-              on: {
-                input: function($event) {
-                  if ($event.target.composing) {
-                    return
-                  }
-                  _vm.$set(_vm.newUser, "mailAddress", $event.target.value)
-                }
-              }
-            })
-          ]),
-          _vm._v(" "),
-          _c(
-            "div",
-            { staticClass: "groups" },
-            [
-              !_vm.settings.isAdmin
-                ? _c("input", {
-                    class: { "icon-loading-small": _vm.loading.groups },
-                    attrs: {
-                      type: "text",
-                      tabindex: "-1",
-                      id: "newgroups",
-                      required: !_vm.settings.isAdmin
-                    },
-                    domProps: { value: _vm.newUser.groups }
-                  })
-                : _vm._e(),
-              _vm._v(" "),
-              _c(
-                "multiselect",
-                {
-                  staticClass: "multiselect-vue",
-                  attrs: {
-                    options: _vm.canAddGroups,
-                    disabled: _vm.loading.groups || _vm.loading.all,
-                    "tag-placeholder": "create",
-                    placeholder: _vm.t("settings", "Add user in group"),
-                    label: "name",
-                    "track-by": "id",
-                    multiple: true,
-                    taggable: true,
-                    "close-on-select": false,
-                    "tag-width": 60
-                  },
-                  on: { tag: _vm.createGroup },
-                  model: {
-                    value: _vm.newUser.groups,
-                    callback: function($$v) {
-                      _vm.$set(_vm.newUser, "groups", $$v)
-                    },
-                    expression: "newUser.groups"
-                  }
-                },
-                [
-                  _c(
-                    "span",
-                    { attrs: { slot: "noResult" }, slot: "noResult" },
-                    [_vm._v(_vm._s(_vm.t("settings", "No results")))]
-                  )
-                ]
-              )
-            ],
-            1
-          ),
-          _vm._v(" "),
-          _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin
-            ? _c(
-                "div",
-                { staticClass: "subadmins" },
-                [
-                  _c(
-                    "multiselect",
-                    {
-                      staticClass: "multiselect-vue",
-                      attrs: {
-                        options: _vm.subAdminsGroups,
-                        placeholder: _vm.t("settings", "Set user as admin for"),
-                        label: "name",
-                        "track-by": "id",
-                        multiple: true,
-                        "close-on-select": false,
-                        "tag-width": 60
-                      },
-                      model: {
-                        value: _vm.newUser.subAdminsGroups,
-                        callback: function($$v) {
-                          _vm.$set(_vm.newUser, "subAdminsGroups", $$v)
-                        },
-                        expression: "newUser.subAdminsGroups"
-                      }
-                    },
-                    [
-                      _c(
-                        "span",
-                        { attrs: { slot: "noResult" }, slot: "noResult" },
-                        [_vm._v(_vm._s(_vm.t("settings", "No results")))]
-                      )
-                    ]
-                  )
-                ],
-                1
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          _c(
-            "div",
-            { staticClass: "quota" },
-            [
-              _c("multiselect", {
-                staticClass: "multiselect-vue",
-                attrs: {
-                  options: _vm.quotaOptions,
-                  placeholder: _vm.t("settings", "Select user quota"),
-                  label: "label",
-                  "track-by": "id",
-                  allowEmpty: false,
-                  taggable: true
-                },
-                on: { tag: _vm.validateQuota },
-                model: {
-                  value: _vm.newUser.quota,
-                  callback: function($$v) {
-                    _vm.$set(_vm.newUser, "quota", $$v)
-                  },
-                  expression: "newUser.quota"
-                }
-              })
-            ],
-            1
-          ),
-          _vm._v(" "),
-          _vm.showConfig.showLanguages
-            ? _c(
-                "div",
-                { staticClass: "languages" },
-                [
-                  _c("multiselect", {
-                    staticClass: "multiselect-vue",
-                    attrs: {
-                      options: _vm.languages,
-                      placeholder: _vm.t("settings", "Default language"),
-                      label: "name",
-                      "track-by": "code",
-                      allowEmpty: false,
-                      "group-values": "languages",
-                      "group-label": "label"
-                    },
-                    model: {
-                      value: _vm.newUser.language,
-                      callback: function($$v) {
-                        _vm.$set(_vm.newUser, "language", $$v)
-                      },
-                      expression: "newUser.language"
-                    }
-                  })
-                ],
-                1
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.showConfig.showStoragePath
-            ? _c("div", { staticClass: "storageLocation" })
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.showConfig.showUserBackend
-            ? _c("div", { staticClass: "userBackend" })
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.showConfig.showLastLogin
-            ? _c("div", { staticClass: "lastLogin" })
-            : _vm._e(),
-          _vm._v(" "),
-          _c("div", { staticClass: "userActions" }, [
-            _c("input", {
-              staticClass: "button primary icon-checkmark-white has-tooltip",
-              attrs: {
-                type: "submit",
-                id: "newsubmit",
-                value: "",
-                title: _vm.t("settings", "Add a new user")
-              }
-            })
-          ])
-        ]
-      ),
-      _vm._v(" "),
-      _vm._l(_vm.filteredUsers, function(user, key) {
-        return _c("user-row", {
-          key: key,
-          attrs: {
-            user: user,
-            settings: _vm.settings,
-            showConfig: _vm.showConfig,
-            groups: _vm.groups,
-            subAdminsGroups: _vm.subAdminsGroups,
-            quotaOptions: _vm.quotaOptions,
-            languages: _vm.languages,
-            externalActions: _vm.externalActions
-          }
-        })
-      }),
-      _vm._v(" "),
-      _c(
-        "infinite-loading",
-        { ref: "infiniteLoading", on: { infinite: _vm.infiniteHandler } },
-        [
-          _c("div", { attrs: { slot: "spinner" }, slot: "spinner" }, [
-            _c("div", { staticClass: "users-icon-loading icon-loading" })
-          ]),
-          _vm._v(" "),
-          _c("div", { attrs: { slot: "no-more" }, slot: "no-more" }, [
-            _c("div", { staticClass: "users-list-end" })
-          ]),
-          _vm._v(" "),
-          _c("div", { attrs: { slot: "no-results" }, slot: "no-results" }, [
-            _c("div", { attrs: { id: "emptycontent" } }, [
-              _c("div", { staticClass: "icon-contacts-dark" }),
-              _vm._v(" "),
-              _c("h2", [_vm._v(_vm._s(_vm.t("settings", "No users in here")))])
-            ])
-          ])
-        ]
-      )
-    ],
-    2
-  )
-}
-var staticRenderFns = []
-render._withStripped = true
-
-
-
-/***/ }),
-
-/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/userList/userRow.vue?vue&type=template&id=5a5e6f59&":
-/*!*******************************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/components/userList/userRow.vue?vue&type=template&id=5a5e6f59& ***!
-  \*******************************************************************************************************************************************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
-var render = function() {
-  var _vm = this
-  var _h = _vm.$createElement
-  var _c = _vm._self._c || _h
-  return Object.keys(_vm.user).length === 1
-    ? _c("div", { staticClass: "row", attrs: { "data-id": _vm.user.id } }, [
-        _c(
-          "div",
-          {
-            staticClass: "avatar",
-            class: {
-              "icon-loading-small": _vm.loading.delete || _vm.loading.disable
-            }
-          },
-          [
-            !_vm.loading.delete && !_vm.loading.disable
-              ? _c("img", {
-                  attrs: {
-                    alt: "",
-                    width: "32",
-                    height: "32",
-                    src: _vm.generateAvatar(_vm.user.id, 32),
-                    srcset:
-                      _vm.generateAvatar(_vm.user.id, 64) +
-                      " 2x, " +
-                      _vm.generateAvatar(_vm.user.id, 128) +
-                      " 4x"
-                  }
-                })
-              : _vm._e()
-          ]
-        ),
-        _vm._v(" "),
-        _c("div", { staticClass: "name" }, [_vm._v(_vm._s(_vm.user.id))]),
-        _vm._v(" "),
-        _c("div", { staticClass: "obfuscated" }, [
-          _vm._v(
-            _vm._s(
-              _vm.t(
-                "settings",
-                "You do not have permissions to see the details of this user"
-              )
-            )
-          )
-        ])
-      ])
-    : _c(
-        "div",
-        {
-          staticClass: "row",
-          class: { disabled: _vm.loading.delete || _vm.loading.disable },
-          attrs: { "data-id": _vm.user.id }
-        },
-        [
-          _c(
-            "div",
-            {
-              staticClass: "avatar",
-              class: {
-                "icon-loading-small": _vm.loading.delete || _vm.loading.disable
-              }
-            },
-            [
-              !_vm.loading.delete && !_vm.loading.disable
-                ? _c("img", {
-                    attrs: {
-                      alt: "",
-                      width: "32",
-                      height: "32",
-                      src: _vm.generateAvatar(_vm.user.id, 32),
-                      srcset:
-                        _vm.generateAvatar(_vm.user.id, 64) +
-                        " 2x, " +
-                        _vm.generateAvatar(_vm.user.id, 128) +
-                        " 4x"
-                    }
-                  })
-                : _vm._e()
-            ]
-          ),
-          _vm._v(" "),
-          _c("div", { staticClass: "name" }, [_vm._v(_vm._s(_vm.user.id))]),
-          _vm._v(" "),
-          _c(
-            "form",
-            {
-              staticClass: "displayName",
-              class: { "icon-loading-small": _vm.loading.displayName },
-              on: {
-                submit: function($event) {
-                  $event.preventDefault()
-                  return _vm.updateDisplayName($event)
-                }
-              }
-            },
-            [
-              _vm.user.backendCapabilities.setDisplayName
-                ? [
-                    _vm.user.backendCapabilities.setDisplayName
-                      ? _c("input", {
-                          ref: "displayName",
-                          attrs: {
-                            id: "displayName" + _vm.user.id + _vm.rand,
-                            type: "text",
-                            disabled:
-                              _vm.loading.displayName || _vm.loading.all,
-                            autocomplete: "new-password",
-                            autocorrect: "off",
-                            autocapitalize: "off",
-                            spellcheck: "false"
-                          },
-                          domProps: { value: _vm.user.displayname }
-                        })
-                      : _vm._e(),
-                    _vm._v(" "),
-                    _vm.user.backendCapabilities.setDisplayName
-                      ? _c("input", {
-                          staticClass: "icon-confirm",
-                          attrs: { type: "submit", value: "" }
-                        })
-                      : _vm._e()
-                  ]
-                : _c(
-                    "div",
-                    {
-                      directives: [
-                        {
-                          name: "tooltip",
-                          rawName: "v-tooltip.auto",
-                          value: _vm.t(
-                            "settings",
-                            "The backend does not support changing the display name"
-                          ),
-                          expression:
-                            "t('settings', 'The backend does not support changing the display name')",
-                          modifiers: { auto: true }
-                        }
-                      ],
-                      staticClass: "name"
-                    },
-                    [_vm._v(_vm._s(_vm.user.displayname))]
-                  )
-            ],
-            2
-          ),
-          _vm._v(" "),
-          _vm.settings.canChangePassword &&
-          _vm.user.backendCapabilities.setPassword
-            ? _c(
-                "form",
-                {
-                  staticClass: "password",
-                  class: { "icon-loading-small": _vm.loading.password },
-                  on: {
-                    submit: function($event) {
-                      $event.preventDefault()
-                      return _vm.updatePassword($event)
-                    }
-                  }
-                },
-                [
-                  _c("input", {
-                    ref: "password",
-                    attrs: {
-                      id: "password" + _vm.user.id + _vm.rand,
-                      type: "password",
-                      required: "",
-                      disabled: _vm.loading.password || _vm.loading.all,
-                      minlength: _vm.minPasswordLength,
-                      value: "",
-                      placeholder: _vm.t("settings", "New password"),
-                      autocomplete: "new-password",
-                      autocorrect: "off",
-                      autocapitalize: "off",
-                      spellcheck: "false"
-                    }
-                  }),
-                  _vm._v(" "),
-                  _c("input", {
-                    staticClass: "icon-confirm",
-                    attrs: { type: "submit", value: "" }
-                  })
-                ]
-              )
-            : _c("div"),
-          _vm._v(" "),
-          _c(
-            "form",
-            {
-              staticClass: "mailAddress",
-              class: { "icon-loading-small": _vm.loading.mailAddress },
-              on: {
-                submit: function($event) {
-                  $event.preventDefault()
-                  return _vm.updateEmail($event)
-                }
-              }
-            },
-            [
-              _c("input", {
-                ref: "mailAddress",
-                attrs: {
-                  id: "mailAddress" + _vm.user.id + _vm.rand,
-                  type: "email",
-                  disabled: _vm.loading.mailAddress || _vm.loading.all,
-                  autocomplete: "new-password",
-                  autocorrect: "off",
-                  autocapitalize: "off",
-                  spellcheck: "false"
-                },
-                domProps: { value: _vm.user.email }
-              }),
-              _vm._v(" "),
-              _c("input", {
-                staticClass: "icon-confirm",
-                attrs: { type: "submit", value: "" }
-              })
-            ]
-          ),
-          _vm._v(" "),
-          _c(
-            "div",
-            {
-              staticClass: "groups",
-              class: { "icon-loading-small": _vm.loading.groups }
-            },
-            [
-              _c(
-                "multiselect",
-                {
-                  staticClass: "multiselect-vue",
-                  attrs: {
-                    value: _vm.userGroups,
-                    options: _vm.availableGroups,
-                    disabled: _vm.loading.groups || _vm.loading.all,
-                    "tag-placeholder": "create",
-                    placeholder: _vm.t("settings", "Add user in group"),
-                    label: "name",
-                    "track-by": "id",
-                    limit: 2,
-                    multiple: true,
-                    taggable: _vm.settings.isAdmin,
-                    closeOnSelect: false,
-                    "tag-width": 60
-                  },
-                  on: {
-                    tag: _vm.createGroup,
-                    select: _vm.addUserGroup,
-                    remove: _vm.removeUserGroup
-                  }
-                },
-                [
-                  _c(
-                    "span",
-                    {
-                      directives: [
-                        {
-                          name: "tooltip",
-                          rawName: "v-tooltip.auto",
-                          value: _vm.formatGroupsTitle(_vm.userGroups),
-                          expression: "formatGroupsTitle(userGroups)",
-                          modifiers: { auto: true }
-                        }
-                      ],
-                      staticClass: "multiselect__limit",
-                      attrs: { slot: "limit" },
-                      slot: "limit"
-                    },
-                    [_vm._v("+" + _vm._s(_vm.userGroups.length - 2))]
-                  ),
-                  _vm._v(" "),
-                  _c(
-                    "span",
-                    { attrs: { slot: "noResult" }, slot: "noResult" },
-                    [_vm._v(_vm._s(_vm.t("settings", "No results")))]
-                  )
-                ]
-              )
-            ],
-            1
-          ),
-          _vm._v(" "),
-          _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin
-            ? _c(
-                "div",
-                {
-                  staticClass: "subadmins",
-                  class: { "icon-loading-small": _vm.loading.subadmins }
-                },
-                [
-                  _c(
-                    "multiselect",
-                    {
-                      staticClass: "multiselect-vue",
-                      attrs: {
-                        value: _vm.userSubAdminsGroups,
-                        options: _vm.subAdminsGroups,
-                        disabled: _vm.loading.subadmins || _vm.loading.all,
-                        placeholder: _vm.t("settings", "Set user as admin for"),
-                        label: "name",
-                        "track-by": "id",
-                        limit: 2,
-                        multiple: true,
-                        closeOnSelect: false,
-                        "tag-width": 60
-                      },
-                      on: {
-                        select: _vm.addUserSubAdmin,
-                        remove: _vm.removeUserSubAdmin
-                      }
-                    },
-                    [
-                      _c(
-                        "span",
-                        {
-                          directives: [
-                            {
-                              name: "tooltip",
-                              rawName: "v-tooltip.auto",
-                              value: _vm.formatGroupsTitle(
-                                _vm.userSubAdminsGroups
-                              ),
-                              expression:
-                                "formatGroupsTitle(userSubAdminsGroups)",
-                              modifiers: { auto: true }
-                            }
-                          ],
-                          staticClass: "multiselect__limit",
-                          attrs: { slot: "limit" },
-                          slot: "limit"
-                        },
-                        [
-                          _vm._v(
-                            "+" + _vm._s(_vm.userSubAdminsGroups.length - 2)
-                          )
-                        ]
-                      ),
-                      _vm._v(" "),
-                      _c(
-                        "span",
-                        { attrs: { slot: "noResult" }, slot: "noResult" },
-                        [_vm._v(_vm._s(_vm.t("settings", "No results")))]
-                      )
-                    ]
-                  )
-                ],
-                1
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          _c(
-            "div",
-            {
-              directives: [
-                {
-                  name: "tooltip",
-                  rawName: "v-tooltip.auto",
-                  value: _vm.usedSpace,
-                  expression: "usedSpace",
-                  modifiers: { auto: true }
-                }
-              ],
-              staticClass: "quota",
-              class: { "icon-loading-small": _vm.loading.quota }
-            },
-            [
-              _c("multiselect", {
-                staticClass: "multiselect-vue",
-                attrs: {
-                  value: _vm.userQuota,
-                  options: _vm.quotaOptions,
-                  disabled: _vm.loading.quota || _vm.loading.all,
-                  "tag-placeholder": "create",
-                  placeholder: _vm.t("settings", "Select user quota"),
-                  label: "label",
-                  "track-by": "id",
-                  allowEmpty: false,
-                  taggable: true
-                },
-                on: { tag: _vm.validateQuota, input: _vm.setUserQuota }
-              }),
-              _vm._v(" "),
-              _c("progress", {
-                staticClass: "quota-user-progress",
-                class: { warn: _vm.usedQuota > 80 },
-                attrs: { max: "100" },
-                domProps: { value: _vm.usedQuota }
-              })
-            ],
-            1
-          ),
-          _vm._v(" "),
-          _vm.showConfig.showLanguages
-            ? _c(
-                "div",
-                {
-                  staticClass: "languages",
-                  class: { "icon-loading-small": _vm.loading.languages }
-                },
-                [
-                  _c("multiselect", {
-                    staticClass: "multiselect-vue",
-                    attrs: {
-                      value: _vm.userLanguage,
-                      options: _vm.languages,
-                      disabled: _vm.loading.languages || _vm.loading.all,
-                      placeholder: _vm.t("settings", "No language set"),
-                      label: "name",
-                      "track-by": "code",
-                      allowEmpty: false,
-                      "group-values": "languages",
-                      "group-label": "label"
-                    },
-                    on: { input: _vm.setUserLanguage }
-                  })
-                ],
-                1
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.showConfig.showStoragePath
-            ? _c("div", { staticClass: "storageLocation" }, [
-                _vm._v(_vm._s(_vm.user.storageLocation))
-              ])
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.showConfig.showUserBackend
-            ? _c("div", { staticClass: "userBackend" }, [
-                _vm._v(_vm._s(_vm.user.backend))
-              ])
-            : _vm._e(),
-          _vm._v(" "),
-          _vm.showConfig.showLastLogin
-            ? _c(
-                "div",
-                {
-                  directives: [
-                    {
-                      name: "tooltip",
-                      rawName: "v-tooltip.auto",
-                      value:
-                        _vm.user.lastLogin > 0
-                          ? _vm.OC.Util.formatDate(_vm.user.lastLogin)
-                          : "",
-                      expression:
-                        "user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''",
-                      modifiers: { auto: true }
-                    }
-                  ],
-                  staticClass: "lastLogin"
-                },
-                [
-                  _vm._v(
-                    "\n\t\t" +
-                      _vm._s(
-                        _vm.user.lastLogin > 0
-                          ? _vm.OC.Util.relativeModifiedDate(_vm.user.lastLogin)
-                          : _vm.t("settings", "Never")
-                      ) +
-                      "\n\t"
-                  )
-                ]
-              )
-            : _vm._e(),
-          _vm._v(" "),
-          _c("div", { staticClass: "userActions" }, [
-            _vm.OC.currentUser !== _vm.user.id &&
-            _vm.user.id !== "admin" &&
-            !_vm.loading.all
-              ? _c("div", { staticClass: "toggleUserActions" }, [
-                  _c("div", {
-                    directives: [
-                      {
-                        name: "click-outside",
-                        rawName: "v-click-outside",
-                        value: _vm.hideMenu,
-                        expression: "hideMenu"
-                      }
-                    ],
-                    staticClass: "icon-more",
-                    on: { click: _vm.toggleMenu }
-                  }),
-                  _vm._v(" "),
-                  _c(
-                    "div",
-                    {
-                      staticClass: "popovermenu",
-                      class: { open: _vm.openedMenu }
-                    },
-                    [_c("popover-menu", { attrs: { menu: _vm.userActions } })],
-                    1
-                  )
-                ])
-              : _vm._e(),
-            _vm._v(" "),
-            _c(
-              "div",
-              {
-                staticClass: "feedback",
-                style: { opacity: _vm.feedbackMessage !== "" ? 1 : 0 }
-              },
-              [
-                _c("div", { staticClass: "icon-checkmark" }),
-                _vm._v("\n\t\t\t" + _vm._s(_vm.feedbackMessage) + "\n\t\t")
-              ]
-            )
-          ])
-        ]
-      )
-}
-var staticRenderFns = []
-render._withStripped = true
-
-
-
-/***/ }),
-
-/***/ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/views/Users.vue?vue&type=template&id=1c24c2fe&":
-/*!***************************************************************************************************************************************************************************************************!*\
-  !*** ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./settings/src/views/Users.vue?vue&type=template&id=1c24c2fe& ***!
-  \***************************************************************************************************************************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
-var render = function() {
-  var _vm = this
-  var _h = _vm.$createElement
-  var _c = _vm._self._c || _h
-  return _c(
-    "AppContent",
-    {
-      attrs: {
-        "app-name": "settings",
-        "navigation-class": { "icon-loading": _vm.loadingAddGroup }
-      },
-      scopedSlots: _vm._u([
-        {
-          key: "navigation",
-          fn: function() {
-            return [
-              _c("AppNavigationNew", {
-                attrs: {
-                  "button-id": "new-user-button",
-                  text: _vm.t("settings", "New user"),
-                  "button-class": "icon-add"
-                },
-                on: { click: _vm.toggleNewUserMenu }
-              }),
-              _vm._v(" "),
-              _c(
-                "ul",
-                { attrs: { id: "usergrouplist" } },
-                _vm._l(_vm.menu, function(item) {
-                  return _c("AppNavigationItem", {
-                    key: item.key,
-                    attrs: { item: item }
-                  })
-                }),
-                1
-              ),
-              _vm._v(" "),
-              _c("AppNavigationSettings", [
-                _c(
-                  "div",
-                  [
-                    _c("p", [
-                      _vm._v(_vm._s(_vm.t("settings", "Default quota:")))
-                    ]),
-                    _vm._v(" "),
-                    _c("multiselect", {
-                      staticClass: "multiselect-vue",
-                      attrs: {
-                        value: _vm.defaultQuota,
-                        options: _vm.quotaOptions,
-                        "tag-placeholder": "create",
-                        placeholder: _vm.t("settings", "Select default quota"),
-                        label: "label",
-                        "track-by": "id",
-                        allowEmpty: false,
-                        taggable: true
-                      },
-                      on: { tag: _vm.validateQuota, input: _vm.setDefaultQuota }
-                    })
-                  ],
-                  1
-                ),
-                _vm._v(" "),
-                _c("div", [
-                  _c("input", {
-                    directives: [
-                      {
-                        name: "model",
-                        rawName: "v-model",
-                        value: _vm.showLanguages,
-                        expression: "showLanguages"
-                      }
-                    ],
-                    staticClass: "checkbox",
-                    attrs: { type: "checkbox", id: "showLanguages" },
-                    domProps: {
-                      checked: Array.isArray(_vm.showLanguages)
-                        ? _vm._i(_vm.showLanguages, null) > -1
-                        : _vm.showLanguages
-                    },
-                    on: {
-                      change: function($event) {
-                        var $$a = _vm.showLanguages,
-                          $$el = $event.target,
-                          $$c = $$el.checked ? true : false
-                        if (Array.isArray($$a)) {
-                          var $$v = null,
-                            $$i = _vm._i($$a, $$v)
-                          if ($$el.checked) {
-                            $$i < 0 && (_vm.showLanguages = $$a.concat([$$v]))
-                          } else {
-                            $$i > -1 &&
-                              (_vm.showLanguages = $$a
-                                .slice(0, $$i)
-                                .concat($$a.slice($$i + 1)))
-                          }
-                        } else {
-                          _vm.showLanguages = $$c
-                        }
-                      }
-                    }
-                  }),
-                  _vm._v(" "),
-                  _c("label", { attrs: { for: "showLanguages" } }, [
-                    _vm._v(_vm._s(_vm.t("settings", "Show Languages")))
-                  ])
-                ]),
-                _vm._v(" "),
-                _c("div", [
-                  _c("input", {
-                    directives: [
-                      {
-                        name: "model",
-                        rawName: "v-model",
-                        value: _vm.showLastLogin,
-                        expression: "showLastLogin"
-                      }
-                    ],
-                    staticClass: "checkbox",
-                    attrs: { type: "checkbox", id: "showLastLogin" },
-                    domProps: {
-                      checked: Array.isArray(_vm.showLastLogin)
-                        ? _vm._i(_vm.showLastLogin, null) > -1
-                        : _vm.showLastLogin
-                    },
-                    on: {
-                      change: function($event) {
-                        var $$a = _vm.showLastLogin,
-                          $$el = $event.target,
-                          $$c = $$el.checked ? true : false
-                        if (Array.isArray($$a)) {
-                          var $$v = null,
-                            $$i = _vm._i($$a, $$v)
-                          if ($$el.checked) {
-                            $$i < 0 && (_vm.showLastLogin = $$a.concat([$$v]))
-                          } else {
-                            $$i > -1 &&
-                              (_vm.showLastLogin = $$a
-                                .slice(0, $$i)
-                                .concat($$a.slice($$i + 1)))
-                          }
-                        } else {
-                          _vm.showLastLogin = $$c
-                        }
-                      }
-                    }
-                  }),
-                  _vm._v(" "),
-                  _c("label", { attrs: { for: "showLastLogin" } }, [
-                    _vm._v(_vm._s(_vm.t("settings", "Show last login")))
-                  ])
-                ]),
-                _vm._v(" "),
-                _c("div", [
-                  _c("input", {
-                    directives: [
-                      {
-                        name: "model",
-                        rawName: "v-model",
-                        value: _vm.showUserBackend,
-                        expression: "showUserBackend"
-                      }
-                    ],
-                    staticClass: "checkbox",
-                    attrs: { type: "checkbox", id: "showUserBackend" },
-                    domProps: {
-                      checked: Array.isArray(_vm.showUserBackend)
-                        ? _vm._i(_vm.showUserBackend, null) > -1
-                        : _vm.showUserBackend
-                    },
-                    on: {
-                      change: function($event) {
-                        var $$a = _vm.showUserBackend,
-                          $$el = $event.target,
-                          $$c = $$el.checked ? true : false
-                        if (Array.isArray($$a)) {
-                          var $$v = null,
-                            $$i = _vm._i($$a, $$v)
-                          if ($$el.checked) {
-                            $$i < 0 && (_vm.showUserBackend = $$a.concat([$$v]))
-                          } else {
-                            $$i > -1 &&
-                              (_vm.showUserBackend = $$a
-                                .slice(0, $$i)
-                                .concat($$a.slice($$i + 1)))
-                          }
-                        } else {
-                          _vm.showUserBackend = $$c
-                        }
-                      }
-                    }
-                  }),
-                  _vm._v(" "),
-                  _c("label", { attrs: { for: "showUserBackend" } }, [
-                    _vm._v(_vm._s(_vm.t("settings", "Show user backend")))
-                  ])
-                ]),
-                _vm._v(" "),
-                _c("div", [
-                  _c("input", {
-                    directives: [
-                      {
-                        name: "model",
-                        rawName: "v-model",
-                        value: _vm.showStoragePath,
-                        expression: "showStoragePath"
-                      }
-                    ],
-                    staticClass: "checkbox",
-                    attrs: { type: "checkbox", id: "showStoragePath" },
-                    domProps: {
-                      checked: Array.isArray(_vm.showStoragePath)
-                        ? _vm._i(_vm.showStoragePath, null) > -1
-                        : _vm.showStoragePath
-                    },
-                    on: {
-                      change: function($event) {
-                        var $$a = _vm.showStoragePath,
-                          $$el = $event.target,
-                          $$c = $$el.checked ? true : false
-                        if (Array.isArray($$a)) {
-                          var $$v = null,
-                            $$i = _vm._i($$a, $$v)
-                          if ($$el.checked) {
-                            $$i < 0 && (_vm.showStoragePath = $$a.concat([$$v]))
-                          } else {
-                            $$i > -1 &&
-                              (_vm.showStoragePath = $$a
-                                .slice(0, $$i)
-                                .concat($$a.slice($$i + 1)))
-                          }
-                        } else {
-                          _vm.showStoragePath = $$c
-                        }
-                      }
-                    }
-                  }),
-                  _vm._v(" "),
-                  _c("label", { attrs: { for: "showStoragePath" } }, [
-                    _vm._v(_vm._s(_vm.t("settings", "Show storage path")))
-                  ])
-                ])
-              ])
-            ]
-          },
-          proxy: true
-        }
-      ])
-    },
-    [
-      _vm._v(" "),
-      _c("user-list", {
-        attrs: {
-          users: _vm.users,
-          showConfig: _vm.showConfig,
-          selectedGroup: _vm.selectedGroup,
-          externalActions: _vm.externalActions
-        },
-        scopedSlots: _vm._u([
-          {
-            key: "content",
-            fn: function() {
-              return undefined
-            },
-            proxy: true
-          }
-        ])
-      })
-    ],
-    1
-  )
-}
-var staticRenderFns = []
-render._withStripped = true
-
-
-
-/***/ }),
-
-/***/ "./settings/src/components/userList.vue":
-/*!**********************************************!*\
-  !*** ./settings/src/components/userList.vue ***!
-  \**********************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _userList_vue_vue_type_template_id_1347754e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userList.vue?vue&type=template&id=1347754e& */ "./settings/src/components/userList.vue?vue&type=template&id=1347754e&");
-/* harmony import */ var _userList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userList.vue?vue&type=script&lang=js& */ "./settings/src/components/userList.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
-  _userList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
-  _userList_vue_vue_type_template_id_1347754e___WEBPACK_IMPORTED_MODULE_0__["render"],
-  _userList_vue_vue_type_template_id_1347754e___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
-  false,
-  null,
-  null,
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/components/userList.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/components/userList.vue?vue&type=script&lang=js&":
-/*!***********************************************************************!*\
-  !*** ./settings/src/components/userList.vue?vue&type=script&lang=js& ***!
-  \***********************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_userList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./userList.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/userList.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_userList_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/components/userList.vue?vue&type=template&id=1347754e&":
-/*!*****************************************************************************!*\
-  !*** ./settings/src/components/userList.vue?vue&type=template&id=1347754e& ***!
-  \*****************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userList_vue_vue_type_template_id_1347754e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./userList.vue?vue&type=template&id=1347754e& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/userList.vue?vue&type=template&id=1347754e&");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userList_vue_vue_type_template_id_1347754e___WEBPACK_IMPORTED_MODULE_0__["render"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userList_vue_vue_type_template_id_1347754e___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
-
-
-
-/***/ }),
-
-/***/ "./settings/src/components/userList/userRow.vue":
-/*!******************************************************!*\
-  !*** ./settings/src/components/userList/userRow.vue ***!
-  \******************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _userRow_vue_vue_type_template_id_5a5e6f59___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userRow.vue?vue&type=template&id=5a5e6f59& */ "./settings/src/components/userList/userRow.vue?vue&type=template&id=5a5e6f59&");
-/* harmony import */ var _userRow_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userRow.vue?vue&type=script&lang=js& */ "./settings/src/components/userList/userRow.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
-  _userRow_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
-  _userRow_vue_vue_type_template_id_5a5e6f59___WEBPACK_IMPORTED_MODULE_0__["render"],
-  _userRow_vue_vue_type_template_id_5a5e6f59___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
-  false,
-  null,
-  null,
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/components/userList/userRow.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/components/userList/userRow.vue?vue&type=script&lang=js&":
-/*!*******************************************************************************!*\
-  !*** ./settings/src/components/userList/userRow.vue?vue&type=script&lang=js& ***!
-  \*******************************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_userRow_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/babel-loader/lib!../../../../node_modules/vue-loader/lib??vue-loader-options!./userRow.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/components/userList/userRow.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_userRow_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/components/userList/userRow.vue?vue&type=template&id=5a5e6f59&":
-/*!*************************************************************************************!*\
-  !*** ./settings/src/components/userList/userRow.vue?vue&type=template&id=5a5e6f59& ***!
-  \*************************************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userRow_vue_vue_type_template_id_5a5e6f59___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib??vue-loader-options!./userRow.vue?vue&type=template&id=5a5e6f59& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/components/userList/userRow.vue?vue&type=template&id=5a5e6f59&");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userRow_vue_vue_type_template_id_5a5e6f59___WEBPACK_IMPORTED_MODULE_0__["render"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_userRow_vue_vue_type_template_id_5a5e6f59___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
-
-
-
-/***/ }),
-
-/***/ "./settings/src/views/Users.vue":
-/*!**************************************!*\
-  !*** ./settings/src/views/Users.vue ***!
-  \**************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _Users_vue_vue_type_template_id_1c24c2fe___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Users.vue?vue&type=template&id=1c24c2fe& */ "./settings/src/views/Users.vue?vue&type=template&id=1c24c2fe&");
-/* harmony import */ var _Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Users.vue?vue&type=script&lang=js& */ "./settings/src/views/Users.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport *//* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/vue-loader/lib/runtime/componentNormalizer.js");
-
-
-
-
-
-/* normalize component */
-
-var component = Object(_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(
-  _Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
-  _Users_vue_vue_type_template_id_1c24c2fe___WEBPACK_IMPORTED_MODULE_0__["render"],
-  _Users_vue_vue_type_template_id_1c24c2fe___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
-  false,
-  null,
-  null,
-  null
-  
-)
-
-/* hot reload */
-if (false) { var api; }
-component.options.__file = "settings/src/views/Users.vue"
-/* harmony default export */ __webpack_exports__["default"] = (component.exports);
-
-/***/ }),
-
-/***/ "./settings/src/views/Users.vue?vue&type=script&lang=js&":
-/*!***************************************************************!*\
-  !*** ./settings/src/views/Users.vue?vue&type=script&lang=js& ***!
-  \***************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/babel-loader/lib!../../../node_modules/vue-loader/lib??vue-loader-options!./Users.vue?vue&type=script&lang=js& */ "./node_modules/babel-loader/lib/index.js!./node_modules/vue-loader/lib/index.js?!./settings/src/views/Users.vue?vue&type=script&lang=js&");
-/* empty/unused harmony star reexport */ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_babel_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__["default"]); 
-
-/***/ }),
-
-/***/ "./settings/src/views/Users.vue?vue&type=template&id=1c24c2fe&":
-/*!*********************************************************************!*\
-  !*** ./settings/src/views/Users.vue?vue&type=template&id=1c24c2fe& ***!
-  \*********************************************************************/
-/*! exports provided: render, staticRenderFns */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_template_id_1c24c2fe___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib??vue-loader-options!./Users.vue?vue&type=template&id=1c24c2fe& */ "./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./settings/src/views/Users.vue?vue&type=template&id=1c24c2fe&");
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_template_id_1c24c2fe___WEBPACK_IMPORTED_MODULE_0__["render"]; });
-
-/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_Users_vue_vue_type_template_id_1c24c2fe___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
-
-
-
-/***/ })
-
-}]);
-//# sourceMappingURL=vue-2.js.map
\ No newline at end of file
diff --git a/settings/js/vue-2.js.map b/settings/js/vue-2.js.map
deleted file mode 100644 (file)
index 1c2c9b1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"vue-2.js","sources":["webpack:///./settings/src/components/userList.vue?83cb","webpack:///./settings/src/components/userList/userRow.vue?0888","webpack:///./settings/src/views/Users.vue?e3b9","webpack:///./settings/src/components/userList.vue?881a","webpack:///./settings/src/components/userList/userRow.vue?6f43","webpack:///./settings/src/views/Users.vue?cf6a","webpack:///./settings/src/components/userList.vue","webpack:///./settings/src/components/userList.vue?3703","webpack:///./settings/src/components/userList.vue?6a78","webpack:///./settings/src/components/userList/userRow.vue","webpack:///./settings/src/components/userList/userRow.vue?c225","webpack:///./settings/src/components/userList/userRow.vue?4bfd","webpack:///./settings/src/views/Users.vue","webpack:///./settings/src/views/Users.vue?9466","webpack:///./settings/src/views/Users.vue?356f"],"sourcesContent":["//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport userRow from './userList/userRow';\nimport { Multiselect } from 'nextcloud-vue';\nimport InfiniteLoading from 'vue-infinite-loading';\nimport Vue from 'vue';\nexport default {\n  name: 'userList',\n  props: ['users', 'showConfig', 'selectedGroup', 'externalActions'],\n  components: {\n    userRow: userRow,\n    Multiselect: Multiselect,\n    InfiniteLoading: InfiniteLoading\n  },\n  data: function data() {\n    var unlimitedQuota = {\n      id: 'none',\n      label: t('settings', 'Unlimited')\n    },\n        defaultQuota = {\n      id: 'default',\n      label: t('settings', 'Default quota')\n    };\n    return {\n      unlimitedQuota: unlimitedQuota,\n      defaultQuota: defaultQuota,\n      loading: {\n        all: false,\n        groups: false\n      },\n      scrolled: false,\n      searchQuery: '',\n      newUser: {\n        id: '',\n        displayName: '',\n        password: '',\n        mailAddress: '',\n        groups: [],\n        subAdminsGroups: [],\n        quota: defaultQuota,\n        language: {\n          code: 'en',\n          name: t('settings', 'Default language')\n        }\n      }\n    };\n  },\n  mounted: function mounted() {\n    if (!this.settings.canChangePassword) {\n      OC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));\n    }\n    /** \n     * Init default language from server data. The use of this.settings\n     * requires a computed variable, which break the v-model binding of the form,\n     * this is a much easier solution than getter and setter on a computed var\n     */\n\n\n    Vue.set(this.newUser.language, 'code', this.settings.defaultLanguage);\n    /**\n     * In case the user directly loaded the user list within a group\n     * the watch won't be triggered. We need to initialize it.\n     */\n\n    this.setNewUserDefaultGroup(this.selectedGroup);\n    /** \n     * Register search\n     */\n\n    this.userSearch = new OCA.Search(this.search, this.resetSearch);\n  },\n  computed: {\n    settings: function settings() {\n      return this.$store.getters.getServerData;\n    },\n    filteredUsers: function filteredUsers() {\n      if (this.selectedGroup === 'disabled') {\n        var disabledUsers = this.users.filter(function (user) {\n          return user.enabled === false;\n        });\n\n        if (disabledUsers.length === 0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) {\n          // disabled group is empty, redirection to all users\n          this.$router.push({\n            name: 'users'\n          });\n          this.$refs.infiniteLoading.stateChanger.reset();\n        }\n\n        return disabledUsers;\n      }\n\n      if (!this.settings.isAdmin) {\n        // we don't want subadmins to edit themselves\n        return this.users.filter(function (user) {\n          return user.enabled !== false && user.id !== oc_current_user;\n        });\n      }\n\n      return this.users.filter(function (user) {\n        return user.enabled !== false;\n      });\n    },\n    groups: function groups() {\n      // data provided php side + remove the disabled group\n      return this.$store.getters.getGroups.filter(function (group) {\n        return group.id !== 'disabled';\n      }).sort(function (a, b) {\n        return a.name.localeCompare(b.name);\n      });\n    },\n    canAddGroups: function canAddGroups() {\n      // disabled if no permission to add new users to group\n      return this.groups.map(function (group) {\n        // clone object because we don't want\n        // to edit the original groups\n        group = Object.assign({}, group);\n        group.$isDisabled = group.canAdd === false;\n        return group;\n      });\n    },\n    subAdminsGroups: function subAdminsGroups() {\n      // data provided php side\n      return this.$store.getters.getSubadminGroups;\n    },\n    quotaOptions: function quotaOptions() {\n      // convert the preset array into objects\n      var quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {\n        return acc.concat({\n          id: cur,\n          label: cur\n        });\n      }, []); // add default presets\n\n      quotaPreset.unshift(this.unlimitedQuota);\n      quotaPreset.unshift(this.defaultQuota);\n      return quotaPreset;\n    },\n    minPasswordLength: function minPasswordLength() {\n      return this.$store.getters.getPasswordPolicyMinLength;\n    },\n    usersOffset: function usersOffset() {\n      return this.$store.getters.getUsersOffset;\n    },\n    usersLimit: function usersLimit() {\n      return this.$store.getters.getUsersLimit;\n    },\n    usersCount: function usersCount() {\n      return this.users.length;\n    },\n\n    /* LANGUAGES */\n    languages: function languages() {\n      return Array({\n        label: t('settings', 'Common languages'),\n        languages: this.settings.languages.commonlanguages\n      }, {\n        label: t('settings', 'All languages'),\n        languages: this.settings.languages.languages\n      });\n    }\n  },\n  watch: {\n    // watch url change and group select\n    selectedGroup: function selectedGroup(val, old) {\n      this.$store.commit('resetUsers');\n      this.$refs.infiniteLoading.stateChanger.reset();\n      this.setNewUserDefaultGroup(val);\n    },\n    // make sure the infiniteLoading state is changed if we manually\n    // add/remove data from the store\n    usersCount: function usersCount(val, old) {\n      // deleting the last user, reset the list \n      if (val === 0 && old === 1) {\n        this.$refs.infiniteLoading.stateChanger.reset(); // adding the first user, warn the infiniteLoader that \n        // the list is not empty anymore (we don't fetch the newly\n        // added user as we already have all the info we need)\n      } else if (val === 1 && old === 0) {\n        this.$refs.infiniteLoading.stateChanger.loaded();\n      }\n    }\n  },\n  methods: {\n    onScroll: function onScroll(event) {\n      this.scrolled = event.target.scrollTo > 0;\n    },\n\n    /**\n     * Validate quota string to make sure it's a valid human file size\n     * \n     * @param {string} quota Quota in readable format '5 GB'\n     * @returns {Object}\n     */\n    validateQuota: function validateQuota(quota) {\n      // only used for new presets sent through @Tag\n      var validQuota = OC.Util.computerFileSize(quota);\n\n      if (validQuota !== null && validQuota >= 0) {\n        // unify format output\n        quota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));\n        return this.newUser.quota = {\n          id: quota,\n          label: quota\n        };\n      } // Default is unlimited\n\n\n      return this.newUser.quota = this.quotaOptions[0];\n    },\n    infiniteHandler: function infiniteHandler($state) {\n      this.$store.dispatch('getUsers', {\n        offset: this.usersOffset,\n        limit: this.usersLimit,\n        group: this.selectedGroup !== 'disabled' ? this.selectedGroup : '',\n        search: this.searchQuery\n      }).then(function (response) {\n        response ? $state.loaded() : $state.complete();\n      });\n    },\n\n    /* SEARCH */\n    search: function search(query) {\n      this.searchQuery = query;\n      this.$store.commit('resetUsers');\n      this.$refs.infiniteLoading.stateChanger.reset();\n    },\n    resetSearch: function resetSearch() {\n      this.search('');\n    },\n    resetForm: function resetForm() {\n      // revert form to original state\n      Object.assign(this.newUser, this.$options.data.call(this).newUser); // reset group\n\n      this.setNewUserDefaultGroup(this.selectedGroup);\n      this.loading.all = false;\n    },\n    createUser: function createUser() {\n      var _this = this;\n\n      this.loading.all = true;\n      this.$store.dispatch('addUser', {\n        userid: this.newUser.id,\n        password: this.newUser.password,\n        displayName: this.newUser.displayName,\n        email: this.newUser.mailAddress,\n        groups: this.newUser.groups.map(function (group) {\n          return group.id;\n        }),\n        subadmin: this.newUser.subAdminsGroups.map(function (group) {\n          return group.id;\n        }),\n        quota: this.newUser.quota.id,\n        language: this.newUser.language.code\n      }).then(function () {\n        _this.resetForm();\n\n        _this.$refs.newusername.focus();\n      }).catch(function (error) {\n        _this.loading.all = false;\n\n        if (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n          var statuscode = error.response.data.ocs.meta.statuscode;\n\n          if (statuscode === 102) {\n            // wrong username\n            _this.$refs.newusername.focus();\n          } else if (statuscode === 107) {\n            // wrong password\n            _this.$refs.newuserpassword.focus();\n          }\n        }\n      });\n    },\n    setNewUserDefaultGroup: function setNewUserDefaultGroup(value) {\n      if (value && value.length > 0) {\n        // setting new user default group to the current selected one\n        var currentGroup = this.groups.find(function (group) {\n          return group.id === value;\n        });\n\n        if (currentGroup) {\n          this.newUser.groups = [currentGroup];\n          return;\n        }\n      } // fallback, empty selected group\n\n\n      this.newUser.groups = [];\n    },\n\n    /**\n     * Create a new group\n     * \n     * @param {string} groups Group id\n     * @returns {Promise}\n     */\n    createGroup: function createGroup(gid) {\n      var _this2 = this;\n\n      this.loading.groups = true;\n      this.$store.dispatch('addGroup', gid).then(function (group) {\n        _this2.newUser.groups.push(_this2.groups.find(function (group) {\n          return group.id === gid;\n        }));\n\n        _this2.loading.groups = false;\n      }).catch(function () {\n        _this2.loading.groups = false;\n      });\n      return this.$store.getters.getGroups[this.groups.length];\n    }\n  }\n};","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport ClickOutside from 'vue-click-outside';\nimport Vue from 'vue';\nimport VTooltip from 'v-tooltip';\nimport { PopoverMenu, Multiselect } from 'nextcloud-vue';\nVue.use(VTooltip);\nexport default {\n  name: 'userRow',\n  props: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig', 'languages', 'externalActions'],\n  components: {\n    PopoverMenu: PopoverMenu,\n    Multiselect: Multiselect\n  },\n  directives: {\n    ClickOutside: ClickOutside\n  },\n  mounted: function mounted() {// required if popup needs to stay opened after menu click\n    // since we only have disable/delete actions, let's close it directly\n    // this.popupItem = this.$el;\n  },\n  data: function data() {\n    return {\n      rand: parseInt(Math.random() * 1000),\n      openedMenu: false,\n      feedbackMessage: '',\n      loading: {\n        all: false,\n        displayName: false,\n        password: false,\n        mailAddress: false,\n        groups: false,\n        subadmins: false,\n        quota: false,\n        delete: false,\n        disable: false,\n        languages: false\n      }\n    };\n  },\n  computed: {\n    /* USER POPOVERMENU ACTIONS */\n    userActions: function userActions() {\n      var actions = [{\n        icon: 'icon-delete',\n        text: t('settings', 'Delete user'),\n        action: this.deleteUser\n      }, {\n        icon: this.user.enabled ? 'icon-close' : 'icon-add',\n        text: this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'),\n        action: this.enableDisableUser\n      }];\n\n      if (this.user.email !== null && this.user.email !== '') {\n        actions.push({\n          icon: 'icon-mail',\n          text: t('settings', 'Resend welcome email'),\n          action: this.sendWelcomeMail\n        });\n      }\n\n      return actions.concat(this.externalActions);\n    },\n\n    /* GROUPS MANAGEMENT */\n    userGroups: function userGroups() {\n      var _this = this;\n\n      var userGroups = this.groups.filter(function (group) {\n        return _this.user.groups.includes(group.id);\n      });\n      return userGroups;\n    },\n    userSubAdminsGroups: function userSubAdminsGroups() {\n      var _this2 = this;\n\n      var userSubAdminsGroups = this.subAdminsGroups.filter(function (group) {\n        return _this2.user.subadmin.includes(group.id);\n      });\n      return userSubAdminsGroups;\n    },\n    availableGroups: function availableGroups() {\n      var _this3 = this;\n\n      return this.groups.map(function (group) {\n        // clone object because we don't want\n        // to edit the original groups\n        var groupClone = Object.assign({}, group); // two settings here:\n        // 1. user NOT in group but no permission to add\n        // 2. user is in group but no permission to remove\n\n        groupClone.$isDisabled = group.canAdd === false && !_this3.user.groups.includes(group.id) || group.canRemove === false && _this3.user.groups.includes(group.id);\n        return groupClone;\n      });\n    },\n\n    /* QUOTA MANAGEMENT */\n    usedSpace: function usedSpace() {\n      if (this.user.quota.used) {\n        return t('settings', '{size} used', {\n          size: OC.Util.humanFileSize(this.user.quota.used)\n        });\n      }\n\n      return t('settings', '{size} used', {\n        size: OC.Util.humanFileSize(0)\n      });\n    },\n    usedQuota: function usedQuota() {\n      var quota = this.user.quota.quota;\n\n      if (quota > 0) {\n        quota = Math.min(100, Math.round(this.user.quota.used / quota * 100));\n      } else {\n        var usedInGB = this.user.quota.used / (10 * Math.pow(2, 30)); //asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\n        quota = 95 * (1 - 1 / (usedInGB + 1));\n      }\n\n      return isNaN(quota) ? 0 : quota;\n    },\n    // Mapping saved values to objects\n    userQuota: function userQuota() {\n      if (this.user.quota.quota >= 0) {\n        // if value is valid, let's map the quotaOptions or return custom quota\n        var humanQuota = OC.Util.humanFileSize(this.user.quota.quota);\n        var userQuota = this.quotaOptions.find(function (quota) {\n          return quota.id === humanQuota;\n        });\n        return userQuota ? userQuota : {\n          id: humanQuota,\n          label: humanQuota\n        };\n      } else if (this.user.quota.quota === 'default') {\n        // default quota is replaced by the proper value on load\n        return this.quotaOptions[0];\n      }\n\n      return this.quotaOptions[1]; // unlimited\n    },\n\n    /* PASSWORD POLICY? */\n    minPasswordLength: function minPasswordLength() {\n      return this.$store.getters.getPasswordPolicyMinLength;\n    },\n\n    /* LANGUAGE */\n    userLanguage: function userLanguage() {\n      var _this4 = this;\n\n      var availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);\n      var userLang = availableLanguages.find(function (lang) {\n        return lang.code === _this4.user.language;\n      });\n\n      if (_typeof(userLang) !== 'object' && this.user.language !== '') {\n        return {\n          code: this.user.language,\n          name: this.user.language\n        };\n      } else if (this.user.language === '') {\n        return false;\n      }\n\n      return userLang;\n    }\n  },\n  methods: {\n    /* MENU HANDLING */\n    toggleMenu: function toggleMenu() {\n      this.openedMenu = !this.openedMenu;\n    },\n    hideMenu: function hideMenu() {\n      this.openedMenu = false;\n    },\n\n    /**\n     * Generate avatar url\n     * \n     * @param {string} user The user name\n     * @param {int} size Size integer, default 32\n     * @returns {string}\n     */\n    generateAvatar: function generateAvatar(user) {\n      var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32;\n      return OC.generateUrl('/avatar/{user}/{size}?v={version}', {\n        user: user,\n        size: size,\n        version: oc_userconfig.avatar.version\n      });\n    },\n\n    /**\n     * Format array of groups objects to a string for the popup\n     * \n     * @param {array} groups The groups\n     * @returns {string}\n     */\n    formatGroupsTitle: function formatGroupsTitle(groups) {\n      var names = groups.map(function (group) {\n        return group.name;\n      });\n      return names.slice(2).join(', ');\n    },\n    deleteUser: function deleteUser() {\n      var _this5 = this;\n\n      this.loading.delete = true;\n      this.loading.all = true;\n      var userid = this.user.id;\n      return this.$store.dispatch('deleteUser', userid).then(function () {\n        _this5.loading.delete = false;\n        _this5.loading.all = false;\n      });\n    },\n    enableDisableUser: function enableDisableUser() {\n      var _this6 = this;\n\n      this.loading.delete = true;\n      this.loading.all = true;\n      var userid = this.user.id;\n      var enabled = !this.user.enabled;\n      return this.$store.dispatch('enableDisableUser', {\n        userid: userid,\n        enabled: enabled\n      }).then(function () {\n        _this6.loading.delete = false;\n        _this6.loading.all = false;\n      });\n    },\n\n    /**\n     * Set user displayName\n     * \n     * @param {string} displayName The display name\n     * @returns {Promise}\n     */\n    updateDisplayName: function updateDisplayName() {\n      var _this7 = this;\n\n      var displayName = this.$refs.displayName.value;\n      this.loading.displayName = true;\n      this.$store.dispatch('setUserData', {\n        userid: this.user.id,\n        key: 'displayname',\n        value: displayName\n      }).then(function () {\n        _this7.loading.displayName = false;\n        _this7.$refs.displayName.value = displayName;\n      });\n    },\n\n    /**\n     * Set user password\n     * \n     * @param {string} password The email adress\n     * @returns {Promise}\n     */\n    updatePassword: function updatePassword() {\n      var _this8 = this;\n\n      var password = this.$refs.password.value;\n      this.loading.password = true;\n      this.$store.dispatch('setUserData', {\n        userid: this.user.id,\n        key: 'password',\n        value: password\n      }).then(function () {\n        _this8.loading.password = false;\n        _this8.$refs.password.value = ''; // empty & show placeholder \n      });\n    },\n\n    /**\n     * Set user mailAddress\n     * \n     * @param {string} mailAddress The email adress\n     * @returns {Promise}\n     */\n    updateEmail: function updateEmail() {\n      var _this9 = this;\n\n      var mailAddress = this.$refs.mailAddress.value;\n      this.loading.mailAddress = true;\n      this.$store.dispatch('setUserData', {\n        userid: this.user.id,\n        key: 'email',\n        value: mailAddress\n      }).then(function () {\n        _this9.loading.mailAddress = false;\n        _this9.$refs.mailAddress.value = mailAddress;\n      });\n    },\n\n    /**\n     * Create a new group and add user to it\n     * \n     * @param {string} groups Group id\n     * @returns {Promise}\n     */\n    createGroup: function createGroup(gid) {\n      var _this10 = this;\n\n      this.loading = {\n        groups: true,\n        subadmins: true\n      };\n      this.$store.dispatch('addGroup', gid).then(function () {\n        _this10.loading = {\n          groups: false,\n          subadmins: false\n        };\n        var userid = _this10.user.id;\n\n        _this10.$store.dispatch('addUserGroup', {\n          userid: userid,\n          gid: gid\n        });\n      }).catch(function () {\n        _this10.loading = {\n          groups: false,\n          subadmins: false\n        };\n      });\n      return this.$store.getters.getGroups[this.groups.length];\n    },\n\n    /**\n     * Add user to group\n     * \n     * @param {object} group Group object\n     * @returns {Promise}\n     */\n    addUserGroup: function addUserGroup(group) {\n      var _this11 = this;\n\n      if (group.canAdd === false) {\n        return false;\n      }\n\n      this.loading.groups = true;\n      var userid = this.user.id;\n      var gid = group.id;\n      return this.$store.dispatch('addUserGroup', {\n        userid: userid,\n        gid: gid\n      }).then(function () {\n        return _this11.loading.groups = false;\n      });\n    },\n\n    /**\n     * Remove user from group\n     * \n     * @param {object} group Group object\n     * @returns {Promise}\n     */\n    removeUserGroup: function removeUserGroup(group) {\n      var _this12 = this;\n\n      if (group.canRemove === false) {\n        return false;\n      }\n\n      this.loading.groups = true;\n      var userid = this.user.id;\n      var gid = group.id;\n      return this.$store.dispatch('removeUserGroup', {\n        userid: userid,\n        gid: gid\n      }).then(function () {\n        _this12.loading.groups = false; // remove user from current list if current list is the removed group\n\n        if (_this12.$route.params.selectedGroup === gid) {\n          _this12.$store.commit('deleteUser', userid);\n        }\n      }).catch(function () {\n        _this12.loading.groups = false;\n      });\n    },\n\n    /**\n     * Add user to group\n     * \n     * @param {object} group Group object\n     * @returns {Promise}\n     */\n    addUserSubAdmin: function addUserSubAdmin(group) {\n      var _this13 = this;\n\n      this.loading.subadmins = true;\n      var userid = this.user.id;\n      var gid = group.id;\n      return this.$store.dispatch('addUserSubAdmin', {\n        userid: userid,\n        gid: gid\n      }).then(function () {\n        return _this13.loading.subadmins = false;\n      });\n    },\n\n    /**\n     * Remove user from group\n     * \n     * @param {object} group Group object\n     * @returns {Promise}\n     */\n    removeUserSubAdmin: function removeUserSubAdmin(group) {\n      var _this14 = this;\n\n      this.loading.subadmins = true;\n      var userid = this.user.id;\n      var gid = group.id;\n      return this.$store.dispatch('removeUserSubAdmin', {\n        userid: userid,\n        gid: gid\n      }).then(function () {\n        return _this14.loading.subadmins = false;\n      });\n    },\n\n    /**\n     * Dispatch quota set request\n     * \n     * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n     * @returns {string}\n     */\n    setUserQuota: function setUserQuota() {\n      var _this15 = this;\n\n      var quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';\n      this.loading.quota = true; // ensure we only send the preset id\n\n      quota = quota.id ? quota.id : quota;\n      this.$store.dispatch('setUserData', {\n        userid: this.user.id,\n        key: 'quota',\n        value: quota\n      }).then(function () {\n        return _this15.loading.quota = false;\n      });\n      return quota;\n    },\n\n    /**\n     * Validate quota string to make sure it's a valid human file size\n     * \n     * @param {string} quota Quota in readable format '5 GB'\n     * @returns {Promise|boolean}\n     */\n    validateQuota: function validateQuota(quota) {\n      // only used for new presets sent through @Tag\n      var validQuota = OC.Util.computerFileSize(quota);\n\n      if (validQuota !== null && validQuota >= 0) {\n        // unify format output\n        return this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n      } // if no valid do not change\n\n\n      return false;\n    },\n\n    /**\n     * Dispatch language set request\n     * \n     * @param {Object} lang language object {code:'en', name:'English'}\n     * @returns {Object}\n     */\n    setUserLanguage: function setUserLanguage(lang) {\n      var _this16 = this;\n\n      this.loading.languages = true; // ensure we only send the preset id\n\n      this.$store.dispatch('setUserData', {\n        userid: this.user.id,\n        key: 'language',\n        value: lang.code\n      }).then(function () {\n        return _this16.loading.languages = false;\n      });\n      return lang;\n    },\n\n    /**\n     * Dispatch new welcome mail request\n     */\n    sendWelcomeMail: function sendWelcomeMail() {\n      var _this17 = this;\n\n      this.loading.all = true;\n      this.$store.dispatch('sendWelcomeMail', this.user.id).then(function (success) {\n        if (success) {\n          // Show feedback to indicate the success\n          _this17.feedbackMessage = t('setting', 'Welcome mail sent!');\n          setTimeout(function () {\n            _this17.feedbackMessage = '';\n          }, 2000);\n        }\n\n        _this17.loading.all = false;\n      });\n    }\n  }\n};","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport { AppContent, AppNavigationItem, AppNavigationNew, AppNavigationSettings } from 'nextcloud-vue';\nimport userList from '../components/userList';\nimport Vue from 'vue';\nimport VueLocalStorage from 'vue-localstorage';\nimport Multiselect from 'vue-multiselect';\nimport api from '../store/api';\nVue.use(VueLocalStorage);\nexport default {\n  name: 'Users',\n  props: ['selectedGroup'],\n  components: {\n    AppContent: AppContent,\n    AppNavigationItem: AppNavigationItem,\n    AppNavigationNew: AppNavigationNew,\n    AppNavigationSettings: AppNavigationSettings,\n    userList: userList,\n    Multiselect: Multiselect\n  },\n  beforeMount: function beforeMount() {\n    this.$store.commit('initGroups', {\n      groups: this.$store.getters.getServerData.groups,\n      orderBy: this.$store.getters.getServerData.sortGroups,\n      userCount: this.$store.getters.getServerData.userCount\n    });\n    this.$store.dispatch('getPasswordPolicyMinLength');\n  },\n  created: function created() {\n    // init the OCA.Settings.UserList object\n    // and add the registerAction method\n    Object.assign(OCA, {\n      Settings: {\n        UserList: {\n          registerAction: this.registerAction\n        }\n      }\n    });\n  },\n  data: function data() {\n    return {\n      // default quota is set to unlimited\n      unlimitedQuota: {\n        id: 'none',\n        label: t('settings', 'Unlimited')\n      },\n      // temporary value used for multiselect change\n      selectedQuota: false,\n      externalActions: [],\n      showAddGroupEntry: false,\n      loadingAddGroup: false,\n      showConfig: {\n        showStoragePath: false,\n        showUserBackend: false,\n        showLastLogin: false,\n        showNewUserForm: false,\n        showLanguages: false\n      }\n    };\n  },\n  methods: {\n    toggleNewUserMenu: function toggleNewUserMenu() {\n      this.showConfig.showNewUserForm = !this.showConfig.showNewUserForm;\n\n      if (this.showConfig.showNewUserForm) {\n        Vue.nextTick(function () {\n          window.newusername.focus();\n        });\n      }\n    },\n    getLocalstorage: function getLocalstorage(key) {\n      // force initialization\n      var localConfig = this.$localStorage.get(key); // if localstorage is null, fallback to original values\n\n      this.showConfig[key] = localConfig !== null ? localConfig === 'true' : this.showConfig[key];\n      return this.showConfig[key];\n    },\n    setLocalStorage: function setLocalStorage(key, status) {\n      this.showConfig[key] = status;\n      this.$localStorage.set(key, status);\n      return status;\n    },\n    removeGroup: function removeGroup(groupid) {\n      var self = this; // TODO migrate to a vue js confirm dialog component \n\n      OC.dialogs.confirm(t('settings', 'You are about to remove the group {group}. The users will NOT be deleted.', {\n        group: groupid\n      }), t('settings', 'Please confirm the group removal '), function (success) {\n        if (success) {\n          self.$store.dispatch('removeGroup', groupid);\n        }\n      });\n    },\n\n    /**\n     * Dispatch default quota set request\n     * \n     * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n     * @returns {string}\n     */\n    setDefaultQuota: function setDefaultQuota() {\n      var _this = this;\n\n      var quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';\n      this.$store.dispatch('setAppConfig', {\n        app: 'files',\n        key: 'default_quota',\n        // ensure we only send the preset id\n        value: quota.id ? quota.id : quota\n      }).then(function () {\n        if (_typeof(quota) !== 'object') {\n          quota = {\n            id: quota,\n            label: quota\n          };\n        }\n\n        _this.defaultQuota = quota;\n      });\n    },\n\n    /**\n     * Validate quota string to make sure it's a valid human file size\n     * \n     * @param {string} quota Quota in readable format '5 GB'\n     * @returns {Promise|boolean}\n     */\n    validateQuota: function validateQuota(quota) {\n      // only used for new presets sent through @Tag\n      var validQuota = OC.Util.computerFileSize(quota);\n\n      if (validQuota === 0) {\n        return this.setDefaultQuota('none');\n      } else if (validQuota !== null) {\n        // unify format output\n        return this.setDefaultQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n      } // if no valid do not change\n\n\n      return false;\n    },\n\n    /**\n     * Register a new action for the user menu\n     * \n     * @param {string} icon the icon class\n     * @param {string} text the text to display\n     * @param {function} action the function to run\n     */\n    registerAction: function registerAction(icon, text, action) {\n      this.externalActions.push({\n        icon: icon,\n        text: text,\n        action: action\n      });\n      return this.externalActions;\n    },\n\n    /**\n     * Create a new group\n     * \n     * @param {Object} event The form submit event\n     */\n    createGroup: function createGroup(event) {\n      var _this2 = this;\n\n      var gid = event.target[0].value;\n      this.loadingAddGroup = true;\n      this.$store.dispatch('addGroup', gid).then(function () {\n        _this2.showAddGroupEntry = false;\n        _this2.loadingAddGroup = false;\n\n        _this2.$router.push({\n          name: 'group',\n          params: {\n            selectedGroup: gid\n          }\n        });\n      }).catch(function () {\n        _this2.loadingAddGroup = false;\n      });\n    }\n  },\n  computed: {\n    users: function users() {\n      return this.$store.getters.getUsers;\n    },\n    usersOffset: function usersOffset() {\n      return this.$store.getters.getUsersOffset;\n    },\n    usersLimit: function usersLimit() {\n      return this.$store.getters.getUsersLimit;\n    },\n    // Local settings\n    showLanguages: {\n      get: function get() {\n        return this.getLocalstorage('showLanguages');\n      },\n      set: function set(status) {\n        this.setLocalStorage('showLanguages', status);\n      }\n    },\n    showLastLogin: {\n      get: function get() {\n        return this.getLocalstorage('showLastLogin');\n      },\n      set: function set(status) {\n        this.setLocalStorage('showLastLogin', status);\n      }\n    },\n    showUserBackend: {\n      get: function get() {\n        return this.getLocalstorage('showUserBackend');\n      },\n      set: function set(status) {\n        this.setLocalStorage('showUserBackend', status);\n      }\n    },\n    showStoragePath: {\n      get: function get() {\n        return this.getLocalstorage('showStoragePath');\n      },\n      set: function set(status) {\n        this.setLocalStorage('showStoragePath', status);\n      }\n    },\n    userCount: function userCount() {\n      return this.$store.getters.getUserCount;\n    },\n    settings: function settings() {\n      return this.$store.getters.getServerData;\n    },\n    // default quota\n    quotaOptions: function quotaOptions() {\n      // convert the preset array into objects\n      var quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {\n        return acc.concat({\n          id: cur,\n          label: cur\n        });\n      }, []); // add default presets\n\n      quotaPreset.unshift(this.unlimitedQuota);\n      return quotaPreset;\n    },\n    // mapping saved values to objects\n    defaultQuota: {\n      get: function get() {\n        if (this.selectedQuota !== false) {\n          return this.selectedQuota;\n        }\n\n        if (OC.Util.computerFileSize(this.settings.defaultQuota) > 0) {\n          // if value is valid, let's map the quotaOptions or return custom quota\n          return {\n            id: this.settings.defaultQuota,\n            label: this.settings.defaultQuota\n          };\n        }\n\n        return this.unlimitedQuota; // unlimited\n      },\n      set: function set(quota) {\n        this.selectedQuota = quota;\n      }\n    },\n    // BUILD APP NAVIGATION MENU OBJECT\n    menu: function menu() {\n      var _this3 = this;\n\n      // Data provided php side\n      var self = this;\n      var groups = this.$store.getters.getGroups;\n      groups = Array.isArray(groups) ? groups : []; // Map groups\n\n      groups = groups.map(function (group) {\n        var item = {};\n        item.id = group.id.replace(' ', '_');\n        item.key = item.id;\n        item.utils = {}; // router link to\n\n        item.router = {\n          name: 'group',\n          params: {\n            selectedGroup: group.id\n          }\n        }; // group name\n\n        item.text = group.name;\n        item.title = group.name; // users count for all groups\n\n        if (group.usercount - group.disabled > 0 || group.usercount === -1) {\n          item.utils.counter = group.usercount - group.disabled;\n        }\n\n        if (item.id !== 'admin' && item.id !== 'disabled' && _this3.settings.isAdmin) {\n          // add delete button on real groups\n          item.utils.actions = [{\n            icon: 'icon-delete',\n            text: t('settings', 'Remove group'),\n            action: function action() {\n              self.removeGroup(group.id);\n            }\n          }];\n        }\n\n        ;\n        return item;\n      }); // Every item is added on top of the array, so we're going backward\n      // Groups, separator, disabled, admin, everyone\n      // Add separator\n\n      var realGroups = groups.find(function (group) {\n        return group.id !== 'disabled' && group.id !== 'admin';\n      });\n      realGroups = typeof realGroups === 'undefined' ? [] : realGroups;\n      realGroups = Array.isArray(realGroups) ? realGroups : [realGroups];\n\n      if (realGroups.length > 0) {\n        var separator = {\n          caption: true,\n          text: t('settings', 'Groups')\n        };\n        groups.unshift(separator);\n      } // Adjust admin and disabled groups\n\n\n      var adminGroup = groups.find(function (group) {\n        return group.id == 'admin';\n      });\n      var disabledGroup = groups.find(function (group) {\n        return group.id == 'disabled';\n      }); // filter out admin and disabled\n\n      groups = groups.filter(function (group) {\n        return ['admin', 'disabled'].indexOf(group.id) === -1;\n      });\n\n      if (adminGroup && adminGroup.text) {\n        adminGroup.text = t('settings', 'Admins'); // rename admin group\n\n        adminGroup.icon = 'icon-user-admin'; // set icon\n\n        groups.unshift(adminGroup); // add admin group if present\n      }\n\n      if (disabledGroup && disabledGroup.text) {\n        disabledGroup.text = t('settings', 'Disabled users'); // rename disabled group\n\n        disabledGroup.icon = 'icon-disabled-users'; // set icon\n\n        if (disabledGroup.utils && (disabledGroup.utils.counter > 0 // add disabled if not empty \n        || disabledGroup.utils.counter === -1) // add disabled if ldap enabled \n        ) {\n            groups.unshift(disabledGroup);\n          }\n      } // Add everyone group\n\n\n      var everyoneGroup = {\n        id: 'everyone',\n        key: 'everyone',\n        icon: 'icon-contacts-dark',\n        router: {\n          name: 'users'\n        },\n        text: t('settings', 'Everyone')\n      }; // users count\n\n      if (this.userCount > 0) {\n        Vue.set(everyoneGroup, 'utils', {\n          counter: this.userCount\n        });\n      }\n\n      groups.unshift(everyoneGroup);\n      var addGroup = {\n        id: 'addgroup',\n        key: 'addgroup',\n        icon: 'icon-add',\n        text: t('settings', 'Add group'),\n        classes: this.loadingAddGroup ? 'icon-loading-small' : ''\n      };\n\n      if (this.showAddGroupEntry) {\n        Vue.set(addGroup, 'edit', {\n          text: t('settings', 'Add group'),\n          action: this.createGroup,\n          reset: function reset() {\n            self.showAddGroupEntry = false;\n          }\n        });\n        addGroup.classes = 'editing';\n      } else {\n        Vue.set(addGroup, 'action', function () {\n          self.showAddGroupEntry = true; // focus input\n\n          Vue.nextTick(function () {\n            window.addgroup.querySelector('form > input[type=\"text\"]').focus();\n          });\n        });\n      }\n\n      groups.unshift(addGroup);\n      return groups;\n    }\n  }\n};","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    {\n      staticClass: \"user-list-grid\",\n      attrs: { id: \"app-content\" },\n      on: {\n        \"&scroll\": function($event) {\n          return _vm.onScroll($event)\n        }\n      }\n    },\n    [\n      _c(\n        \"div\",\n        {\n          staticClass: \"row\",\n          class: { sticky: _vm.scrolled && !_vm.showConfig.showNewUserForm },\n          attrs: { id: \"grid-header\" }\n        },\n        [\n          _c(\"div\", { staticClass: \"avatar\", attrs: { id: \"headerAvatar\" } }),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"name\", attrs: { id: \"headerName\" } }, [\n            _vm._v(_vm._s(_vm.t(\"settings\", \"Username\")))\n          ]),\n          _vm._v(\" \"),\n          _c(\n            \"div\",\n            { staticClass: \"displayName\", attrs: { id: \"headerDisplayName\" } },\n            [_vm._v(_vm._s(_vm.t(\"settings\", \"Display name\")))]\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"div\",\n            { staticClass: \"password\", attrs: { id: \"headerPassword\" } },\n            [_vm._v(_vm._s(_vm.t(\"settings\", \"Password\")))]\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"div\",\n            { staticClass: \"mailAddress\", attrs: { id: \"headerAddress\" } },\n            [_vm._v(_vm._s(_vm.t(\"settings\", \"Email\")))]\n          ),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"groups\", attrs: { id: \"headerGroups\" } }, [\n            _vm._v(_vm._s(_vm.t(\"settings\", \"Groups\")))\n          ]),\n          _vm._v(\" \"),\n          _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin\n            ? _c(\n                \"div\",\n                { staticClass: \"subadmins\", attrs: { id: \"headerSubAdmins\" } },\n                [_vm._v(_vm._s(_vm.t(\"settings\", \"Group admin for\")))]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"quota\", attrs: { id: \"headerQuota\" } }, [\n            _vm._v(_vm._s(_vm.t(\"settings\", \"Quota\")))\n          ]),\n          _vm._v(\" \"),\n          _vm.showConfig.showLanguages\n            ? _c(\n                \"div\",\n                { staticClass: \"languages\", attrs: { id: \"headerLanguages\" } },\n                [_vm._v(_vm._s(_vm.t(\"settings\", \"Language\")))]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.showConfig.showStoragePath\n            ? _c(\n                \"div\",\n                { staticClass: \"headerStorageLocation storageLocation\" },\n                [_vm._v(_vm._s(_vm.t(\"settings\", \"Storage location\")))]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.showConfig.showUserBackend\n            ? _c(\"div\", { staticClass: \"headerUserBackend userBackend\" }, [\n                _vm._v(_vm._s(_vm.t(\"settings\", \"User backend\")))\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.showConfig.showLastLogin\n            ? _c(\"div\", { staticClass: \"headerLastLogin lastLogin\" }, [\n                _vm._v(_vm._s(_vm.t(\"settings\", \"Last login\")))\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"userActions\" })\n        ]\n      ),\n      _vm._v(\" \"),\n      _c(\n        \"form\",\n        {\n          directives: [\n            {\n              name: \"show\",\n              rawName: \"v-show\",\n              value: _vm.showConfig.showNewUserForm,\n              expression: \"showConfig.showNewUserForm\"\n            }\n          ],\n          staticClass: \"row\",\n          class: { sticky: _vm.scrolled && _vm.showConfig.showNewUserForm },\n          attrs: { id: \"new-user\", disabled: _vm.loading.all },\n          on: {\n            submit: function($event) {\n              $event.preventDefault()\n              return _vm.createUser($event)\n            }\n          }\n        },\n        [\n          _c(\"div\", {\n            class: _vm.loading.all ? \"icon-loading-small\" : \"icon-add\"\n          }),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"name\" }, [\n            _c(\"input\", {\n              directives: [\n                {\n                  name: \"model\",\n                  rawName: \"v-model\",\n                  value: _vm.newUser.id,\n                  expression: \"newUser.id\"\n                }\n              ],\n              ref: \"newusername\",\n              attrs: {\n                id: \"newusername\",\n                type: \"text\",\n                required: \"\",\n                placeholder: _vm.t(\"settings\", \"Username\"),\n                name: \"username\",\n                autocomplete: \"off\",\n                autocapitalize: \"none\",\n                autocorrect: \"off\",\n                pattern: \"[a-zA-Z0-9 _\\\\.@\\\\-']+\"\n              },\n              domProps: { value: _vm.newUser.id },\n              on: {\n                input: function($event) {\n                  if ($event.target.composing) {\n                    return\n                  }\n                  _vm.$set(_vm.newUser, \"id\", $event.target.value)\n                }\n              }\n            })\n          ]),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"displayName\" }, [\n            _c(\"input\", {\n              directives: [\n                {\n                  name: \"model\",\n                  rawName: \"v-model\",\n                  value: _vm.newUser.displayName,\n                  expression: \"newUser.displayName\"\n                }\n              ],\n              attrs: {\n                id: \"newdisplayname\",\n                type: \"text\",\n                placeholder: _vm.t(\"settings\", \"Display name\"),\n                name: \"displayname\",\n                autocomplete: \"off\",\n                autocapitalize: \"none\",\n                autocorrect: \"off\"\n              },\n              domProps: { value: _vm.newUser.displayName },\n              on: {\n                input: function($event) {\n                  if ($event.target.composing) {\n                    return\n                  }\n                  _vm.$set(_vm.newUser, \"displayName\", $event.target.value)\n                }\n              }\n            })\n          ]),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"password\" }, [\n            _c(\"input\", {\n              directives: [\n                {\n                  name: \"model\",\n                  rawName: \"v-model\",\n                  value: _vm.newUser.password,\n                  expression: \"newUser.password\"\n                }\n              ],\n              ref: \"newuserpassword\",\n              attrs: {\n                id: \"newuserpassword\",\n                type: \"password\",\n                required: _vm.newUser.mailAddress === \"\",\n                placeholder: _vm.t(\"settings\", \"Password\"),\n                name: \"password\",\n                autocomplete: \"new-password\",\n                autocapitalize: \"none\",\n                autocorrect: \"off\",\n                minlength: _vm.minPasswordLength\n              },\n              domProps: { value: _vm.newUser.password },\n              on: {\n                input: function($event) {\n                  if ($event.target.composing) {\n                    return\n                  }\n                  _vm.$set(_vm.newUser, \"password\", $event.target.value)\n                }\n              }\n            })\n          ]),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"mailAddress\" }, [\n            _c(\"input\", {\n              directives: [\n                {\n                  name: \"model\",\n                  rawName: \"v-model\",\n                  value: _vm.newUser.mailAddress,\n                  expression: \"newUser.mailAddress\"\n                }\n              ],\n              attrs: {\n                id: \"newemail\",\n                type: \"email\",\n                required: _vm.newUser.password === \"\",\n                placeholder: _vm.t(\"settings\", \"Email\"),\n                name: \"email\",\n                autocomplete: \"off\",\n                autocapitalize: \"none\",\n                autocorrect: \"off\"\n              },\n              domProps: { value: _vm.newUser.mailAddress },\n              on: {\n                input: function($event) {\n                  if ($event.target.composing) {\n                    return\n                  }\n                  _vm.$set(_vm.newUser, \"mailAddress\", $event.target.value)\n                }\n              }\n            })\n          ]),\n          _vm._v(\" \"),\n          _c(\n            \"div\",\n            { staticClass: \"groups\" },\n            [\n              !_vm.settings.isAdmin\n                ? _c(\"input\", {\n                    class: { \"icon-loading-small\": _vm.loading.groups },\n                    attrs: {\n                      type: \"text\",\n                      tabindex: \"-1\",\n                      id: \"newgroups\",\n                      required: !_vm.settings.isAdmin\n                    },\n                    domProps: { value: _vm.newUser.groups }\n                  })\n                : _vm._e(),\n              _vm._v(\" \"),\n              _c(\n                \"multiselect\",\n                {\n                  staticClass: \"multiselect-vue\",\n                  attrs: {\n                    options: _vm.canAddGroups,\n                    disabled: _vm.loading.groups || _vm.loading.all,\n                    \"tag-placeholder\": \"create\",\n                    placeholder: _vm.t(\"settings\", \"Add user in group\"),\n                    label: \"name\",\n                    \"track-by\": \"id\",\n                    multiple: true,\n                    taggable: true,\n                    \"close-on-select\": false,\n                    \"tag-width\": 60\n                  },\n                  on: { tag: _vm.createGroup },\n                  model: {\n                    value: _vm.newUser.groups,\n                    callback: function($$v) {\n                      _vm.$set(_vm.newUser, \"groups\", $$v)\n                    },\n                    expression: \"newUser.groups\"\n                  }\n                },\n                [\n                  _c(\n                    \"span\",\n                    { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n                    [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))]\n                  )\n                ]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin\n            ? _c(\n                \"div\",\n                { staticClass: \"subadmins\" },\n                [\n                  _c(\n                    \"multiselect\",\n                    {\n                      staticClass: \"multiselect-vue\",\n                      attrs: {\n                        options: _vm.subAdminsGroups,\n                        placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n                        label: \"name\",\n                        \"track-by\": \"id\",\n                        multiple: true,\n                        \"close-on-select\": false,\n                        \"tag-width\": 60\n                      },\n                      model: {\n                        value: _vm.newUser.subAdminsGroups,\n                        callback: function($$v) {\n                          _vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)\n                        },\n                        expression: \"newUser.subAdminsGroups\"\n                      }\n                    },\n                    [\n                      _c(\n                        \"span\",\n                        { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n                        [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))]\n                      )\n                    ]\n                  )\n                ],\n                1\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _c(\n            \"div\",\n            { staticClass: \"quota\" },\n            [\n              _c(\"multiselect\", {\n                staticClass: \"multiselect-vue\",\n                attrs: {\n                  options: _vm.quotaOptions,\n                  placeholder: _vm.t(\"settings\", \"Select user quota\"),\n                  label: \"label\",\n                  \"track-by\": \"id\",\n                  allowEmpty: false,\n                  taggable: true\n                },\n                on: { tag: _vm.validateQuota },\n                model: {\n                  value: _vm.newUser.quota,\n                  callback: function($$v) {\n                    _vm.$set(_vm.newUser, \"quota\", $$v)\n                  },\n                  expression: \"newUser.quota\"\n                }\n              })\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _vm.showConfig.showLanguages\n            ? _c(\n                \"div\",\n                { staticClass: \"languages\" },\n                [\n                  _c(\"multiselect\", {\n                    staticClass: \"multiselect-vue\",\n                    attrs: {\n                      options: _vm.languages,\n                      placeholder: _vm.t(\"settings\", \"Default language\"),\n                      label: \"name\",\n                      \"track-by\": \"code\",\n                      allowEmpty: false,\n                      \"group-values\": \"languages\",\n                      \"group-label\": \"label\"\n                    },\n                    model: {\n                      value: _vm.newUser.language,\n                      callback: function($$v) {\n                        _vm.$set(_vm.newUser, \"language\", $$v)\n                      },\n                      expression: \"newUser.language\"\n                    }\n                  })\n                ],\n                1\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.showConfig.showStoragePath\n            ? _c(\"div\", { staticClass: \"storageLocation\" })\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.showConfig.showUserBackend\n            ? _c(\"div\", { staticClass: \"userBackend\" })\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.showConfig.showLastLogin\n            ? _c(\"div\", { staticClass: \"lastLogin\" })\n            : _vm._e(),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"userActions\" }, [\n            _c(\"input\", {\n              staticClass: \"button primary icon-checkmark-white has-tooltip\",\n              attrs: {\n                type: \"submit\",\n                id: \"newsubmit\",\n                value: \"\",\n                title: _vm.t(\"settings\", \"Add a new user\")\n              }\n            })\n          ])\n        ]\n      ),\n      _vm._v(\" \"),\n      _vm._l(_vm.filteredUsers, function(user, key) {\n        return _c(\"user-row\", {\n          key: key,\n          attrs: {\n            user: user,\n            settings: _vm.settings,\n            showConfig: _vm.showConfig,\n            groups: _vm.groups,\n            subAdminsGroups: _vm.subAdminsGroups,\n            quotaOptions: _vm.quotaOptions,\n            languages: _vm.languages,\n            externalActions: _vm.externalActions\n          }\n        })\n      }),\n      _vm._v(\" \"),\n      _c(\n        \"infinite-loading\",\n        { ref: \"infiniteLoading\", on: { infinite: _vm.infiniteHandler } },\n        [\n          _c(\"div\", { attrs: { slot: \"spinner\" }, slot: \"spinner\" }, [\n            _c(\"div\", { staticClass: \"users-icon-loading icon-loading\" })\n          ]),\n          _vm._v(\" \"),\n          _c(\"div\", { attrs: { slot: \"no-more\" }, slot: \"no-more\" }, [\n            _c(\"div\", { staticClass: \"users-list-end\" })\n          ]),\n          _vm._v(\" \"),\n          _c(\"div\", { attrs: { slot: \"no-results\" }, slot: \"no-results\" }, [\n            _c(\"div\", { attrs: { id: \"emptycontent\" } }, [\n              _c(\"div\", { staticClass: \"icon-contacts-dark\" }),\n              _vm._v(\" \"),\n              _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"settings\", \"No users in here\")))])\n            ])\n          ])\n        ]\n      )\n    ],\n    2\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return Object.keys(_vm.user).length === 1\n    ? _c(\"div\", { staticClass: \"row\", attrs: { \"data-id\": _vm.user.id } }, [\n        _c(\n          \"div\",\n          {\n            staticClass: \"avatar\",\n            class: {\n              \"icon-loading-small\": _vm.loading.delete || _vm.loading.disable\n            }\n          },\n          [\n            !_vm.loading.delete && !_vm.loading.disable\n              ? _c(\"img\", {\n                  attrs: {\n                    alt: \"\",\n                    width: \"32\",\n                    height: \"32\",\n                    src: _vm.generateAvatar(_vm.user.id, 32),\n                    srcset:\n                      _vm.generateAvatar(_vm.user.id, 64) +\n                      \" 2x, \" +\n                      _vm.generateAvatar(_vm.user.id, 128) +\n                      \" 4x\"\n                  }\n                })\n              : _vm._e()\n          ]\n        ),\n        _vm._v(\" \"),\n        _c(\"div\", { staticClass: \"name\" }, [_vm._v(_vm._s(_vm.user.id))]),\n        _vm._v(\" \"),\n        _c(\"div\", { staticClass: \"obfuscated\" }, [\n          _vm._v(\n            _vm._s(\n              _vm.t(\n                \"settings\",\n                \"You do not have permissions to see the details of this user\"\n              )\n            )\n          )\n        ])\n      ])\n    : _c(\n        \"div\",\n        {\n          staticClass: \"row\",\n          class: { disabled: _vm.loading.delete || _vm.loading.disable },\n          attrs: { \"data-id\": _vm.user.id }\n        },\n        [\n          _c(\n            \"div\",\n            {\n              staticClass: \"avatar\",\n              class: {\n                \"icon-loading-small\": _vm.loading.delete || _vm.loading.disable\n              }\n            },\n            [\n              !_vm.loading.delete && !_vm.loading.disable\n                ? _c(\"img\", {\n                    attrs: {\n                      alt: \"\",\n                      width: \"32\",\n                      height: \"32\",\n                      src: _vm.generateAvatar(_vm.user.id, 32),\n                      srcset:\n                        _vm.generateAvatar(_vm.user.id, 64) +\n                        \" 2x, \" +\n                        _vm.generateAvatar(_vm.user.id, 128) +\n                        \" 4x\"\n                    }\n                  })\n                : _vm._e()\n            ]\n          ),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"name\" }, [_vm._v(_vm._s(_vm.user.id))]),\n          _vm._v(\" \"),\n          _c(\n            \"form\",\n            {\n              staticClass: \"displayName\",\n              class: { \"icon-loading-small\": _vm.loading.displayName },\n              on: {\n                submit: function($event) {\n                  $event.preventDefault()\n                  return _vm.updateDisplayName($event)\n                }\n              }\n            },\n            [\n              _vm.user.backendCapabilities.setDisplayName\n                ? [\n                    _vm.user.backendCapabilities.setDisplayName\n                      ? _c(\"input\", {\n                          ref: \"displayName\",\n                          attrs: {\n                            id: \"displayName\" + _vm.user.id + _vm.rand,\n                            type: \"text\",\n                            disabled:\n                              _vm.loading.displayName || _vm.loading.all,\n                            autocomplete: \"new-password\",\n                            autocorrect: \"off\",\n                            autocapitalize: \"off\",\n                            spellcheck: \"false\"\n                          },\n                          domProps: { value: _vm.user.displayname }\n                        })\n                      : _vm._e(),\n                    _vm._v(\" \"),\n                    _vm.user.backendCapabilities.setDisplayName\n                      ? _c(\"input\", {\n                          staticClass: \"icon-confirm\",\n                          attrs: { type: \"submit\", value: \"\" }\n                        })\n                      : _vm._e()\n                  ]\n                : _c(\n                    \"div\",\n                    {\n                      directives: [\n                        {\n                          name: \"tooltip\",\n                          rawName: \"v-tooltip.auto\",\n                          value: _vm.t(\n                            \"settings\",\n                            \"The backend does not support changing the display name\"\n                          ),\n                          expression:\n                            \"t('settings', 'The backend does not support changing the display name')\",\n                          modifiers: { auto: true }\n                        }\n                      ],\n                      staticClass: \"name\"\n                    },\n                    [_vm._v(_vm._s(_vm.user.displayname))]\n                  )\n            ],\n            2\n          ),\n          _vm._v(\" \"),\n          _vm.settings.canChangePassword &&\n          _vm.user.backendCapabilities.setPassword\n            ? _c(\n                \"form\",\n                {\n                  staticClass: \"password\",\n                  class: { \"icon-loading-small\": _vm.loading.password },\n                  on: {\n                    submit: function($event) {\n                      $event.preventDefault()\n                      return _vm.updatePassword($event)\n                    }\n                  }\n                },\n                [\n                  _c(\"input\", {\n                    ref: \"password\",\n                    attrs: {\n                      id: \"password\" + _vm.user.id + _vm.rand,\n                      type: \"password\",\n                      required: \"\",\n                      disabled: _vm.loading.password || _vm.loading.all,\n                      minlength: _vm.minPasswordLength,\n                      value: \"\",\n                      placeholder: _vm.t(\"settings\", \"New password\"),\n                      autocomplete: \"new-password\",\n                      autocorrect: \"off\",\n                      autocapitalize: \"off\",\n                      spellcheck: \"false\"\n                    }\n                  }),\n                  _vm._v(\" \"),\n                  _c(\"input\", {\n                    staticClass: \"icon-confirm\",\n                    attrs: { type: \"submit\", value: \"\" }\n                  })\n                ]\n              )\n            : _c(\"div\"),\n          _vm._v(\" \"),\n          _c(\n            \"form\",\n            {\n              staticClass: \"mailAddress\",\n              class: { \"icon-loading-small\": _vm.loading.mailAddress },\n              on: {\n                submit: function($event) {\n                  $event.preventDefault()\n                  return _vm.updateEmail($event)\n                }\n              }\n            },\n            [\n              _c(\"input\", {\n                ref: \"mailAddress\",\n                attrs: {\n                  id: \"mailAddress\" + _vm.user.id + _vm.rand,\n                  type: \"email\",\n                  disabled: _vm.loading.mailAddress || _vm.loading.all,\n                  autocomplete: \"new-password\",\n                  autocorrect: \"off\",\n                  autocapitalize: \"off\",\n                  spellcheck: \"false\"\n                },\n                domProps: { value: _vm.user.email }\n              }),\n              _vm._v(\" \"),\n              _c(\"input\", {\n                staticClass: \"icon-confirm\",\n                attrs: { type: \"submit\", value: \"\" }\n              })\n            ]\n          ),\n          _vm._v(\" \"),\n          _c(\n            \"div\",\n            {\n              staticClass: \"groups\",\n              class: { \"icon-loading-small\": _vm.loading.groups }\n            },\n            [\n              _c(\n                \"multiselect\",\n                {\n                  staticClass: \"multiselect-vue\",\n                  attrs: {\n                    value: _vm.userGroups,\n                    options: _vm.availableGroups,\n                    disabled: _vm.loading.groups || _vm.loading.all,\n                    \"tag-placeholder\": \"create\",\n                    placeholder: _vm.t(\"settings\", \"Add user in group\"),\n                    label: \"name\",\n                    \"track-by\": \"id\",\n                    limit: 2,\n                    multiple: true,\n                    taggable: _vm.settings.isAdmin,\n                    closeOnSelect: false,\n                    \"tag-width\": 60\n                  },\n                  on: {\n                    tag: _vm.createGroup,\n                    select: _vm.addUserGroup,\n                    remove: _vm.removeUserGroup\n                  }\n                },\n                [\n                  _c(\n                    \"span\",\n                    {\n                      directives: [\n                        {\n                          name: \"tooltip\",\n                          rawName: \"v-tooltip.auto\",\n                          value: _vm.formatGroupsTitle(_vm.userGroups),\n                          expression: \"formatGroupsTitle(userGroups)\",\n                          modifiers: { auto: true }\n                        }\n                      ],\n                      staticClass: \"multiselect__limit\",\n                      attrs: { slot: \"limit\" },\n                      slot: \"limit\"\n                    },\n                    [_vm._v(\"+\" + _vm._s(_vm.userGroups.length - 2))]\n                  ),\n                  _vm._v(\" \"),\n                  _c(\n                    \"span\",\n                    { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n                    [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))]\n                  )\n                ]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin\n            ? _c(\n                \"div\",\n                {\n                  staticClass: \"subadmins\",\n                  class: { \"icon-loading-small\": _vm.loading.subadmins }\n                },\n                [\n                  _c(\n                    \"multiselect\",\n                    {\n                      staticClass: \"multiselect-vue\",\n                      attrs: {\n                        value: _vm.userSubAdminsGroups,\n                        options: _vm.subAdminsGroups,\n                        disabled: _vm.loading.subadmins || _vm.loading.all,\n                        placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n                        label: \"name\",\n                        \"track-by\": \"id\",\n                        limit: 2,\n                        multiple: true,\n                        closeOnSelect: false,\n                        \"tag-width\": 60\n                      },\n                      on: {\n                        select: _vm.addUserSubAdmin,\n                        remove: _vm.removeUserSubAdmin\n                      }\n                    },\n                    [\n                      _c(\n                        \"span\",\n                        {\n                          directives: [\n                            {\n                              name: \"tooltip\",\n                              rawName: \"v-tooltip.auto\",\n                              value: _vm.formatGroupsTitle(\n                                _vm.userSubAdminsGroups\n                              ),\n                              expression:\n                                \"formatGroupsTitle(userSubAdminsGroups)\",\n                              modifiers: { auto: true }\n                            }\n                          ],\n                          staticClass: \"multiselect__limit\",\n                          attrs: { slot: \"limit\" },\n                          slot: \"limit\"\n                        },\n                        [\n                          _vm._v(\n                            \"+\" + _vm._s(_vm.userSubAdminsGroups.length - 2)\n                          )\n                        ]\n                      ),\n                      _vm._v(\" \"),\n                      _c(\n                        \"span\",\n                        { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n                        [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))]\n                      )\n                    ]\n                  )\n                ],\n                1\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _c(\n            \"div\",\n            {\n              directives: [\n                {\n                  name: \"tooltip\",\n                  rawName: \"v-tooltip.auto\",\n                  value: _vm.usedSpace,\n                  expression: \"usedSpace\",\n                  modifiers: { auto: true }\n                }\n              ],\n              staticClass: \"quota\",\n              class: { \"icon-loading-small\": _vm.loading.quota }\n            },\n            [\n              _c(\"multiselect\", {\n                staticClass: \"multiselect-vue\",\n                attrs: {\n                  value: _vm.userQuota,\n                  options: _vm.quotaOptions,\n                  disabled: _vm.loading.quota || _vm.loading.all,\n                  \"tag-placeholder\": \"create\",\n                  placeholder: _vm.t(\"settings\", \"Select user quota\"),\n                  label: \"label\",\n                  \"track-by\": \"id\",\n                  allowEmpty: false,\n                  taggable: true\n                },\n                on: { tag: _vm.validateQuota, input: _vm.setUserQuota }\n              }),\n              _vm._v(\" \"),\n              _c(\"progress\", {\n                staticClass: \"quota-user-progress\",\n                class: { warn: _vm.usedQuota > 80 },\n                attrs: { max: \"100\" },\n                domProps: { value: _vm.usedQuota }\n              })\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _vm.showConfig.showLanguages\n            ? _c(\n                \"div\",\n                {\n                  staticClass: \"languages\",\n                  class: { \"icon-loading-small\": _vm.loading.languages }\n                },\n                [\n                  _c(\"multiselect\", {\n                    staticClass: \"multiselect-vue\",\n                    attrs: {\n                      value: _vm.userLanguage,\n                      options: _vm.languages,\n                      disabled: _vm.loading.languages || _vm.loading.all,\n                      placeholder: _vm.t(\"settings\", \"No language set\"),\n                      label: \"name\",\n                      \"track-by\": \"code\",\n                      allowEmpty: false,\n                      \"group-values\": \"languages\",\n                      \"group-label\": \"label\"\n                    },\n                    on: { input: _vm.setUserLanguage }\n                  })\n                ],\n                1\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.showConfig.showStoragePath\n            ? _c(\"div\", { staticClass: \"storageLocation\" }, [\n                _vm._v(_vm._s(_vm.user.storageLocation))\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.showConfig.showUserBackend\n            ? _c(\"div\", { staticClass: \"userBackend\" }, [\n                _vm._v(_vm._s(_vm.user.backend))\n              ])\n            : _vm._e(),\n          _vm._v(\" \"),\n          _vm.showConfig.showLastLogin\n            ? _c(\n                \"div\",\n                {\n                  directives: [\n                    {\n                      name: \"tooltip\",\n                      rawName: \"v-tooltip.auto\",\n                      value:\n                        _vm.user.lastLogin > 0\n                          ? _vm.OC.Util.formatDate(_vm.user.lastLogin)\n                          : \"\",\n                      expression:\n                        \"user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''\",\n                      modifiers: { auto: true }\n                    }\n                  ],\n                  staticClass: \"lastLogin\"\n                },\n                [\n                  _vm._v(\n                    \"\\n\\t\\t\" +\n                      _vm._s(\n                        _vm.user.lastLogin > 0\n                          ? _vm.OC.Util.relativeModifiedDate(_vm.user.lastLogin)\n                          : _vm.t(\"settings\", \"Never\")\n                      ) +\n                      \"\\n\\t\"\n                  )\n                ]\n              )\n            : _vm._e(),\n          _vm._v(\" \"),\n          _c(\"div\", { staticClass: \"userActions\" }, [\n            _vm.OC.currentUser !== _vm.user.id &&\n            _vm.user.id !== \"admin\" &&\n            !_vm.loading.all\n              ? _c(\"div\", { staticClass: \"toggleUserActions\" }, [\n                  _c(\"div\", {\n                    directives: [\n                      {\n                        name: \"click-outside\",\n                        rawName: \"v-click-outside\",\n                        value: _vm.hideMenu,\n                        expression: \"hideMenu\"\n                      }\n                    ],\n                    staticClass: \"icon-more\",\n                    on: { click: _vm.toggleMenu }\n                  }),\n                  _vm._v(\" \"),\n                  _c(\n                    \"div\",\n                    {\n                      staticClass: \"popovermenu\",\n                      class: { open: _vm.openedMenu }\n                    },\n                    [_c(\"popover-menu\", { attrs: { menu: _vm.userActions } })],\n                    1\n                  )\n                ])\n              : _vm._e(),\n            _vm._v(\" \"),\n            _c(\n              \"div\",\n              {\n                staticClass: \"feedback\",\n                style: { opacity: _vm.feedbackMessage !== \"\" ? 1 : 0 }\n              },\n              [\n                _c(\"div\", { staticClass: \"icon-checkmark\" }),\n                _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.feedbackMessage) + \"\\n\\t\\t\")\n              ]\n            )\n          ])\n        ]\n      )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"AppContent\",\n    {\n      attrs: {\n        \"app-name\": \"settings\",\n        \"navigation-class\": { \"icon-loading\": _vm.loadingAddGroup }\n      },\n      scopedSlots: _vm._u([\n        {\n          key: \"navigation\",\n          fn: function() {\n            return [\n              _c(\"AppNavigationNew\", {\n                attrs: {\n                  \"button-id\": \"new-user-button\",\n                  text: _vm.t(\"settings\", \"New user\"),\n                  \"button-class\": \"icon-add\"\n                },\n                on: { click: _vm.toggleNewUserMenu }\n              }),\n              _vm._v(\" \"),\n              _c(\n                \"ul\",\n                { attrs: { id: \"usergrouplist\" } },\n                _vm._l(_vm.menu, function(item) {\n                  return _c(\"AppNavigationItem\", {\n                    key: item.key,\n                    attrs: { item: item }\n                  })\n                }),\n                1\n              ),\n              _vm._v(\" \"),\n              _c(\"AppNavigationSettings\", [\n                _c(\n                  \"div\",\n                  [\n                    _c(\"p\", [\n                      _vm._v(_vm._s(_vm.t(\"settings\", \"Default quota:\")))\n                    ]),\n                    _vm._v(\" \"),\n                    _c(\"multiselect\", {\n                      staticClass: \"multiselect-vue\",\n                      attrs: {\n                        value: _vm.defaultQuota,\n                        options: _vm.quotaOptions,\n                        \"tag-placeholder\": \"create\",\n                        placeholder: _vm.t(\"settings\", \"Select default quota\"),\n                        label: \"label\",\n                        \"track-by\": \"id\",\n                        allowEmpty: false,\n                        taggable: true\n                      },\n                      on: { tag: _vm.validateQuota, input: _vm.setDefaultQuota }\n                    })\n                  ],\n                  1\n                ),\n                _vm._v(\" \"),\n                _c(\"div\", [\n                  _c(\"input\", {\n                    directives: [\n                      {\n                        name: \"model\",\n                        rawName: \"v-model\",\n                        value: _vm.showLanguages,\n                        expression: \"showLanguages\"\n                      }\n                    ],\n                    staticClass: \"checkbox\",\n                    attrs: { type: \"checkbox\", id: \"showLanguages\" },\n                    domProps: {\n                      checked: Array.isArray(_vm.showLanguages)\n                        ? _vm._i(_vm.showLanguages, null) > -1\n                        : _vm.showLanguages\n                    },\n                    on: {\n                      change: function($event) {\n                        var $$a = _vm.showLanguages,\n                          $$el = $event.target,\n                          $$c = $$el.checked ? true : false\n                        if (Array.isArray($$a)) {\n                          var $$v = null,\n                            $$i = _vm._i($$a, $$v)\n                          if ($$el.checked) {\n                            $$i < 0 && (_vm.showLanguages = $$a.concat([$$v]))\n                          } else {\n                            $$i > -1 &&\n                              (_vm.showLanguages = $$a\n                                .slice(0, $$i)\n                                .concat($$a.slice($$i + 1)))\n                          }\n                        } else {\n                          _vm.showLanguages = $$c\n                        }\n                      }\n                    }\n                  }),\n                  _vm._v(\" \"),\n                  _c(\"label\", { attrs: { for: \"showLanguages\" } }, [\n                    _vm._v(_vm._s(_vm.t(\"settings\", \"Show Languages\")))\n                  ])\n                ]),\n                _vm._v(\" \"),\n                _c(\"div\", [\n                  _c(\"input\", {\n                    directives: [\n                      {\n                        name: \"model\",\n                        rawName: \"v-model\",\n                        value: _vm.showLastLogin,\n                        expression: \"showLastLogin\"\n                      }\n                    ],\n                    staticClass: \"checkbox\",\n                    attrs: { type: \"checkbox\", id: \"showLastLogin\" },\n                    domProps: {\n                      checked: Array.isArray(_vm.showLastLogin)\n                        ? _vm._i(_vm.showLastLogin, null) > -1\n                        : _vm.showLastLogin\n                    },\n                    on: {\n                      change: function($event) {\n                        var $$a = _vm.showLastLogin,\n                          $$el = $event.target,\n                          $$c = $$el.checked ? true : false\n                        if (Array.isArray($$a)) {\n                          var $$v = null,\n                            $$i = _vm._i($$a, $$v)\n                          if ($$el.checked) {\n                            $$i < 0 && (_vm.showLastLogin = $$a.concat([$$v]))\n                          } else {\n                            $$i > -1 &&\n                              (_vm.showLastLogin = $$a\n                                .slice(0, $$i)\n                                .concat($$a.slice($$i + 1)))\n                          }\n                        } else {\n                          _vm.showLastLogin = $$c\n                        }\n                      }\n                    }\n                  }),\n                  _vm._v(\" \"),\n                  _c(\"label\", { attrs: { for: \"showLastLogin\" } }, [\n                    _vm._v(_vm._s(_vm.t(\"settings\", \"Show last login\")))\n                  ])\n                ]),\n                _vm._v(\" \"),\n                _c(\"div\", [\n                  _c(\"input\", {\n                    directives: [\n                      {\n                        name: \"model\",\n                        rawName: \"v-model\",\n                        value: _vm.showUserBackend,\n                        expression: \"showUserBackend\"\n                      }\n                    ],\n                    staticClass: \"checkbox\",\n                    attrs: { type: \"checkbox\", id: \"showUserBackend\" },\n                    domProps: {\n                      checked: Array.isArray(_vm.showUserBackend)\n                        ? _vm._i(_vm.showUserBackend, null) > -1\n                        : _vm.showUserBackend\n                    },\n                    on: {\n                      change: function($event) {\n                        var $$a = _vm.showUserBackend,\n                          $$el = $event.target,\n                          $$c = $$el.checked ? true : false\n                        if (Array.isArray($$a)) {\n                          var $$v = null,\n                            $$i = _vm._i($$a, $$v)\n                          if ($$el.checked) {\n                            $$i < 0 && (_vm.showUserBackend = $$a.concat([$$v]))\n                          } else {\n                            $$i > -1 &&\n                              (_vm.showUserBackend = $$a\n                                .slice(0, $$i)\n                                .concat($$a.slice($$i + 1)))\n                          }\n                        } else {\n                          _vm.showUserBackend = $$c\n                        }\n                      }\n                    }\n                  }),\n                  _vm._v(\" \"),\n                  _c(\"label\", { attrs: { for: \"showUserBackend\" } }, [\n                    _vm._v(_vm._s(_vm.t(\"settings\", \"Show user backend\")))\n                  ])\n                ]),\n                _vm._v(\" \"),\n                _c(\"div\", [\n                  _c(\"input\", {\n                    directives: [\n                      {\n                        name: \"model\",\n                        rawName: \"v-model\",\n                        value: _vm.showStoragePath,\n                        expression: \"showStoragePath\"\n                      }\n                    ],\n                    staticClass: \"checkbox\",\n                    attrs: { type: \"checkbox\", id: \"showStoragePath\" },\n                    domProps: {\n                      checked: Array.isArray(_vm.showStoragePath)\n                        ? _vm._i(_vm.showStoragePath, null) > -1\n                        : _vm.showStoragePath\n                    },\n                    on: {\n                      change: function($event) {\n                        var $$a = _vm.showStoragePath,\n                          $$el = $event.target,\n                          $$c = $$el.checked ? true : false\n                        if (Array.isArray($$a)) {\n                          var $$v = null,\n                            $$i = _vm._i($$a, $$v)\n                          if ($$el.checked) {\n                            $$i < 0 && (_vm.showStoragePath = $$a.concat([$$v]))\n                          } else {\n                            $$i > -1 &&\n                              (_vm.showStoragePath = $$a\n                                .slice(0, $$i)\n                                .concat($$a.slice($$i + 1)))\n                          }\n                        } else {\n                          _vm.showStoragePath = $$c\n                        }\n                      }\n                    }\n                  }),\n                  _vm._v(\" \"),\n                  _c(\"label\", { attrs: { for: \"showStoragePath\" } }, [\n                    _vm._v(_vm._s(_vm.t(\"settings\", \"Show storage path\")))\n                  ])\n                ])\n              ])\n            ]\n          },\n          proxy: true\n        }\n      ])\n    },\n    [\n      _vm._v(\" \"),\n      _c(\"user-list\", {\n        attrs: {\n          users: _vm.users,\n          showConfig: _vm.showConfig,\n          selectedGroup: _vm.selectedGroup,\n          externalActions: _vm.externalActions\n        },\n        scopedSlots: _vm._u([\n          {\n            key: \"content\",\n            fn: function() {\n              return undefined\n            },\n            proxy: true\n          }\n        ])\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./userList.vue?vue&type=template&id=1347754e&\"\nimport script from \"./userList.vue?vue&type=script&lang=js&\"\nexport * from \"./userList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('1347754e', component.options)\n    } else {\n      api.reload('1347754e', component.options)\n    }\n    module.hot.accept(\"./userList.vue?vue&type=template&id=1347754e&\", function () {\n      api.rerender('1347754e', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"settings/src/components/userList.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userList.vue?vue&type=script&lang=js&\"","export * from \"-!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userList.vue?vue&type=template&id=1347754e&\"","import { render, staticRenderFns } from \"./userRow.vue?vue&type=template&id=5a5e6f59&\"\nimport script from \"./userRow.vue?vue&type=script&lang=js&\"\nexport * from \"./userRow.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('5a5e6f59', component.options)\n    } else {\n      api.reload('5a5e6f59', component.options)\n    }\n    module.hot.accept(\"./userRow.vue?vue&type=template&id=5a5e6f59&\", function () {\n      api.rerender('5a5e6f59', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"settings/src/components/userList/userRow.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userRow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userRow.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userRow.vue?vue&type=template&id=5a5e6f59&\"","import { render, staticRenderFns } from \"./Users.vue?vue&type=template&id=1c24c2fe&\"\nimport script from \"./Users.vue?vue&type=script&lang=js&\"\nexport * from \"./Users.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/home/admin/Docker/server/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!module.hot.data) {\n      api.createRecord('1c24c2fe', component.options)\n    } else {\n      api.reload('1c24c2fe', component.options)\n    }\n    module.hot.accept(\"./Users.vue?vue&type=template&id=1c24c2fe&\", function () {\n      api.rerender('1c24c2fe', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"settings/src/views/Users.vue\"\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"","export * from \"-!../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=template&id=1c24c2fe&\""],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC/bA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACznBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACvdA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AChgBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClRA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;A","sourceRoot":""}
\ No newline at end of file
diff --git a/settings/js/vue-3.js b/settings/js/vue-3.js
deleted file mode 100644 (file)
index 3a0180c..0000000
+++ /dev/null
@@ -1,3267 +0,0 @@
-(window["webpackJsonp"] = window["webpackJsonp"] || []).push([[3],{
-
-/***/ "./node_modules/css-loader/dist/runtime/api.js":
-/*!*****************************************************!*\
-  !*** ./node_modules/css-loader/dist/runtime/api.js ***!
-  \*****************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-/*
-  MIT License http://www.opensource.org/licenses/mit-license.php
-  Author Tobias Koppers @sokra
-*/
-// css base code, injected by the css-loader
-module.exports = function (useSourceMap) {
-  var list = []; // return the list of modules as css string
-
-  list.toString = function toString() {
-    return this.map(function (item) {
-      var content = cssWithMappingToString(item, useSourceMap);
-
-      if (item[2]) {
-        return '@media ' + item[2] + '{' + content + '}';
-      } else {
-        return content;
-      }
-    }).join('');
-  }; // import a list of modules into the list
-
-
-  list.i = function (modules, mediaQuery) {
-    if (typeof modules === 'string') {
-      modules = [[null, modules, '']];
-    }
-
-    var alreadyImportedModules = {};
-
-    for (var i = 0; i < this.length; i++) {
-      var id = this[i][0];
-
-      if (id != null) {
-        alreadyImportedModules[id] = true;
-      }
-    }
-
-    for (i = 0; i < modules.length; i++) {
-      var item = modules[i]; // skip already imported module
-      // this implementation is not 100% perfect for weird media query combinations
-      // when a module is imported multiple times with different media queries.
-      // I hope this will never occur (Hey this way we have smaller bundles)
-
-      if (item[0] == null || !alreadyImportedModules[item[0]]) {
-        if (mediaQuery && !item[2]) {
-          item[2] = mediaQuery;
-        } else if (mediaQuery) {
-          item[2] = '(' + item[2] + ') and (' + mediaQuery + ')';
-        }
-
-        list.push(item);
-      }
-    }
-  };
-
-  return list;
-};
-
-function cssWithMappingToString(item, useSourceMap) {
-  var content = item[1] || '';
-  var cssMapping = item[3];
-
-  if (!cssMapping) {
-    return content;
-  }
-
-  if (useSourceMap && typeof btoa === 'function') {
-    var sourceMapping = toComment(cssMapping);
-    var sourceURLs = cssMapping.sources.map(function (source) {
-      return '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */';
-    });
-    return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
-  }
-
-  return [content].join('\n');
-} // Adapted from convert-source-map (MIT)
-
-
-function toComment(sourceMap) {
-  // eslint-disable-next-line no-undef
-  var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
-  var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
-  return '/*# ' + data + ' */';
-}
-
-/***/ }),
-
-/***/ "./node_modules/dompurify/dist/purify.js":
-/*!***********************************************!*\
-  !*** ./node_modules/dompurify/dist/purify.js ***!
-  \***********************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-(function (global, factory) {
-        true ? module.exports = factory() :
-       undefined;
-}(this, (function () { 'use strict';
-
-var freeze$1 = Object.freeze || function (x) {
-  return x;
-};
-
-var html = freeze$1(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);
-
-// SVG
-var svg = freeze$1(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'audio', 'canvas', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'video', 'view', 'vkern']);
-
-var svgFilters = freeze$1(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);
-
-var mathMl = freeze$1(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);
-
-var text = freeze$1(['#text']);
-
-var freeze$2 = Object.freeze || function (x) {
-  return x;
-};
-
-var html$1 = freeze$2(['accept', 'action', 'align', 'alt', 'autocomplete', 'background', 'bgcolor', 'border', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'coords', 'crossorigin', 'datetime', 'default', 'dir', 'disabled', 'download', 'enctype', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'integrity', 'ismap', 'label', 'lang', 'list', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'multiple', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns']);
-
-var svg$1 = freeze$2(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);
-
-var mathMl$1 = freeze$2(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);
-
-var xml = freeze$2(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);
-
-var hasOwnProperty = Object.hasOwnProperty;
-var setPrototypeOf = Object.setPrototypeOf;
-
-var _ref$1 = typeof Reflect !== 'undefined' && Reflect;
-var apply$1 = _ref$1.apply;
-
-if (!apply$1) {
-  apply$1 = function apply(fun, thisValue, args) {
-    return fun.apply(thisValue, args);
-  };
-}
-
-/* Add properties to a lookup table */
-function addToSet(set, array) {
-  if (setPrototypeOf) {
-    // Make 'in' and truthy checks like Boolean(set.constructor)
-    // independent of any properties defined on Object.prototype.
-    // Prevent prototype setters from intercepting set as a this value.
-    setPrototypeOf(set, null);
-  }
-
-  var l = array.length;
-  while (l--) {
-    var element = array[l];
-    if (typeof element === 'string') {
-      var lcElement = element.toLowerCase();
-      if (lcElement !== element) {
-        // Config presets (e.g. tags.js, attrs.js) are immutable.
-        if (!Object.isFrozen(array)) {
-          array[l] = lcElement;
-        }
-
-        element = lcElement;
-      }
-    }
-
-    set[element] = true;
-  }
-
-  return set;
-}
-
-/* Shallow clone an object */
-function clone(object) {
-  var newObject = {};
-
-  var property = void 0;
-  for (property in object) {
-    if (apply$1(hasOwnProperty, object, [property])) {
-      newObject[property] = object[property];
-    }
-  }
-
-  return newObject;
-}
-
-var seal = Object.seal || function (x) {
-  return x;
-};
-
-var MUSTACHE_EXPR = seal(/\{\{[\s\S]*|[\s\S]*\}\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode
-var ERB_EXPR = seal(/<%[\s\S]*|[\s\S]*%>/gm);
-var DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]/); // eslint-disable-line no-useless-escape
-var ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
-var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
-);
-var IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
-var ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g // eslint-disable-line no-control-regex
-);
-
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
-
-var _ref = typeof Reflect !== 'undefined' && Reflect;
-var apply = _ref.apply;
-
-var arraySlice = Array.prototype.slice;
-var freeze = Object.freeze;
-
-var getGlobal = function getGlobal() {
-  return typeof window === 'undefined' ? null : window;
-};
-
-if (!apply) {
-  apply = function apply(fun, thisValue, args) {
-    return fun.apply(thisValue, args);
-  };
-}
-
-/**
- * Creates a no-op policy for internal use only.
- * Don't export this function outside this module!
- * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.
- * @param {Document} document The document object (to determine policy name suffix)
- * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types
- * are not supported).
- */
-var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {
-  if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {
-    return null;
-  }
-
-  // Allow the callers to control the unique policy name
-  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.
-  // Policy creation with duplicate names throws in Trusted Types.
-  var suffix = null;
-  var ATTR_NAME = 'data-tt-policy-suffix';
-  if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {
-    suffix = document.currentScript.getAttribute(ATTR_NAME);
-  }
-
-  var policyName = 'dompurify' + (suffix ? '#' + suffix : '');
-
-  try {
-    return trustedTypes.createPolicy(policyName, {
-      createHTML: function createHTML(html$$1) {
-        return html$$1;
-      }
-    });
-  } catch (error) {
-    // Policy creation failed (most likely another DOMPurify script has
-    // already run). Skip creating the policy, as this will only cause errors
-    // if TT are enforced.
-    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');
-    return null;
-  }
-};
-
-function createDOMPurify() {
-  var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
-
-  var DOMPurify = function DOMPurify(root) {
-    return createDOMPurify(root);
-  };
-
-  /**
-   * Version label, exposed for easier checks
-   * if DOMPurify is up to date or not
-   */
-  DOMPurify.version = '1.0.10';
-
-  /**
-   * Array of elements that DOMPurify removed during sanitation.
-   * Empty if nothing was removed.
-   */
-  DOMPurify.removed = [];
-
-  if (!window || !window.document || window.document.nodeType !== 9) {
-    // Not running in a browser, provide a factory function
-    // so that you can pass your own Window
-    DOMPurify.isSupported = false;
-
-    return DOMPurify;
-  }
-
-  var originalDocument = window.document;
-  var useDOMParser = false;
-  var removeTitle = false;
-
-  var document = window.document;
-  var DocumentFragment = window.DocumentFragment,
-      HTMLTemplateElement = window.HTMLTemplateElement,
-      Node = window.Node,
-      NodeFilter = window.NodeFilter,
-      _window$NamedNodeMap = window.NamedNodeMap,
-      NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,
-      Text = window.Text,
-      Comment = window.Comment,
-      DOMParser = window.DOMParser,
-      TrustedTypes = window.TrustedTypes;
-
-  // As per issue #47, the web-components registry is inherited by a
-  // new document created via createHTMLDocument. As per the spec
-  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)
-  // a new empty registry is used when creating a template contents owner
-  // document, so we use that as our parent document to ensure nothing
-  // is inherited.
-
-  if (typeof HTMLTemplateElement === 'function') {
-    var template = document.createElement('template');
-    if (template.content && template.content.ownerDocument) {
-      document = template.content.ownerDocument;
-    }
-  }
-
-  var trustedTypesPolicy = _createTrustedTypesPolicy(TrustedTypes, originalDocument);
-  var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';
-
-  var _document = document,
-      implementation = _document.implementation,
-      createNodeIterator = _document.createNodeIterator,
-      getElementsByTagName = _document.getElementsByTagName,
-      createDocumentFragment = _document.createDocumentFragment;
-  var importNode = originalDocument.importNode;
-
-
-  var hooks = {};
-
-  /**
-   * Expose whether this browser supports running the full DOMPurify.
-   */
-  DOMPurify.isSupported = implementation && typeof implementation.createHTMLDocument !== 'undefined' && document.documentMode !== 9;
-
-  var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,
-      ERB_EXPR$$1 = ERB_EXPR,
-      DATA_ATTR$$1 = DATA_ATTR,
-      ARIA_ATTR$$1 = ARIA_ATTR,
-      IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,
-      ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;
-  var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;
-  /**
-   * We consider the elements and attributes below to be safe. Ideally
-   * don't add any new ones but feel free to remove unwanted ones.
-   */
-
-  /* allowed element names */
-
-  var ALLOWED_TAGS = null;
-  var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(svgFilters), _toConsumableArray(mathMl), _toConsumableArray(text)));
-
-  /* Allowed attribute names */
-  var ALLOWED_ATTR = null;
-  var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(mathMl$1), _toConsumableArray(xml)));
-
-  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */
-  var FORBID_TAGS = null;
-
-  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */
-  var FORBID_ATTR = null;
-
-  /* Decide if ARIA attributes are okay */
-  var ALLOW_ARIA_ATTR = true;
-
-  /* Decide if custom data attributes are okay */
-  var ALLOW_DATA_ATTR = true;
-
-  /* Decide if unknown protocols are okay */
-  var ALLOW_UNKNOWN_PROTOCOLS = false;
-
-  /* Output should be safe for jQuery's $() factory? */
-  var SAFE_FOR_JQUERY = false;
-
-  /* Output should be safe for common template engines.
-   * This means, DOMPurify removes data attributes, mustaches and ERB
-   */
-  var SAFE_FOR_TEMPLATES = false;
-
-  /* Decide if document with <html>... should be returned */
-  var WHOLE_DOCUMENT = false;
-
-  /* Track whether config is already set on this instance of DOMPurify. */
-  var SET_CONFIG = false;
-
-  /* Decide if all elements (e.g. style, script) must be children of
-   * document.body. By default, browsers might move them to document.head */
-  var FORCE_BODY = false;
-
-  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html
-   * string (or a TrustedHTML object if Trusted Types are supported).
-   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead
-   */
-  var RETURN_DOM = false;
-
-  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html
-   * string  (or a TrustedHTML object if Trusted Types are supported) */
-  var RETURN_DOM_FRAGMENT = false;
-
-  /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM
-   * `Node` is imported into the current `Document`. If this flag is not enabled the
-   * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by
-   * DOMPurify. */
-  var RETURN_DOM_IMPORT = false;
-
-  /* Output should be free from DOM clobbering attacks? */
-  var SANITIZE_DOM = true;
-
-  /* Keep element content when removing element? */
-  var KEEP_CONTENT = true;
-
-  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead
-   * of importing it into a new Document and returning a sanitized copy */
-  var IN_PLACE = false;
-
-  /* Allow usage of profiles like html, svg and mathMl */
-  var USE_PROFILES = {};
-
-  /* Tags to ignore content of when KEEP_CONTENT is true */
-  var FORBID_CONTENTS = addToSet({}, ['audio', 'head', 'math', 'script', 'style', 'template', 'svg', 'video']);
-
-  /* Tags that are safe for data: URIs */
-  var DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image']);
-
-  /* Attributes safe for values like "javascript:" */
-  var URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'summary', 'title', 'value', 'style', 'xmlns']);
-
-  /* Keep a reference to config to pass to hooks */
-  var CONFIG = null;
-
-  /* Ideally, do not touch anything below this line */
-  /* ______________________________________________ */
-
-  var formElement = document.createElement('form');
-
-  /**
-   * _parseConfig
-   *
-   * @param  {Object} cfg optional config literal
-   */
-  // eslint-disable-next-line complexity
-  var _parseConfig = function _parseConfig(cfg) {
-    if (CONFIG && CONFIG === cfg) {
-      return;
-    }
-
-    /* Shield configuration object from tampering */
-    if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {
-      cfg = {};
-    }
-
-    /* Set configuration parameters */
-    ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;
-    ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;
-    FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};
-    FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};
-    USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;
-    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true
-    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true
-    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false
-    SAFE_FOR_JQUERY = cfg.SAFE_FOR_JQUERY || false; // Default false
-    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false
-    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false
-    RETURN_DOM = cfg.RETURN_DOM || false; // Default false
-    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false
-    RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT || false; // Default false
-    FORCE_BODY = cfg.FORCE_BODY || false; // Default false
-    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true
-    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true
-    IN_PLACE = cfg.IN_PLACE || false; // Default false
-
-    IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;
-
-    if (SAFE_FOR_TEMPLATES) {
-      ALLOW_DATA_ATTR = false;
-    }
-
-    if (RETURN_DOM_FRAGMENT) {
-      RETURN_DOM = true;
-    }
-
-    /* Parse profile info */
-    if (USE_PROFILES) {
-      ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(text)));
-      ALLOWED_ATTR = [];
-      if (USE_PROFILES.html === true) {
-        addToSet(ALLOWED_TAGS, html);
-        addToSet(ALLOWED_ATTR, html$1);
-      }
-
-      if (USE_PROFILES.svg === true) {
-        addToSet(ALLOWED_TAGS, svg);
-        addToSet(ALLOWED_ATTR, svg$1);
-        addToSet(ALLOWED_ATTR, xml);
-      }
-
-      if (USE_PROFILES.svgFilters === true) {
-        addToSet(ALLOWED_TAGS, svgFilters);
-        addToSet(ALLOWED_ATTR, svg$1);
-        addToSet(ALLOWED_ATTR, xml);
-      }
-
-      if (USE_PROFILES.mathMl === true) {
-        addToSet(ALLOWED_TAGS, mathMl);
-        addToSet(ALLOWED_ATTR, mathMl$1);
-        addToSet(ALLOWED_ATTR, xml);
-      }
-    }
-
-    /* Merge configuration parameters */
-    if (cfg.ADD_TAGS) {
-      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
-        ALLOWED_TAGS = clone(ALLOWED_TAGS);
-      }
-
-      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);
-    }
-
-    if (cfg.ADD_ATTR) {
-      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {
-        ALLOWED_ATTR = clone(ALLOWED_ATTR);
-      }
-
-      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);
-    }
-
-    if (cfg.ADD_URI_SAFE_ATTR) {
-      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);
-    }
-
-    /* Add #text in case KEEP_CONTENT is set to true */
-    if (KEEP_CONTENT) {
-      ALLOWED_TAGS['#text'] = true;
-    }
-
-    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */
-    if (WHOLE_DOCUMENT) {
-      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);
-    }
-
-    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286 */
-    if (ALLOWED_TAGS.table) {
-      addToSet(ALLOWED_TAGS, ['tbody']);
-    }
-
-    // Prevent further manipulation of configuration.
-    // Not available in IE8, Safari 5, etc.
-    if (freeze) {
-      freeze(cfg);
-    }
-
-    CONFIG = cfg;
-  };
-
-  /**
-   * _forceRemove
-   *
-   * @param  {Node} node a DOM node
-   */
-  var _forceRemove = function _forceRemove(node) {
-    DOMPurify.removed.push({ element: node });
-    try {
-      node.parentNode.removeChild(node);
-    } catch (error) {
-      node.outerHTML = emptyHTML;
-    }
-  };
-
-  /**
-   * _removeAttribute
-   *
-   * @param  {String} name an Attribute name
-   * @param  {Node} node a DOM node
-   */
-  var _removeAttribute = function _removeAttribute(name, node) {
-    try {
-      DOMPurify.removed.push({
-        attribute: node.getAttributeNode(name),
-        from: node
-      });
-    } catch (error) {
-      DOMPurify.removed.push({
-        attribute: null,
-        from: node
-      });
-    }
-
-    node.removeAttribute(name);
-  };
-
-  /**
-   * _initDocument
-   *
-   * @param  {String} dirty a string of dirty markup
-   * @return {Document} a DOM, filled with the dirty markup
-   */
-  var _initDocument = function _initDocument(dirty) {
-    /* Create a HTML document */
-    var doc = void 0;
-    var leadingWhitespace = void 0;
-
-    if (FORCE_BODY) {
-      dirty = '<remove></remove>' + dirty;
-    } else {
-      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */
-      var matches = dirty.match(/^[\s]+/);
-      leadingWhitespace = matches && matches[0];
-      if (leadingWhitespace) {
-        dirty = dirty.slice(leadingWhitespace.length);
-      }
-    }
-
-    /* Use DOMParser to workaround Firefox bug (see comment below) */
-    if (useDOMParser) {
-      try {
-        doc = new DOMParser().parseFromString(dirty, 'text/html');
-      } catch (error) {}
-    }
-
-    /* Remove title to fix a mXSS bug in older MS Edge */
-    if (removeTitle) {
-      addToSet(FORBID_TAGS, ['title']);
-    }
-
-    /* Otherwise use createHTMLDocument, because DOMParser is unsafe in
-    Safari (see comment below) */
-    if (!doc || !doc.documentElement) {
-      doc = implementation.createHTMLDocument('');
-      var _doc = doc,
-          body = _doc.body;
-
-      body.parentNode.removeChild(body.parentNode.firstElementChild);
-      body.outerHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
-    }
-
-    if (leadingWhitespace) {
-      doc.body.insertBefore(document.createTextNode(leadingWhitespace), doc.body.childNodes[0] || null);
-    }
-
-    /* Work on whole document or just its body */
-    return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];
-  };
-
-  // Firefox uses a different parser for innerHTML rather than
-  // DOMParser (see https://bugzilla.mozilla.org/show_bug.cgi?id=1205631)
-  // which means that you *must* use DOMParser, otherwise the output may
-  // not be safe if used in a document.write context later.
-  //
-  // So we feature detect the Firefox bug and use the DOMParser if necessary.
-  //
-  // MS Edge, in older versions, is affected by an mXSS behavior. The second
-  // check tests for the behavior and fixes it if necessary.
-  if (DOMPurify.isSupported) {
-    (function () {
-      try {
-        var doc = _initDocument('<svg><p><style><img src="</style><img src=x onerror=1//">');
-        if (doc.querySelector('svg img')) {
-          useDOMParser = true;
-        }
-      } catch (error) {}
-    })();
-
-    (function () {
-      try {
-        var doc = _initDocument('<x/><title>&lt;/title&gt;&lt;img&gt;');
-        if (doc.querySelector('title').innerHTML.match(/<\/title/)) {
-          removeTitle = true;
-        }
-      } catch (error) {}
-    })();
-  }
-
-  /**
-   * _createIterator
-   *
-   * @param  {Document} root document/fragment to create iterator for
-   * @return {Iterator} iterator instance
-   */
-  var _createIterator = function _createIterator(root) {
-    return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, function () {
-      return NodeFilter.FILTER_ACCEPT;
-    }, false);
-  };
-
-  /**
-   * _isClobbered
-   *
-   * @param  {Node} elm element to check for clobbering attacks
-   * @return {Boolean} true if clobbered, false if safe
-   */
-  var _isClobbered = function _isClobbered(elm) {
-    if (elm instanceof Text || elm instanceof Comment) {
-      return false;
-    }
-
-    if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function') {
-      return true;
-    }
-
-    return false;
-  };
-
-  /**
-   * _isNode
-   *
-   * @param  {Node} obj object to check whether it's a DOM node
-   * @return {Boolean} true is object is a DOM node
-   */
-  var _isNode = function _isNode(obj) {
-    return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? obj instanceof Node : obj && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string';
-  };
-
-  /**
-   * _executeHook
-   * Execute user configurable hooks
-   *
-   * @param  {String} entryPoint  Name of the hook's entry point
-   * @param  {Node} currentNode node to work on with the hook
-   * @param  {Object} data additional hook parameters
-   */
-  var _executeHook = function _executeHook(entryPoint, currentNode, data) {
-    if (!hooks[entryPoint]) {
-      return;
-    }
-
-    hooks[entryPoint].forEach(function (hook) {
-      hook.call(DOMPurify, currentNode, data, CONFIG);
-    });
-  };
-
-  /**
-   * _sanitizeElements
-   *
-   * @protect nodeName
-   * @protect textContent
-   * @protect removeChild
-   *
-   * @param   {Node} currentNode to check for permission to exist
-   * @return  {Boolean} true if node was killed, false if left alive
-   */
-  // eslint-disable-next-line complexity
-  var _sanitizeElements = function _sanitizeElements(currentNode) {
-    var content = void 0;
-
-    /* Execute a hook if present */
-    _executeHook('beforeSanitizeElements', currentNode, null);
-
-    /* Check if element is clobbered or can clobber */
-    if (_isClobbered(currentNode)) {
-      _forceRemove(currentNode);
-      return true;
-    }
-
-    /* Now let's check the element's type and name */
-    var tagName = currentNode.nodeName.toLowerCase();
-
-    /* Execute a hook if present */
-    _executeHook('uponSanitizeElement', currentNode, {
-      tagName: tagName,
-      allowedTags: ALLOWED_TAGS
-    });
-
-    /* Remove element if anything forbids its presence */
-    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {
-      /* Keep content except for black-listed elements */
-      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && typeof currentNode.insertAdjacentHTML === 'function') {
-        try {
-          var htmlToInsert = currentNode.innerHTML;
-          currentNode.insertAdjacentHTML('AfterEnd', trustedTypesPolicy ? trustedTypesPolicy.createHTML(htmlToInsert) : htmlToInsert);
-        } catch (error) {}
-      }
-
-      _forceRemove(currentNode);
-      return true;
-    }
-
-    /* Remove in case a noscript/noembed XSS is suspected */
-    if (tagName === 'noscript' && currentNode.innerHTML.match(/<\/noscript/i)) {
-      _forceRemove(currentNode);
-      return true;
-    }
-
-    if (tagName === 'noembed' && currentNode.innerHTML.match(/<\/noembed/i)) {
-      _forceRemove(currentNode);
-      return true;
-    }
-
-    /* Convert markup to cover jQuery behavior */
-    if (SAFE_FOR_JQUERY && !currentNode.firstElementChild && (!currentNode.content || !currentNode.content.firstElementChild) && /</g.test(currentNode.textContent)) {
-      DOMPurify.removed.push({ element: currentNode.cloneNode() });
-      if (currentNode.innerHTML) {
-        currentNode.innerHTML = currentNode.innerHTML.replace(/</g, '&lt;');
-      } else {
-        currentNode.innerHTML = currentNode.textContent.replace(/</g, '&lt;');
-      }
-    }
-
-    /* Sanitize element content to be template-safe */
-    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {
-      /* Get the element's text content */
-      content = currentNode.textContent;
-      content = content.replace(MUSTACHE_EXPR$$1, ' ');
-      content = content.replace(ERB_EXPR$$1, ' ');
-      if (currentNode.textContent !== content) {
-        DOMPurify.removed.push({ element: currentNode.cloneNode() });
-        currentNode.textContent = content;
-      }
-    }
-
-    /* Execute a hook if present */
-    _executeHook('afterSanitizeElements', currentNode, null);
-
-    return false;
-  };
-
-  /**
-   * _isValidAttribute
-   *
-   * @param  {string} lcTag Lowercase tag name of containing element.
-   * @param  {string} lcName Lowercase attribute name.
-   * @param  {string} value Attribute value.
-   * @return {Boolean} Returns true if `value` is valid, otherwise false.
-   */
-  // eslint-disable-next-line complexity
-  var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {
-    /* Make sure attribute cannot clobber */
-    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {
-      return false;
-    }
-
-    /* Allow valid data-* attributes: At least one character after "-"
-        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)
-        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)
-        We don't need to check the value; it's always URI safe. */
-    if (ALLOW_DATA_ATTR && DATA_ATTR$$1.test(lcName)) {
-      // This attribute is safe
-    } else if (ALLOW_ARIA_ATTR && ARIA_ATTR$$1.test(lcName)) {
-      // This attribute is safe
-      /* Otherwise, check the name is permitted */
-    } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {
-      return false;
-
-      /* Check value is safe. First, is attr inert? If so, is safe */
-    } else if (URI_SAFE_ATTRIBUTES[lcName]) {
-      // This attribute is safe
-      /* Check no script, data or unknown possibly unsafe URI
-        unless we know URI values are safe for that attribute */
-    } else if (IS_ALLOWED_URI$$1.test(value.replace(ATTR_WHITESPACE$$1, ''))) {
-      // This attribute is safe
-      /* Keep image data URIs alive if src/xlink:href is allowed */
-      /* Further prevent gadget XSS for dynamically built script tags */
-    } else if ((lcName === 'src' || lcName === 'xlink:href') && lcTag !== 'script' && value.indexOf('data:') === 0 && DATA_URI_TAGS[lcTag]) {
-      // This attribute is safe
-      /* Allow unknown protocols: This provides support for links that
-        are handled by protocol handlers which may be unknown ahead of
-        time, e.g. fb:, spotify: */
-    } else if (ALLOW_UNKNOWN_PROTOCOLS && !IS_SCRIPT_OR_DATA$$1.test(value.replace(ATTR_WHITESPACE$$1, ''))) {
-      // This attribute is safe
-      /* Check for binary attributes */
-      // eslint-disable-next-line no-negated-condition
-    } else if (!value) {
-      // Binary attributes are safe at this point
-      /* Anything else, presume unsafe, do not add it back */
-    } else {
-      return false;
-    }
-
-    return true;
-  };
-
-  /**
-   * _sanitizeAttributes
-   *
-   * @protect attributes
-   * @protect nodeName
-   * @protect removeAttribute
-   * @protect setAttribute
-   *
-   * @param  {Node} currentNode to sanitize
-   */
-  var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {
-    var attr = void 0;
-    var value = void 0;
-    var lcName = void 0;
-    var idAttr = void 0;
-    var l = void 0;
-    /* Execute a hook if present */
-    _executeHook('beforeSanitizeAttributes', currentNode, null);
-
-    var attributes = currentNode.attributes;
-
-    /* Check if we have attributes; if not we might have a text node */
-
-    if (!attributes) {
-      return;
-    }
-
-    var hookEvent = {
-      attrName: '',
-      attrValue: '',
-      keepAttr: true,
-      allowedAttributes: ALLOWED_ATTR
-    };
-    l = attributes.length;
-
-    /* Go backwards over all attributes; safely remove bad ones */
-    while (l--) {
-      attr = attributes[l];
-      var _attr = attr,
-          name = _attr.name,
-          namespaceURI = _attr.namespaceURI;
-
-      value = attr.value.trim();
-      lcName = name.toLowerCase();
-
-      /* Execute a hook if present */
-      hookEvent.attrName = lcName;
-      hookEvent.attrValue = value;
-      hookEvent.keepAttr = true;
-      _executeHook('uponSanitizeAttribute', currentNode, hookEvent);
-      value = hookEvent.attrValue;
-
-      /* Remove attribute */
-      // Safari (iOS + Mac), last tested v8.0.5, crashes if you try to
-      // remove a "name" attribute from an <img> tag that has an "id"
-      // attribute at the time.
-      if (lcName === 'name' && currentNode.nodeName === 'IMG' && attributes.id) {
-        idAttr = attributes.id;
-        attributes = apply(arraySlice, attributes, []);
-        _removeAttribute('id', currentNode);
-        _removeAttribute(name, currentNode);
-        if (attributes.indexOf(idAttr) > l) {
-          currentNode.setAttribute('id', idAttr.value);
-        }
-      } else if (
-      // This works around a bug in Safari, where input[type=file]
-      // cannot be dynamically set after type has been removed
-      currentNode.nodeName === 'INPUT' && lcName === 'type' && value === 'file' && (ALLOWED_ATTR[lcName] || !FORBID_ATTR[lcName])) {
-        continue;
-      } else {
-        // This avoids a crash in Safari v9.0 with double-ids.
-        // The trick is to first set the id to be empty and then to
-        // remove the attribute
-        if (name === 'id') {
-          currentNode.setAttribute(name, '');
-        }
-
-        _removeAttribute(name, currentNode);
-      }
-
-      /* Did the hooks approve of the attribute? */
-      if (!hookEvent.keepAttr) {
-        continue;
-      }
-
-      /* Sanitize attribute content to be template-safe */
-      if (SAFE_FOR_TEMPLATES) {
-        value = value.replace(MUSTACHE_EXPR$$1, ' ');
-        value = value.replace(ERB_EXPR$$1, ' ');
-      }
-
-      /* Is `value` valid for this attribute? */
-      var lcTag = currentNode.nodeName.toLowerCase();
-      if (!_isValidAttribute(lcTag, lcName, value)) {
-        continue;
-      }
-
-      /* Handle invalid data-* attribute set by try-catching it */
-      try {
-        if (namespaceURI) {
-          currentNode.setAttributeNS(namespaceURI, name, value);
-        } else {
-          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
-          currentNode.setAttribute(name, value);
-        }
-
-        DOMPurify.removed.pop();
-      } catch (error) {}
-    }
-
-    /* Execute a hook if present */
-    _executeHook('afterSanitizeAttributes', currentNode, null);
-  };
-
-  /**
-   * _sanitizeShadowDOM
-   *
-   * @param  {DocumentFragment} fragment to iterate over recursively
-   */
-  var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {
-    var shadowNode = void 0;
-    var shadowIterator = _createIterator(fragment);
-
-    /* Execute a hook if present */
-    _executeHook('beforeSanitizeShadowDOM', fragment, null);
-
-    while (shadowNode = shadowIterator.nextNode()) {
-      /* Execute a hook if present */
-      _executeHook('uponSanitizeShadowNode', shadowNode, null);
-
-      /* Sanitize tags and elements */
-      if (_sanitizeElements(shadowNode)) {
-        continue;
-      }
-
-      /* Deep shadow DOM detected */
-      if (shadowNode.content instanceof DocumentFragment) {
-        _sanitizeShadowDOM(shadowNode.content);
-      }
-
-      /* Check attributes, sanitize if necessary */
-      _sanitizeAttributes(shadowNode);
-    }
-
-    /* Execute a hook if present */
-    _executeHook('afterSanitizeShadowDOM', fragment, null);
-  };
-
-  /**
-   * Sanitize
-   * Public method providing core sanitation functionality
-   *
-   * @param {String|Node} dirty string or DOM node
-   * @param {Object} configuration object
-   */
-  // eslint-disable-next-line complexity
-  DOMPurify.sanitize = function (dirty, cfg) {
-    var body = void 0;
-    var importedNode = void 0;
-    var currentNode = void 0;
-    var oldNode = void 0;
-    var returnNode = void 0;
-    /* Make sure we have a string to sanitize.
-      DO NOT return early, as this will return the wrong type if
-      the user has requested a DOM object rather than a string */
-    if (!dirty) {
-      dirty = '<!-->';
-    }
-
-    /* Stringify, in case dirty is an object */
-    if (typeof dirty !== 'string' && !_isNode(dirty)) {
-      // eslint-disable-next-line no-negated-condition
-      if (typeof dirty.toString !== 'function') {
-        throw new TypeError('toString is not a function');
-      } else {
-        dirty = dirty.toString();
-        if (typeof dirty !== 'string') {
-          throw new TypeError('dirty is not a string, aborting');
-        }
-      }
-    }
-
-    /* Check we can run. Otherwise fall back or ignore */
-    if (!DOMPurify.isSupported) {
-      if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {
-        if (typeof dirty === 'string') {
-          return window.toStaticHTML(dirty);
-        }
-
-        if (_isNode(dirty)) {
-          return window.toStaticHTML(dirty.outerHTML);
-        }
-      }
-
-      return dirty;
-    }
-
-    /* Assign config vars */
-    if (!SET_CONFIG) {
-      _parseConfig(cfg);
-    }
-
-    /* Clean up removed elements */
-    DOMPurify.removed = [];
-
-    if (IN_PLACE) {
-      /* No special handling necessary for in-place sanitization */
-    } else if (dirty instanceof Node) {
-      /* If dirty is a DOM element, append to an empty document to avoid
-         elements being stripped by the parser */
-      body = _initDocument('<!-->');
-      importedNode = body.ownerDocument.importNode(dirty, true);
-      if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {
-        /* Node is already a body, use as is */
-        body = importedNode;
-      } else {
-        // eslint-disable-next-line unicorn/prefer-node-append
-        body.appendChild(importedNode);
-      }
-    } else {
-      /* Exit directly if we have nothing to do */
-      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf('<') === -1) {
-        return trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;
-      }
-
-      /* Initialize the document to work on */
-      body = _initDocument(dirty);
-
-      /* Check we have a DOM node from the data */
-      if (!body) {
-        return RETURN_DOM ? null : emptyHTML;
-      }
-    }
-
-    /* Remove first element node (ours) if FORCE_BODY is set */
-    if (body && FORCE_BODY) {
-      _forceRemove(body.firstChild);
-    }
-
-    /* Get node iterator */
-    var nodeIterator = _createIterator(IN_PLACE ? dirty : body);
-
-    /* Now start iterating over the created document */
-    while (currentNode = nodeIterator.nextNode()) {
-      /* Fix IE's strange behavior with manipulated textNodes #89 */
-      if (currentNode.nodeType === 3 && currentNode === oldNode) {
-        continue;
-      }
-
-      /* Sanitize tags and elements */
-      if (_sanitizeElements(currentNode)) {
-        continue;
-      }
-
-      /* Shadow DOM detected, sanitize it */
-      if (currentNode.content instanceof DocumentFragment) {
-        _sanitizeShadowDOM(currentNode.content);
-      }
-
-      /* Check attributes, sanitize if necessary */
-      _sanitizeAttributes(currentNode);
-
-      oldNode = currentNode;
-    }
-
-    oldNode = null;
-
-    /* If we sanitized `dirty` in-place, return it. */
-    if (IN_PLACE) {
-      return dirty;
-    }
-
-    /* Return sanitized string or DOM */
-    if (RETURN_DOM) {
-      if (RETURN_DOM_FRAGMENT) {
-        returnNode = createDocumentFragment.call(body.ownerDocument);
-
-        while (body.firstChild) {
-          // eslint-disable-next-line unicorn/prefer-node-append
-          returnNode.appendChild(body.firstChild);
-        }
-      } else {
-        returnNode = body;
-      }
-
-      if (RETURN_DOM_IMPORT) {
-        /* AdoptNode() is not used because internal state is not reset
-               (e.g. the past names map of a HTMLFormElement), this is safe
-               in theory but we would rather not risk another attack vector.
-               The state that is cloned by importNode() is explicitly defined
-               by the specs. */
-        returnNode = importNode.call(originalDocument, returnNode, true);
-      }
-
-      return returnNode;
-    }
-
-    var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;
-
-    /* Sanitize final string template-safe */
-    if (SAFE_FOR_TEMPLATES) {
-      serializedHTML = serializedHTML.replace(MUSTACHE_EXPR$$1, ' ');
-      serializedHTML = serializedHTML.replace(ERB_EXPR$$1, ' ');
-    }
-
-    return trustedTypesPolicy ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;
-  };
-
-  /**
-   * Public method to set the configuration once
-   * setConfig
-   *
-   * @param {Object} cfg configuration object
-   */
-  DOMPurify.setConfig = function (cfg) {
-    _parseConfig(cfg);
-    SET_CONFIG = true;
-  };
-
-  /**
-   * Public method to remove the configuration
-   * clearConfig
-   *
-   */
-  DOMPurify.clearConfig = function () {
-    CONFIG = null;
-    SET_CONFIG = false;
-  };
-
-  /**
-   * Public method to check if an attribute value is valid.
-   * Uses last set config, if any. Otherwise, uses config defaults.
-   * isValidAttribute
-   *
-   * @param  {string} tag Tag name of containing element.
-   * @param  {string} attr Attribute name.
-   * @param  {string} value Attribute value.
-   * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.
-   */
-  DOMPurify.isValidAttribute = function (tag, attr, value) {
-    /* Initialize shared config vars if necessary. */
-    if (!CONFIG) {
-      _parseConfig({});
-    }
-
-    var lcTag = tag.toLowerCase();
-    var lcName = attr.toLowerCase();
-    return _isValidAttribute(lcTag, lcName, value);
-  };
-
-  /**
-   * AddHook
-   * Public method to add DOMPurify hooks
-   *
-   * @param {String} entryPoint entry point for the hook to add
-   * @param {Function} hookFunction function to execute
-   */
-  DOMPurify.addHook = function (entryPoint, hookFunction) {
-    if (typeof hookFunction !== 'function') {
-      return;
-    }
-
-    hooks[entryPoint] = hooks[entryPoint] || [];
-    hooks[entryPoint].push(hookFunction);
-  };
-
-  /**
-   * RemoveHook
-   * Public method to remove a DOMPurify hook at a given entryPoint
-   * (pops it from the stack of hooks if more are present)
-   *
-   * @param {String} entryPoint entry point for the hook to remove
-   */
-  DOMPurify.removeHook = function (entryPoint) {
-    if (hooks[entryPoint]) {
-      hooks[entryPoint].pop();
-    }
-  };
-
-  /**
-   * RemoveHooks
-   * Public method to remove all DOMPurify hooks at a given entryPoint
-   *
-   * @param  {String} entryPoint entry point for the hooks to remove
-   */
-  DOMPurify.removeHooks = function (entryPoint) {
-    if (hooks[entryPoint]) {
-      hooks[entryPoint] = [];
-    }
-  };
-
-  /**
-   * RemoveAllHooks
-   * Public method to remove all DOMPurify hooks
-   *
-   */
-  DOMPurify.removeAllHooks = function () {
-    hooks = {};
-  };
-
-  return DOMPurify;
-}
-
-var purify = createDOMPurify();
-
-return purify;
-
-})));
-//# sourceMappingURL=purify.js.map
-
-
-/***/ }),
-
-/***/ "./node_modules/marked/lib/marked.js":
-/*!*******************************************!*\
-  !*** ./node_modules/marked/lib/marked.js ***!
-  \*******************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-/* WEBPACK VAR INJECTION */(function(global) {/**
- * marked - a markdown parser
- * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT Licensed)
- * https://github.com/markedjs/marked
- */
-
-;(function(root) {
-'use strict';
-
-/**
- * Block-Level Grammar
- */
-
-var block = {
-  newline: /^\n+/,
-  code: /^( {4}[^\n]+\n*)+/,
-  fences: noop,
-  hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,
-  heading: /^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,
-  nptable: noop,
-  blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
-  list: /^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
-  html: '^ {0,3}(?:' // optional indentation
-    + '<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)' // (1)
-    + '|comment[^\\n]*(\\n+|$)' // (2)
-    + '|<\\?[\\s\\S]*?\\?>\\n*' // (3)
-    + '|<![A-Z][\\s\\S]*?>\\n*' // (4)
-    + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*' // (5)
-    + '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)' // (6)
-    + '|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) open tag
-    + '|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) closing tag
-    + ')',
-  def: /^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,
-  table: noop,
-  lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,
-  paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,
-  text: /^[^\n]+/
-};
-
-block._label = /(?!\s*\])(?:\\[\[\]]|[^\[\]])+/;
-block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
-block.def = edit(block.def)
-  .replace('label', block._label)
-  .replace('title', block._title)
-  .getRegex();
-
-block.bullet = /(?:[*+-]|\d{1,9}\.)/;
-block.item = /^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/;
-block.item = edit(block.item, 'gm')
-  .replace(/bull/g, block.bullet)
-  .getRegex();
-
-block.list = edit(block.list)
-  .replace(/bull/g, block.bullet)
-  .replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))')
-  .replace('def', '\\n+(?=' + block.def.source + ')')
-  .getRegex();
-
-block._tag = 'address|article|aside|base|basefont|blockquote|body|caption'
-  + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'
-  + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'
-  + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'
-  + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'
-  + '|track|ul';
-block._comment = /<!--(?!-?>)[\s\S]*?-->/;
-block.html = edit(block.html, 'i')
-  .replace('comment', block._comment)
-  .replace('tag', block._tag)
-  .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/)
-  .getRegex();
-
-block.paragraph = edit(block.paragraph)
-  .replace('hr', block.hr)
-  .replace('heading', block.heading)
-  .replace('lheading', block.lheading)
-  .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
-  .getRegex();
-
-block.blockquote = edit(block.blockquote)
-  .replace('paragraph', block.paragraph)
-  .getRegex();
-
-/**
- * Normal Block Grammar
- */
-
-block.normal = merge({}, block);
-
-/**
- * GFM Block Grammar
- */
-
-block.gfm = merge({}, block.normal, {
-  fences: /^ {0,3}(`{3,}|~{3,})([^`\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,
-  paragraph: /^/,
-  heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/
-});
-
-block.gfm.paragraph = edit(block.paragraph)
-  .replace('(?!', '(?!'
-    + block.gfm.fences.source.replace('\\1', '\\2') + '|'
-    + block.list.source.replace('\\1', '\\3') + '|')
-  .getRegex();
-
-/**
- * GFM + Tables Block Grammar
- */
-
-block.tables = merge({}, block.gfm, {
-  nptable: /^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,
-  table: /^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/
-});
-
-/**
- * Pedantic grammar
- */
-
-block.pedantic = merge({}, block.normal, {
-  html: edit(
-    '^ *(?:comment *(?:\\n|\\s*$)'
-    + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
-    + '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))')
-    .replace('comment', block._comment)
-    .replace(/tag/g, '(?!(?:'
-      + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'
-      + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'
-      + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b')
-    .getRegex(),
-  def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/
-});
-
-/**
- * Block Lexer
- */
-
-function Lexer(options) {
-  this.tokens = [];
-  this.tokens.links = Object.create(null);
-  this.options = options || marked.defaults;
-  this.rules = block.normal;
-
-  if (this.options.pedantic) {
-    this.rules = block.pedantic;
-  } else if (this.options.gfm) {
-    if (this.options.tables) {
-      this.rules = block.tables;
-    } else {
-      this.rules = block.gfm;
-    }
-  }
-}
-
-/**
- * Expose Block Rules
- */
-
-Lexer.rules = block;
-
-/**
- * Static Lex Method
- */
-
-Lexer.lex = function(src, options) {
-  var lexer = new Lexer(options);
-  return lexer.lex(src);
-};
-
-/**
- * Preprocessing
- */
-
-Lexer.prototype.lex = function(src) {
-  src = src
-    .replace(/\r\n|\r/g, '\n')
-    .replace(/\t/g, '    ')
-    .replace(/\u00a0/g, ' ')
-    .replace(/\u2424/g, '\n');
-
-  return this.token(src, true);
-};
-
-/**
- * Lexing
- */
-
-Lexer.prototype.token = function(src, top) {
-  src = src.replace(/^ +$/gm, '');
-  var next,
-      loose,
-      cap,
-      bull,
-      b,
-      item,
-      listStart,
-      listItems,
-      t,
-      space,
-      i,
-      tag,
-      l,
-      isordered,
-      istask,
-      ischecked;
-
-  while (src) {
-    // newline
-    if (cap = this.rules.newline.exec(src)) {
-      src = src.substring(cap[0].length);
-      if (cap[0].length > 1) {
-        this.tokens.push({
-          type: 'space'
-        });
-      }
-    }
-
-    // code
-    if (cap = this.rules.code.exec(src)) {
-      src = src.substring(cap[0].length);
-      cap = cap[0].replace(/^ {4}/gm, '');
-      this.tokens.push({
-        type: 'code',
-        text: !this.options.pedantic
-          ? rtrim(cap, '\n')
-          : cap
-      });
-      continue;
-    }
-
-    // fences (gfm)
-    if (cap = this.rules.fences.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'code',
-        lang: cap[2] ? cap[2].trim() : cap[2],
-        text: cap[3] || ''
-      });
-      continue;
-    }
-
-    // heading
-    if (cap = this.rules.heading.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'heading',
-        depth: cap[1].length,
-        text: cap[2]
-      });
-      continue;
-    }
-
-    // table no leading pipe (gfm)
-    if (top && (cap = this.rules.nptable.exec(src))) {
-      item = {
-        type: 'table',
-        header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
-        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
-        cells: cap[3] ? cap[3].replace(/\n$/, '').split('\n') : []
-      };
-
-      if (item.header.length === item.align.length) {
-        src = src.substring(cap[0].length);
-
-        for (i = 0; i < item.align.length; i++) {
-          if (/^ *-+: *$/.test(item.align[i])) {
-            item.align[i] = 'right';
-          } else if (/^ *:-+: *$/.test(item.align[i])) {
-            item.align[i] = 'center';
-          } else if (/^ *:-+ *$/.test(item.align[i])) {
-            item.align[i] = 'left';
-          } else {
-            item.align[i] = null;
-          }
-        }
-
-        for (i = 0; i < item.cells.length; i++) {
-          item.cells[i] = splitCells(item.cells[i], item.header.length);
-        }
-
-        this.tokens.push(item);
-
-        continue;
-      }
-    }
-
-    // hr
-    if (cap = this.rules.hr.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'hr'
-      });
-      continue;
-    }
-
-    // blockquote
-    if (cap = this.rules.blockquote.exec(src)) {
-      src = src.substring(cap[0].length);
-
-      this.tokens.push({
-        type: 'blockquote_start'
-      });
-
-      cap = cap[0].replace(/^ *> ?/gm, '');
-
-      // Pass `top` to keep the current
-      // "toplevel" state. This is exactly
-      // how markdown.pl works.
-      this.token(cap, top);
-
-      this.tokens.push({
-        type: 'blockquote_end'
-      });
-
-      continue;
-    }
-
-    // list
-    if (cap = this.rules.list.exec(src)) {
-      src = src.substring(cap[0].length);
-      bull = cap[2];
-      isordered = bull.length > 1;
-
-      listStart = {
-        type: 'list_start',
-        ordered: isordered,
-        start: isordered ? +bull : '',
-        loose: false
-      };
-
-      this.tokens.push(listStart);
-
-      // Get each top-level item.
-      cap = cap[0].match(this.rules.item);
-
-      listItems = [];
-      next = false;
-      l = cap.length;
-      i = 0;
-
-      for (; i < l; i++) {
-        item = cap[i];
-
-        // Remove the list item's bullet
-        // so it is seen as the next token.
-        space = item.length;
-        item = item.replace(/^ *([*+-]|\d+\.) */, '');
-
-        // Outdent whatever the
-        // list item contains. Hacky.
-        if (~item.indexOf('\n ')) {
-          space -= item.length;
-          item = !this.options.pedantic
-            ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
-            : item.replace(/^ {1,4}/gm, '');
-        }
-
-        // Determine whether the next list item belongs here.
-        // Backpedal if it does not belong in this list.
-        if (i !== l - 1) {
-          b = block.bullet.exec(cap[i + 1])[0];
-          if (bull.length > 1 ? b.length === 1
-            : (b.length > 1 || (this.options.smartLists && b !== bull))) {
-            src = cap.slice(i + 1).join('\n') + src;
-            i = l - 1;
-          }
-        }
-
-        // Determine whether item is loose or not.
-        // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
-        // for discount behavior.
-        loose = next || /\n\n(?!\s*$)/.test(item);
-        if (i !== l - 1) {
-          next = item.charAt(item.length - 1) === '\n';
-          if (!loose) loose = next;
-        }
-
-        if (loose) {
-          listStart.loose = true;
-        }
-
-        // Check for task list items
-        istask = /^\[[ xX]\] /.test(item);
-        ischecked = undefined;
-        if (istask) {
-          ischecked = item[1] !== ' ';
-          item = item.replace(/^\[[ xX]\] +/, '');
-        }
-
-        t = {
-          type: 'list_item_start',
-          task: istask,
-          checked: ischecked,
-          loose: loose
-        };
-
-        listItems.push(t);
-        this.tokens.push(t);
-
-        // Recurse.
-        this.token(item, false);
-
-        this.tokens.push({
-          type: 'list_item_end'
-        });
-      }
-
-      if (listStart.loose) {
-        l = listItems.length;
-        i = 0;
-        for (; i < l; i++) {
-          listItems[i].loose = true;
-        }
-      }
-
-      this.tokens.push({
-        type: 'list_end'
-      });
-
-      continue;
-    }
-
-    // html
-    if (cap = this.rules.html.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: this.options.sanitize
-          ? 'paragraph'
-          : 'html',
-        pre: !this.options.sanitizer
-          && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
-        text: cap[0]
-      });
-      continue;
-    }
-
-    // def
-    if (top && (cap = this.rules.def.exec(src))) {
-      src = src.substring(cap[0].length);
-      if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);
-      tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
-      if (!this.tokens.links[tag]) {
-        this.tokens.links[tag] = {
-          href: cap[2],
-          title: cap[3]
-        };
-      }
-      continue;
-    }
-
-    // table (gfm)
-    if (top && (cap = this.rules.table.exec(src))) {
-      item = {
-        type: 'table',
-        header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
-        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
-        cells: cap[3] ? cap[3].replace(/(?: *\| *)?\n$/, '').split('\n') : []
-      };
-
-      if (item.header.length === item.align.length) {
-        src = src.substring(cap[0].length);
-
-        for (i = 0; i < item.align.length; i++) {
-          if (/^ *-+: *$/.test(item.align[i])) {
-            item.align[i] = 'right';
-          } else if (/^ *:-+: *$/.test(item.align[i])) {
-            item.align[i] = 'center';
-          } else if (/^ *:-+ *$/.test(item.align[i])) {
-            item.align[i] = 'left';
-          } else {
-            item.align[i] = null;
-          }
-        }
-
-        for (i = 0; i < item.cells.length; i++) {
-          item.cells[i] = splitCells(
-            item.cells[i].replace(/^ *\| *| *\| *$/g, ''),
-            item.header.length);
-        }
-
-        this.tokens.push(item);
-
-        continue;
-      }
-    }
-
-    // lheading
-    if (cap = this.rules.lheading.exec(src)) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'heading',
-        depth: cap[2] === '=' ? 1 : 2,
-        text: cap[1]
-      });
-      continue;
-    }
-
-    // top-level paragraph
-    if (top && (cap = this.rules.paragraph.exec(src))) {
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'paragraph',
-        text: cap[1].charAt(cap[1].length - 1) === '\n'
-          ? cap[1].slice(0, -1)
-          : cap[1]
-      });
-      continue;
-    }
-
-    // text
-    if (cap = this.rules.text.exec(src)) {
-      // Top-level should never reach here.
-      src = src.substring(cap[0].length);
-      this.tokens.push({
-        type: 'text',
-        text: cap[0]
-      });
-      continue;
-    }
-
-    if (src) {
-      throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
-    }
-  }
-
-  return this.tokens;
-};
-
-/**
- * Inline-Level Grammar
- */
-
-var inline = {
-  escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
-  autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
-  url: noop,
-  tag: '^comment'
-    + '|^</[a-zA-Z][\\w:-]*\\s*>' // self-closing tag
-    + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag
-    + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. <?php ?>
-    + '|^<![a-zA-Z]+\\s[\\s\\S]*?>' // declaration, e.g. <!DOCTYPE html>
-    + '|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>', // CDATA section
-  link: /^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,
-  reflink: /^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,
-  nolink: /^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,
-  strong: /^__([^\s_])__(?!_)|^\*\*([^\s*])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,
-  em: /^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_|[^\spunctuation])|^_([^\s_][\s\S]*?[^\s])_(?!_|[^\spunctuation])|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,
-  code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
-  br: /^( {2,}|\\)\n(?!\s*$)/,
-  del: noop,
-  text: /^(`+|[^`])[\s\S]*?(?=[\\<!\[`*]|\b_| {2,}\n|$)/
-};
-
-// list of punctuation marks from common mark spec
-// without ` and ] to workaround Rule 17 (inline code blocks/links)
-inline._punctuation = '!"#$%&\'()*+,\\-./:;<=>?@\\[^_{|}~';
-inline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();
-
-inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
-
-inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
-inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
-inline.autolink = edit(inline.autolink)
-  .replace('scheme', inline._scheme)
-  .replace('email', inline._email)
-  .getRegex();
-
-inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
-
-inline.tag = edit(inline.tag)
-  .replace('comment', block._comment)
-  .replace('attribute', inline._attribute)
-  .getRegex();
-
-inline._label = /(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/;
-inline._href = /\s*(<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*)/;
-inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
-
-inline.link = edit(inline.link)
-  .replace('label', inline._label)
-  .replace('href', inline._href)
-  .replace('title', inline._title)
-  .getRegex();
-
-inline.reflink = edit(inline.reflink)
-  .replace('label', inline._label)
-  .getRegex();
-
-/**
- * Normal Inline Grammar
- */
-
-inline.normal = merge({}, inline);
-
-/**
- * Pedantic Inline Grammar
- */
-
-inline.pedantic = merge({}, inline.normal, {
-  strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
-  em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,
-  link: edit(/^!?\[(label)\]\((.*?)\)/)
-    .replace('label', inline._label)
-    .getRegex(),
-  reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/)
-    .replace('label', inline._label)
-    .getRegex()
-});
-
-/**
- * GFM Inline Grammar
- */
-
-inline.gfm = merge({}, inline.normal, {
-  escape: edit(inline.escape).replace('])', '~|])').getRegex(),
-  _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
-  url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
-  _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
-  del: /^~+(?=\S)([\s\S]*?\S)~+/,
-  text: edit(inline.text)
-    .replace(']|', '~]|')
-    .replace('|$', '|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&\'*+/=?^_`{\\|}~-]+@|$')
-    .getRegex()
-});
-
-inline.gfm.url = edit(inline.gfm.url, 'i')
-  .replace('email', inline.gfm._extended_email)
-  .getRegex();
-/**
- * GFM + Line Breaks Inline Grammar
- */
-
-inline.breaks = merge({}, inline.gfm, {
-  br: edit(inline.br).replace('{2,}', '*').getRegex(),
-  text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()
-});
-
-/**
- * Inline Lexer & Compiler
- */
-
-function InlineLexer(links, options) {
-  this.options = options || marked.defaults;
-  this.links = links;
-  this.rules = inline.normal;
-  this.renderer = this.options.renderer || new Renderer();
-  this.renderer.options = this.options;
-
-  if (!this.links) {
-    throw new Error('Tokens array requires a `links` property.');
-  }
-
-  if (this.options.pedantic) {
-    this.rules = inline.pedantic;
-  } else if (this.options.gfm) {
-    if (this.options.breaks) {
-      this.rules = inline.breaks;
-    } else {
-      this.rules = inline.gfm;
-    }
-  }
-}
-
-/**
- * Expose Inline Rules
- */
-
-InlineLexer.rules = inline;
-
-/**
- * Static Lexing/Compiling Method
- */
-
-InlineLexer.output = function(src, links, options) {
-  var inline = new InlineLexer(links, options);
-  return inline.output(src);
-};
-
-/**
- * Lexing/Compiling
- */
-
-InlineLexer.prototype.output = function(src) {
-  var out = '',
-      link,
-      text,
-      href,
-      title,
-      cap,
-      prevCapZero;
-
-  while (src) {
-    // escape
-    if (cap = this.rules.escape.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += escape(cap[1]);
-      continue;
-    }
-
-    // tag
-    if (cap = this.rules.tag.exec(src)) {
-      if (!this.inLink && /^<a /i.test(cap[0])) {
-        this.inLink = true;
-      } else if (this.inLink && /^<\/a>/i.test(cap[0])) {
-        this.inLink = false;
-      }
-      if (!this.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
-        this.inRawBlock = true;
-      } else if (this.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
-        this.inRawBlock = false;
-      }
-
-      src = src.substring(cap[0].length);
-      out += this.options.sanitize
-        ? this.options.sanitizer
-          ? this.options.sanitizer(cap[0])
-          : escape(cap[0])
-        : cap[0];
-      continue;
-    }
-
-    // link
-    if (cap = this.rules.link.exec(src)) {
-      var lastParenIndex = findClosingBracket(cap[2], '()');
-      if (lastParenIndex > -1) {
-        var removeChars = cap[2].length - lastParenIndex;
-        cap[2] = cap[2].substring(0, lastParenIndex);
-        cap[0] = cap[0].substring(0, cap[0].length - removeChars);
-      }
-      src = src.substring(cap[0].length);
-      this.inLink = true;
-      href = cap[2];
-      if (this.options.pedantic) {
-        link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
-
-        if (link) {
-          href = link[1];
-          title = link[3];
-        } else {
-          title = '';
-        }
-      } else {
-        title = cap[3] ? cap[3].slice(1, -1) : '';
-      }
-      href = href.trim().replace(/^<([\s\S]*)>$/, '$1');
-      out += this.outputLink(cap, {
-        href: InlineLexer.escapes(href),
-        title: InlineLexer.escapes(title)
-      });
-      this.inLink = false;
-      continue;
-    }
-
-    // reflink, nolink
-    if ((cap = this.rules.reflink.exec(src))
-        || (cap = this.rules.nolink.exec(src))) {
-      src = src.substring(cap[0].length);
-      link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
-      link = this.links[link.toLowerCase()];
-      if (!link || !link.href) {
-        out += cap[0].charAt(0);
-        src = cap[0].substring(1) + src;
-        continue;
-      }
-      this.inLink = true;
-      out += this.outputLink(cap, link);
-      this.inLink = false;
-      continue;
-    }
-
-    // strong
-    if (cap = this.rules.strong.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));
-      continue;
-    }
-
-    // em
-    if (cap = this.rules.em.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));
-      continue;
-    }
-
-    // code
-    if (cap = this.rules.code.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.codespan(escape(cap[2].trim(), true));
-      continue;
-    }
-
-    // br
-    if (cap = this.rules.br.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.br();
-      continue;
-    }
-
-    // del (gfm)
-    if (cap = this.rules.del.exec(src)) {
-      src = src.substring(cap[0].length);
-      out += this.renderer.del(this.output(cap[1]));
-      continue;
-    }
-
-    // autolink
-    if (cap = this.rules.autolink.exec(src)) {
-      src = src.substring(cap[0].length);
-      if (cap[2] === '@') {
-        text = escape(this.mangle(cap[1]));
-        href = 'mailto:' + text;
-      } else {
-        text = escape(cap[1]);
-        href = text;
-      }
-      out += this.renderer.link(href, null, text);
-      continue;
-    }
-
-    // url (gfm)
-    if (!this.inLink && (cap = this.rules.url.exec(src))) {
-      if (cap[2] === '@') {
-        text = escape(cap[0]);
-        href = 'mailto:' + text;
-      } else {
-        // do extended autolink path validation
-        do {
-          prevCapZero = cap[0];
-          cap[0] = this.rules._backpedal.exec(cap[0])[0];
-        } while (prevCapZero !== cap[0]);
-        text = escape(cap[0]);
-        if (cap[1] === 'www.') {
-          href = 'http://' + text;
-        } else {
-          href = text;
-        }
-      }
-      src = src.substring(cap[0].length);
-      out += this.renderer.link(href, null, text);
-      continue;
-    }
-
-    // text
-    if (cap = this.rules.text.exec(src)) {
-      src = src.substring(cap[0].length);
-      if (this.inRawBlock) {
-        out += this.renderer.text(cap[0]);
-      } else {
-        out += this.renderer.text(escape(this.smartypants(cap[0])));
-      }
-      continue;
-    }
-
-    if (src) {
-      throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
-    }
-  }
-
-  return out;
-};
-
-InlineLexer.escapes = function(text) {
-  return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;
-};
-
-/**
- * Compile Link
- */
-
-InlineLexer.prototype.outputLink = function(cap, link) {
-  var href = link.href,
-      title = link.title ? escape(link.title) : null;
-
-  return cap[0].charAt(0) !== '!'
-    ? this.renderer.link(href, title, this.output(cap[1]))
-    : this.renderer.image(href, title, escape(cap[1]));
-};
-
-/**
- * Smartypants Transformations
- */
-
-InlineLexer.prototype.smartypants = function(text) {
-  if (!this.options.smartypants) return text;
-  return text
-    // em-dashes
-    .replace(/---/g, '\u2014')
-    // en-dashes
-    .replace(/--/g, '\u2013')
-    // opening singles
-    .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
-    // closing singles & apostrophes
-    .replace(/'/g, '\u2019')
-    // opening doubles
-    .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
-    // closing doubles
-    .replace(/"/g, '\u201d')
-    // ellipses
-    .replace(/\.{3}/g, '\u2026');
-};
-
-/**
- * Mangle Links
- */
-
-InlineLexer.prototype.mangle = function(text) {
-  if (!this.options.mangle) return text;
-  var out = '',
-      l = text.length,
-      i = 0,
-      ch;
-
-  for (; i < l; i++) {
-    ch = text.charCodeAt(i);
-    if (Math.random() > 0.5) {
-      ch = 'x' + ch.toString(16);
-    }
-    out += '&#' + ch + ';';
-  }
-
-  return out;
-};
-
-/**
- * Renderer
- */
-
-function Renderer(options) {
-  this.options = options || marked.defaults;
-}
-
-Renderer.prototype.code = function(code, infostring, escaped) {
-  var lang = (infostring || '').match(/\S*/)[0];
-  if (this.options.highlight) {
-    var out = this.options.highlight(code, lang);
-    if (out != null && out !== code) {
-      escaped = true;
-      code = out;
-    }
-  }
-
-  if (!lang) {
-    return '<pre><code>'
-      + (escaped ? code : escape(code, true))
-      + '</code></pre>';
-  }
-
-  return '<pre><code class="'
-    + this.options.langPrefix
-    + escape(lang, true)
-    + '">'
-    + (escaped ? code : escape(code, true))
-    + '</code></pre>\n';
-};
-
-Renderer.prototype.blockquote = function(quote) {
-  return '<blockquote>\n' + quote + '</blockquote>\n';
-};
-
-Renderer.prototype.html = function(html) {
-  return html;
-};
-
-Renderer.prototype.heading = function(text, level, raw, slugger) {
-  if (this.options.headerIds) {
-    return '<h'
-      + level
-      + ' id="'
-      + this.options.headerPrefix
-      + slugger.slug(raw)
-      + '">'
-      + text
-      + '</h'
-      + level
-      + '>\n';
-  }
-  // ignore IDs
-  return '<h' + level + '>' + text + '</h' + level + '>\n';
-};
-
-Renderer.prototype.hr = function() {
-  return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
-};
-
-Renderer.prototype.list = function(body, ordered, start) {
-  var type = ordered ? 'ol' : 'ul',
-      startatt = (ordered && start !== 1) ? (' start="' + start + '"') : '';
-  return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
-};
-
-Renderer.prototype.listitem = function(text) {
-  return '<li>' + text + '</li>\n';
-};
-
-Renderer.prototype.checkbox = function(checked) {
-  return '<input '
-    + (checked ? 'checked="" ' : '')
-    + 'disabled="" type="checkbox"'
-    + (this.options.xhtml ? ' /' : '')
-    + '> ';
-};
-
-Renderer.prototype.paragraph = function(text) {
-  return '<p>' + text + '</p>\n';
-};
-
-Renderer.prototype.table = function(header, body) {
-  if (body) body = '<tbody>' + body + '</tbody>';
-
-  return '<table>\n'
-    + '<thead>\n'
-    + header
-    + '</thead>\n'
-    + body
-    + '</table>\n';
-};
-
-Renderer.prototype.tablerow = function(content) {
-  return '<tr>\n' + content + '</tr>\n';
-};
-
-Renderer.prototype.tablecell = function(content, flags) {
-  var type = flags.header ? 'th' : 'td';
-  var tag = flags.align
-    ? '<' + type + ' align="' + flags.align + '">'
-    : '<' + type + '>';
-  return tag + content + '</' + type + '>\n';
-};
-
-// span level renderer
-Renderer.prototype.strong = function(text) {
-  return '<strong>' + text + '</strong>';
-};
-
-Renderer.prototype.em = function(text) {
-  return '<em>' + text + '</em>';
-};
-
-Renderer.prototype.codespan = function(text) {
-  return '<code>' + text + '</code>';
-};
-
-Renderer.prototype.br = function() {
-  return this.options.xhtml ? '<br/>' : '<br>';
-};
-
-Renderer.prototype.del = function(text) {
-  return '<del>' + text + '</del>';
-};
-
-Renderer.prototype.link = function(href, title, text) {
-  href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
-  if (href === null) {
-    return text;
-  }
-  var out = '<a href="' + escape(href) + '"';
-  if (title) {
-    out += ' title="' + title + '"';
-  }
-  out += '>' + text + '</a>';
-  return out;
-};
-
-Renderer.prototype.image = function(href, title, text) {
-  href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
-  if (href === null) {
-    return text;
-  }
-
-  var out = '<img src="' + href + '" alt="' + text + '"';
-  if (title) {
-    out += ' title="' + title + '"';
-  }
-  out += this.options.xhtml ? '/>' : '>';
-  return out;
-};
-
-Renderer.prototype.text = function(text) {
-  return text;
-};
-
-/**
- * TextRenderer
- * returns only the textual part of the token
- */
-
-function TextRenderer() {}
-
-// no need for block level renderers
-
-TextRenderer.prototype.strong =
-TextRenderer.prototype.em =
-TextRenderer.prototype.codespan =
-TextRenderer.prototype.del =
-TextRenderer.prototype.text = function (text) {
-  return text;
-};
-
-TextRenderer.prototype.link =
-TextRenderer.prototype.image = function(href, title, text) {
-  return '' + text;
-};
-
-TextRenderer.prototype.br = function() {
-  return '';
-};
-
-/**
- * Parsing & Compiling
- */
-
-function Parser(options) {
-  this.tokens = [];
-  this.token = null;
-  this.options = options || marked.defaults;
-  this.options.renderer = this.options.renderer || new Renderer();
-  this.renderer = this.options.renderer;
-  this.renderer.options = this.options;
-  this.slugger = new Slugger();
-}
-
-/**
- * Static Parse Method
- */
-
-Parser.parse = function(src, options) {
-  var parser = new Parser(options);
-  return parser.parse(src);
-};
-
-/**
- * Parse Loop
- */
-
-Parser.prototype.parse = function(src) {
-  this.inline = new InlineLexer(src.links, this.options);
-  // use an InlineLexer with a TextRenderer to extract pure text
-  this.inlineText = new InlineLexer(
-    src.links,
-    merge({}, this.options, {renderer: new TextRenderer()})
-  );
-  this.tokens = src.reverse();
-
-  var out = '';
-  while (this.next()) {
-    out += this.tok();
-  }
-
-  return out;
-};
-
-/**
- * Next Token
- */
-
-Parser.prototype.next = function() {
-  return this.token = this.tokens.pop();
-};
-
-/**
- * Preview Next Token
- */
-
-Parser.prototype.peek = function() {
-  return this.tokens[this.tokens.length - 1] || 0;
-};
-
-/**
- * Parse Text Tokens
- */
-
-Parser.prototype.parseText = function() {
-  var body = this.token.text;
-
-  while (this.peek().type === 'text') {
-    body += '\n' + this.next().text;
-  }
-
-  return this.inline.output(body);
-};
-
-/**
- * Parse Current Token
- */
-
-Parser.prototype.tok = function() {
-  switch (this.token.type) {
-    case 'space': {
-      return '';
-    }
-    case 'hr': {
-      return this.renderer.hr();
-    }
-    case 'heading': {
-      return this.renderer.heading(
-        this.inline.output(this.token.text),
-        this.token.depth,
-        unescape(this.inlineText.output(this.token.text)),
-        this.slugger);
-    }
-    case 'code': {
-      return this.renderer.code(this.token.text,
-        this.token.lang,
-        this.token.escaped);
-    }
-    case 'table': {
-      var header = '',
-          body = '',
-          i,
-          row,
-          cell,
-          j;
-
-      // header
-      cell = '';
-      for (i = 0; i < this.token.header.length; i++) {
-        cell += this.renderer.tablecell(
-          this.inline.output(this.token.header[i]),
-          { header: true, align: this.token.align[i] }
-        );
-      }
-      header += this.renderer.tablerow(cell);
-
-      for (i = 0; i < this.token.cells.length; i++) {
-        row = this.token.cells[i];
-
-        cell = '';
-        for (j = 0; j < row.length; j++) {
-          cell += this.renderer.tablecell(
-            this.inline.output(row[j]),
-            { header: false, align: this.token.align[j] }
-          );
-        }
-
-        body += this.renderer.tablerow(cell);
-      }
-      return this.renderer.table(header, body);
-    }
-    case 'blockquote_start': {
-      body = '';
-
-      while (this.next().type !== 'blockquote_end') {
-        body += this.tok();
-      }
-
-      return this.renderer.blockquote(body);
-    }
-    case 'list_start': {
-      body = '';
-      var ordered = this.token.ordered,
-          start = this.token.start;
-
-      while (this.next().type !== 'list_end') {
-        body += this.tok();
-      }
-
-      return this.renderer.list(body, ordered, start);
-    }
-    case 'list_item_start': {
-      body = '';
-      var loose = this.token.loose;
-
-      if (this.token.task) {
-        body += this.renderer.checkbox(this.token.checked);
-      }
-
-      while (this.next().type !== 'list_item_end') {
-        body += !loose && this.token.type === 'text'
-          ? this.parseText()
-          : this.tok();
-      }
-
-      return this.renderer.listitem(body);
-    }
-    case 'html': {
-      // TODO parse inline content if parameter markdown=1
-      return this.renderer.html(this.token.text);
-    }
-    case 'paragraph': {
-      return this.renderer.paragraph(this.inline.output(this.token.text));
-    }
-    case 'text': {
-      return this.renderer.paragraph(this.parseText());
-    }
-    default: {
-      var errMsg = 'Token with "' + this.token.type + '" type was not found.';
-      if (this.options.silent) {
-        console.log(errMsg);
-      } else {
-        throw new Error(errMsg);
-      }
-    }
-  }
-};
-
-/**
- * Slugger generates header id
- */
-
-function Slugger () {
-  this.seen = {};
-}
-
-/**
- * Convert string to unique id
- */
-
-Slugger.prototype.slug = function (value) {
-  var slug = value
-    .toLowerCase()
-    .trim()
-    .replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, '')
-    .replace(/\s/g, '-');
-
-  if (this.seen.hasOwnProperty(slug)) {
-    var originalSlug = slug;
-    do {
-      this.seen[originalSlug]++;
-      slug = originalSlug + '-' + this.seen[originalSlug];
-    } while (this.seen.hasOwnProperty(slug));
-  }
-  this.seen[slug] = 0;
-
-  return slug;
-};
-
-/**
- * Helpers
- */
-
-function escape(html, encode) {
-  if (encode) {
-    if (escape.escapeTest.test(html)) {
-      return html.replace(escape.escapeReplace, function (ch) { return escape.replacements[ch]; });
-    }
-  } else {
-    if (escape.escapeTestNoEncode.test(html)) {
-      return html.replace(escape.escapeReplaceNoEncode, function (ch) { return escape.replacements[ch]; });
-    }
-  }
-
-  return html;
-}
-
-escape.escapeTest = /[&<>"']/;
-escape.escapeReplace = /[&<>"']/g;
-escape.replacements = {
-  '&': '&amp;',
-  '<': '&lt;',
-  '>': '&gt;',
-  '"': '&quot;',
-  "'": '&#39;'
-};
-
-escape.escapeTestNoEncode = /[<>"']|&(?!#?\w+;)/;
-escape.escapeReplaceNoEncode = /[<>"']|&(?!#?\w+;)/g;
-
-function unescape(html) {
-  // explicitly match decimal, hex, and named HTML entities
-  return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, function(_, n) {
-    n = n.toLowerCase();
-    if (n === 'colon') return ':';
-    if (n.charAt(0) === '#') {
-      return n.charAt(1) === 'x'
-        ? String.fromCharCode(parseInt(n.substring(2), 16))
-        : String.fromCharCode(+n.substring(1));
-    }
-    return '';
-  });
-}
-
-function edit(regex, opt) {
-  regex = regex.source || regex;
-  opt = opt || '';
-  return {
-    replace: function(name, val) {
-      val = val.source || val;
-      val = val.replace(/(^|[^\[])\^/g, '$1');
-      regex = regex.replace(name, val);
-      return this;
-    },
-    getRegex: function() {
-      return new RegExp(regex, opt);
-    }
-  };
-}
-
-function cleanUrl(sanitize, base, href) {
-  if (sanitize) {
-    try {
-      var prot = decodeURIComponent(unescape(href))
-        .replace(/[^\w:]/g, '')
-        .toLowerCase();
-    } catch (e) {
-      return null;
-    }
-    if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
-      return null;
-    }
-  }
-  if (base && !originIndependentUrl.test(href)) {
-    href = resolveUrl(base, href);
-  }
-  try {
-    href = encodeURI(href).replace(/%25/g, '%');
-  } catch (e) {
-    return null;
-  }
-  return href;
-}
-
-function resolveUrl(base, href) {
-  if (!baseUrls[' ' + base]) {
-    // we can ignore everything in base after the last slash of its path component,
-    // but we might need to add _that_
-    // https://tools.ietf.org/html/rfc3986#section-3
-    if (/^[^:]+:\/*[^/]*$/.test(base)) {
-      baseUrls[' ' + base] = base + '/';
-    } else {
-      baseUrls[' ' + base] = rtrim(base, '/', true);
-    }
-  }
-  base = baseUrls[' ' + base];
-
-  if (href.slice(0, 2) === '//') {
-    return base.replace(/:[\s\S]*/, ':') + href;
-  } else if (href.charAt(0) === '/') {
-    return base.replace(/(:\/*[^/]*)[\s\S]*/, '$1') + href;
-  } else {
-    return base + href;
-  }
-}
-var baseUrls = {};
-var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
-
-function noop() {}
-noop.exec = noop;
-
-function merge(obj) {
-  var i = 1,
-      target,
-      key;
-
-  for (; i < arguments.length; i++) {
-    target = arguments[i];
-    for (key in target) {
-      if (Object.prototype.hasOwnProperty.call(target, key)) {
-        obj[key] = target[key];
-      }
-    }
-  }
-
-  return obj;
-}
-
-function splitCells(tableRow, count) {
-  // ensure that every cell-delimiting pipe has a space
-  // before it to distinguish it from an escaped pipe
-  var row = tableRow.replace(/\|/g, function (match, offset, str) {
-        var escaped = false,
-            curr = offset;
-        while (--curr >= 0 && str[curr] === '\\') escaped = !escaped;
-        if (escaped) {
-          // odd number of slashes means | is escaped
-          // so we leave it alone
-          return '|';
-        } else {
-          // add space before unescaped |
-          return ' |';
-        }
-      }),
-      cells = row.split(/ \|/),
-      i = 0;
-
-  if (cells.length > count) {
-    cells.splice(count);
-  } else {
-    while (cells.length < count) cells.push('');
-  }
-
-  for (; i < cells.length; i++) {
-    // leading or trailing whitespace is ignored per the gfm spec
-    cells[i] = cells[i].trim().replace(/\\\|/g, '|');
-  }
-  return cells;
-}
-
-// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').
-// /c*$/ is vulnerable to REDOS.
-// invert: Remove suffix of non-c chars instead. Default falsey.
-function rtrim(str, c, invert) {
-  if (str.length === 0) {
-    return '';
-  }
-
-  // Length of suffix matching the invert condition.
-  var suffLen = 0;
-
-  // Step left until we fail to match the invert condition.
-  while (suffLen < str.length) {
-    var currChar = str.charAt(str.length - suffLen - 1);
-    if (currChar === c && !invert) {
-      suffLen++;
-    } else if (currChar !== c && invert) {
-      suffLen++;
-    } else {
-      break;
-    }
-  }
-
-  return str.substr(0, str.length - suffLen);
-}
-
-function findClosingBracket(str, b) {
-  if (str.indexOf(b[1]) === -1) {
-    return -1;
-  }
-  var level = 0;
-  for (var i = 0; i < str.length; i++) {
-    if (str[i] === '\\') {
-      i++;
-    } else if (str[i] === b[0]) {
-      level++;
-    } else if (str[i] === b[1]) {
-      level--;
-      if (level < 0) {
-        return i;
-      }
-    }
-  }
-  return -1;
-}
-
-/**
- * Marked
- */
-
-function marked(src, opt, callback) {
-  // throw error in case of non string input
-  if (typeof src === 'undefined' || src === null) {
-    throw new Error('marked(): input parameter is undefined or null');
-  }
-  if (typeof src !== 'string') {
-    throw new Error('marked(): input parameter is of type '
-      + Object.prototype.toString.call(src) + ', string expected');
-  }
-
-  if (callback || typeof opt === 'function') {
-    if (!callback) {
-      callback = opt;
-      opt = null;
-    }
-
-    opt = merge({}, marked.defaults, opt || {});
-
-    var highlight = opt.highlight,
-        tokens,
-        pending,
-        i = 0;
-
-    try {
-      tokens = Lexer.lex(src, opt);
-    } catch (e) {
-      return callback(e);
-    }
-
-    pending = tokens.length;
-
-    var done = function(err) {
-      if (err) {
-        opt.highlight = highlight;
-        return callback(err);
-      }
-
-      var out;
-
-      try {
-        out = Parser.parse(tokens, opt);
-      } catch (e) {
-        err = e;
-      }
-
-      opt.highlight = highlight;
-
-      return err
-        ? callback(err)
-        : callback(null, out);
-    };
-
-    if (!highlight || highlight.length < 3) {
-      return done();
-    }
-
-    delete opt.highlight;
-
-    if (!pending) return done();
-
-    for (; i < tokens.length; i++) {
-      (function(token) {
-        if (token.type !== 'code') {
-          return --pending || done();
-        }
-        return highlight(token.text, token.lang, function(err, code) {
-          if (err) return done(err);
-          if (code == null || code === token.text) {
-            return --pending || done();
-          }
-          token.text = code;
-          token.escaped = true;
-          --pending || done();
-        });
-      })(tokens[i]);
-    }
-
-    return;
-  }
-  try {
-    if (opt) opt = merge({}, marked.defaults, opt);
-    return Parser.parse(Lexer.lex(src, opt), opt);
-  } catch (e) {
-    e.message += '\nPlease report this to https://github.com/markedjs/marked.';
-    if ((opt || marked.defaults).silent) {
-      return '<p>An error occurred:</p><pre>'
-        + escape(e.message + '', true)
-        + '</pre>';
-    }
-    throw e;
-  }
-}
-
-/**
- * Options
- */
-
-marked.options =
-marked.setOptions = function(opt) {
-  merge(marked.defaults, opt);
-  return marked;
-};
-
-marked.getDefaults = function () {
-  return {
-    baseUrl: null,
-    breaks: false,
-    gfm: true,
-    headerIds: true,
-    headerPrefix: '',
-    highlight: null,
-    langPrefix: 'language-',
-    mangle: true,
-    pedantic: false,
-    renderer: new Renderer(),
-    sanitize: false,
-    sanitizer: null,
-    silent: false,
-    smartLists: false,
-    smartypants: false,
-    tables: true,
-    xhtml: false
-  };
-};
-
-marked.defaults = marked.getDefaults();
-
-/**
- * Expose
- */
-
-marked.Parser = Parser;
-marked.parser = Parser.parse;
-
-marked.Renderer = Renderer;
-marked.TextRenderer = TextRenderer;
-
-marked.Lexer = Lexer;
-marked.lexer = Lexer.lex;
-
-marked.InlineLexer = InlineLexer;
-marked.inlineLexer = InlineLexer.output;
-
-marked.Slugger = Slugger;
-
-marked.parse = marked;
-
-if (true) {
-  module.exports = marked;
-} else {}
-})(this || (typeof window !== 'undefined' ? window : global));
-
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
-
-/***/ }),
-
-/***/ "./node_modules/vue-style-loader/lib/addStylesClient.js":
-/*!**************************************************************!*\
-  !*** ./node_modules/vue-style-loader/lib/addStylesClient.js ***!
-  \**************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addStylesClient; });
-/* harmony import */ var _listToStyles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./listToStyles */ "./node_modules/vue-style-loader/lib/listToStyles.js");
-/*
-  MIT License http://www.opensource.org/licenses/mit-license.php
-  Author Tobias Koppers @sokra
-  Modified by Evan You @yyx990803
-*/
-
-
-
-var hasDocument = typeof document !== 'undefined'
-
-if (typeof DEBUG !== 'undefined' && DEBUG) {
-  if (!hasDocument) {
-    throw new Error(
-    'vue-style-loader cannot be used in a non-browser environment. ' +
-    "Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
-  ) }
-}
-
-/*
-type StyleObject = {
-  id: number;
-  parts: Array<StyleObjectPart>
-}
-
-type StyleObjectPart = {
-  css: string;
-  media: string;
-  sourceMap: ?string
-}
-*/
-
-var stylesInDom = {/*
-  [id: number]: {
-    id: number,
-    refs: number,
-    parts: Array<(obj?: StyleObjectPart) => void>
-  }
-*/}
-
-var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
-var singletonElement = null
-var singletonCounter = 0
-var isProduction = false
-var noop = function () {}
-var options = null
-var ssrIdKey = 'data-vue-ssr-id'
-
-// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
-// tags it will allow on a page
-var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
-
-function addStylesClient (parentId, list, _isProduction, _options) {
-  isProduction = _isProduction
-
-  options = _options || {}
-
-  var styles = Object(_listToStyles__WEBPACK_IMPORTED_MODULE_0__["default"])(parentId, list)
-  addStylesToDom(styles)
-
-  return function update (newList) {
-    var mayRemove = []
-    for (var i = 0; i < styles.length; i++) {
-      var item = styles[i]
-      var domStyle = stylesInDom[item.id]
-      domStyle.refs--
-      mayRemove.push(domStyle)
-    }
-    if (newList) {
-      styles = Object(_listToStyles__WEBPACK_IMPORTED_MODULE_0__["default"])(parentId, newList)
-      addStylesToDom(styles)
-    } else {
-      styles = []
-    }
-    for (var i = 0; i < mayRemove.length; i++) {
-      var domStyle = mayRemove[i]
-      if (domStyle.refs === 0) {
-        for (var j = 0; j < domStyle.parts.length; j++) {
-          domStyle.parts[j]()
-        }
-        delete stylesInDom[domStyle.id]
-      }
-    }
-  }
-}
-
-function addStylesToDom (styles /* Array<StyleObject> */) {
-  for (var i = 0; i < styles.length; i++) {
-    var item = styles[i]
-    var domStyle = stylesInDom[item.id]
-    if (domStyle) {
-      domStyle.refs++
-      for (var j = 0; j < domStyle.parts.length; j++) {
-        domStyle.parts[j](item.parts[j])
-      }
-      for (; j < item.parts.length; j++) {
-        domStyle.parts.push(addStyle(item.parts[j]))
-      }
-      if (domStyle.parts.length > item.parts.length) {
-        domStyle.parts.length = item.parts.length
-      }
-    } else {
-      var parts = []
-      for (var j = 0; j < item.parts.length; j++) {
-        parts.push(addStyle(item.parts[j]))
-      }
-      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
-    }
-  }
-}
-
-function createStyleElement () {
-  var styleElement = document.createElement('style')
-  styleElement.type = 'text/css'
-  head.appendChild(styleElement)
-  return styleElement
-}
-
-function addStyle (obj /* StyleObjectPart */) {
-  var update, remove
-  var styleElement = document.querySelector('style[' + ssrIdKey + '~="' + obj.id + '"]')
-
-  if (styleElement) {
-    if (isProduction) {
-      // has SSR styles and in production mode.
-      // simply do nothing.
-      return noop
-    } else {
-      // has SSR styles but in dev mode.
-      // for some reason Chrome can't handle source map in server-rendered
-      // style tags - source maps in <style> only works if the style tag is
-      // created and inserted dynamically. So we remove the server rendered
-      // styles and inject new ones.
-      styleElement.parentNode.removeChild(styleElement)
-    }
-  }
-
-  if (isOldIE) {
-    // use singleton mode for IE9.
-    var styleIndex = singletonCounter++
-    styleElement = singletonElement || (singletonElement = createStyleElement())
-    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
-    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
-  } else {
-    // use multi-style-tag mode in all other cases
-    styleElement = createStyleElement()
-    update = applyToTag.bind(null, styleElement)
-    remove = function () {
-      styleElement.parentNode.removeChild(styleElement)
-    }
-  }
-
-  update(obj)
-
-  return function updateStyle (newObj /* StyleObjectPart */) {
-    if (newObj) {
-      if (newObj.css === obj.css &&
-          newObj.media === obj.media &&
-          newObj.sourceMap === obj.sourceMap) {
-        return
-      }
-      update(obj = newObj)
-    } else {
-      remove()
-    }
-  }
-}
-
-var replaceText = (function () {
-  var textStore = []
-
-  return function (index, replacement) {
-    textStore[index] = replacement
-    return textStore.filter(Boolean).join('\n')
-  }
-})()
-
-function applyToSingletonTag (styleElement, index, remove, obj) {
-  var css = remove ? '' : obj.css
-
-  if (styleElement.styleSheet) {
-    styleElement.styleSheet.cssText = replaceText(index, css)
-  } else {
-    var cssNode = document.createTextNode(css)
-    var childNodes = styleElement.childNodes
-    if (childNodes[index]) styleElement.removeChild(childNodes[index])
-    if (childNodes.length) {
-      styleElement.insertBefore(cssNode, childNodes[index])
-    } else {
-      styleElement.appendChild(cssNode)
-    }
-  }
-}
-
-function applyToTag (styleElement, obj) {
-  var css = obj.css
-  var media = obj.media
-  var sourceMap = obj.sourceMap
-
-  if (media) {
-    styleElement.setAttribute('media', media)
-  }
-  if (options.ssrId) {
-    styleElement.setAttribute(ssrIdKey, obj.id)
-  }
-
-  if (sourceMap) {
-    // https://developer.chrome.com/devtools/docs/javascript-debugging
-    // this makes source maps inside style tags work properly in Chrome
-    css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
-    // http://stackoverflow.com/a/26603875
-    css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
-  }
-
-  if (styleElement.styleSheet) {
-    styleElement.styleSheet.cssText = css
-  } else {
-    while (styleElement.firstChild) {
-      styleElement.removeChild(styleElement.firstChild)
-    }
-    styleElement.appendChild(document.createTextNode(css))
-  }
-}
-
-
-/***/ }),
-
-/***/ "./node_modules/vue-style-loader/lib/listToStyles.js":
-/*!***********************************************************!*\
-  !*** ./node_modules/vue-style-loader/lib/listToStyles.js ***!
-  \***********************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return listToStyles; });
-/**
- * Translates the list format produced by css-loader into something
- * easier to manipulate.
- */
-function listToStyles (parentId, list) {
-  var styles = []
-  var newStyles = {}
-  for (var i = 0; i < list.length; i++) {
-    var item = list[i]
-    var id = item[0]
-    var css = item[1]
-    var media = item[2]
-    var sourceMap = item[3]
-    var part = {
-      id: parentId + ':' + i,
-      css: css,
-      media: media,
-      sourceMap: sourceMap
-    }
-    if (!newStyles[id]) {
-      styles.push(newStyles[id] = { id: id, parts: [part] })
-    } else {
-      newStyles[id].parts.push(part)
-    }
-  }
-  return styles
-}
-
-
-/***/ })
-
-}]);
-//# sourceMappingURL=vue-3.js.map
\ No newline at end of file
diff --git a/settings/js/vue-3.js.map b/settings/js/vue-3.js.map
deleted file mode 100644 (file)
index e08550a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"vue-3.js","sources":["webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/dompurify/dist/purify.js","webpack:///./node_modules/marked/lib/marked.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js"],"sourcesContent":["\"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}","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.DOMPurify = factory());\n}(this, (function () { 'use strict';\n\nvar freeze$1 = Object.freeze || function (x) {\n  return x;\n};\n\nvar html = freeze$1(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n// SVG\nvar svg = freeze$1(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'audio', 'canvas', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'video', 'view', 'vkern']);\n\nvar svgFilters = freeze$1(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\nvar mathMl = freeze$1(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\nvar text = freeze$1(['#text']);\n\nvar freeze$2 = Object.freeze || function (x) {\n  return x;\n};\n\nvar html$1 = freeze$2(['accept', 'action', 'align', 'alt', 'autocomplete', 'background', 'bgcolor', 'border', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'coords', 'crossorigin', 'datetime', 'default', 'dir', 'disabled', 'download', 'enctype', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'integrity', 'ismap', 'label', 'lang', 'list', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'multiple', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns']);\n\nvar svg$1 = freeze$2(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\nvar mathMl$1 = freeze$2(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\nvar xml = freeze$2(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\nvar hasOwnProperty = Object.hasOwnProperty;\nvar setPrototypeOf = Object.setPrototypeOf;\n\nvar _ref$1 = typeof Reflect !== 'undefined' && Reflect;\nvar apply$1 = _ref$1.apply;\n\nif (!apply$1) {\n  apply$1 = function apply(fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\n\n/* Add properties to a lookup table */\nfunction addToSet(set, array) {\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  var l = array.length;\n  while (l--) {\n    var element = array[l];\n    if (typeof element === 'string') {\n      var lcElement = element.toLowerCase();\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!Object.isFrozen(array)) {\n          array[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element] = true;\n  }\n\n  return set;\n}\n\n/* Shallow clone an object */\nfunction clone(object) {\n  var newObject = {};\n\n  var property = void 0;\n  for (property in object) {\n    if (apply$1(hasOwnProperty, object, [property])) {\n      newObject[property] = object[property];\n    }\n  }\n\n  return newObject;\n}\n\nvar seal = Object.seal || function (x) {\n  return x;\n};\n\nvar MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nvar ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\nvar DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nvar ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nvar IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nvar IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nvar ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205f\\u3000]/g // eslint-disable-line no-control-regex\n);\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar _ref = typeof Reflect !== 'undefined' && Reflect;\nvar apply = _ref.apply;\n\nvar arraySlice = Array.prototype.slice;\nvar freeze = Object.freeze;\n\nvar getGlobal = function getGlobal() {\n  return typeof window === 'undefined' ? null : window;\n};\n\nif (!apply) {\n  apply = function apply(fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\nvar _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n  if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  var suffix = null;\n  var ATTR_NAME = 'data-tt-policy-suffix';\n  if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n    suffix = document.currentScript.getAttribute(ATTR_NAME);\n  }\n\n  var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML: function createHTML(html$$1) {\n        return html$$1;\n      }\n    });\n  } catch (error) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n    return null;\n  }\n};\n\nfunction createDOMPurify() {\n  var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n  var DOMPurify = function DOMPurify(root) {\n    return createDOMPurify(root);\n  };\n\n  /**\n   * Version label, exposed for easier checks\n   * if DOMPurify is up to date or not\n   */\n  DOMPurify.version = '1.0.10';\n\n  /**\n   * Array of elements that DOMPurify removed during sanitation.\n   * Empty if nothing was removed.\n   */\n  DOMPurify.removed = [];\n\n  if (!window || !window.document || window.document.nodeType !== 9) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n\n    return DOMPurify;\n  }\n\n  var originalDocument = window.document;\n  var useDOMParser = false;\n  var removeTitle = false;\n\n  var document = window.document;\n  var DocumentFragment = window.DocumentFragment,\n      HTMLTemplateElement = window.HTMLTemplateElement,\n      Node = window.Node,\n      NodeFilter = window.NodeFilter,\n      _window$NamedNodeMap = window.NamedNodeMap,\n      NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n      Text = window.Text,\n      Comment = window.Comment,\n      DOMParser = window.DOMParser,\n      TrustedTypes = window.TrustedTypes;\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n\n  if (typeof HTMLTemplateElement === 'function') {\n    var template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  var trustedTypesPolicy = _createTrustedTypesPolicy(TrustedTypes, originalDocument);\n  var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n\n  var _document = document,\n      implementation = _document.implementation,\n      createNodeIterator = _document.createNodeIterator,\n      getElementsByTagName = _document.getElementsByTagName,\n      createDocumentFragment = _document.createDocumentFragment;\n  var importNode = originalDocument.importNode;\n\n\n  var hooks = {};\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported = implementation && typeof implementation.createHTMLDocument !== 'undefined' && document.documentMode !== 9;\n\n  var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n      ERB_EXPR$$1 = ERB_EXPR,\n      DATA_ATTR$$1 = DATA_ATTR,\n      ARIA_ATTR$$1 = ARIA_ATTR,\n      IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n      ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n  var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n\n  var ALLOWED_TAGS = null;\n  var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(svgFilters), _toConsumableArray(mathMl), _toConsumableArray(text)));\n\n  /* Allowed attribute names */\n  var ALLOWED_ATTR = null;\n  var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(mathMl$1), _toConsumableArray(xml)));\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  var FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  var FORBID_ATTR = null;\n\n  /* Decide if ARIA attributes are okay */\n  var ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  var ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Output should be safe for jQuery's $() factory? */\n  var SAFE_FOR_JQUERY = false;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  var SAFE_FOR_TEMPLATES = false;\n\n  /* Decide if document with <html>... should be returned */\n  var WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  var SET_CONFIG = false;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  var FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  var RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  var RETURN_DOM_FRAGMENT = false;\n\n  /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n   * `Node` is imported into the current `Document`. If this flag is not enabled the\n   * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n   * DOMPurify. */\n  var RETURN_DOM_IMPORT = false;\n\n  /* Output should be free from DOM clobbering attacks? */\n  var SANITIZE_DOM = true;\n\n  /* Keep element content when removing element? */\n  var KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  var IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  var USE_PROFILES = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  var FORBID_CONTENTS = addToSet({}, ['audio', 'head', 'math', 'script', 'style', 'template', 'svg', 'video']);\n\n  /* Tags that are safe for data: URIs */\n  var DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image']);\n\n  /* Attributes safe for values like \"javascript:\" */\n  var URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n  /* Keep a reference to config to pass to hooks */\n  var CONFIG = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  var formElement = document.createElement('form');\n\n  /**\n   * _parseConfig\n   *\n   * @param  {Object} cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  var _parseConfig = function _parseConfig(cfg) {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n      cfg = {};\n    }\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n    FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n    FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n    USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    SAFE_FOR_JQUERY = cfg.SAFE_FOR_JQUERY || false; // Default false\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n    IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(text)));\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, html);\n        addToSet(ALLOWED_ATTR, html$1);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, svg);\n        addToSet(ALLOWED_ATTR, svg$1);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, svgFilters);\n        addToSet(ALLOWED_ATTR, svg$1);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, mathMl);\n        addToSet(ALLOWED_ATTR, mathMl$1);\n        addToSet(ALLOWED_ATTR, xml);\n      }\n    }\n\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n    }\n\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n    }\n\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param  {Node} node a DOM node\n   */\n  var _forceRemove = function _forceRemove(node) {\n    DOMPurify.removed.push({ element: node });\n    try {\n      node.parentNode.removeChild(node);\n    } catch (error) {\n      node.outerHTML = emptyHTML;\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * @param  {String} name an Attribute name\n   * @param  {Node} node a DOM node\n   */\n  var _removeAttribute = function _removeAttribute(name, node) {\n    try {\n      DOMPurify.removed.push({\n        attribute: node.getAttributeNode(name),\n        from: node\n      });\n    } catch (error) {\n      DOMPurify.removed.push({\n        attribute: null,\n        from: node\n      });\n    }\n\n    node.removeAttribute(name);\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param  {String} dirty a string of dirty markup\n   * @return {Document} a DOM, filled with the dirty markup\n   */\n  var _initDocument = function _initDocument(dirty) {\n    /* Create a HTML document */\n    var doc = void 0;\n    var leadingWhitespace = void 0;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      var matches = dirty.match(/^[\\s]+/);\n      leadingWhitespace = matches && matches[0];\n      if (leadingWhitespace) {\n        dirty = dirty.slice(leadingWhitespace.length);\n      }\n    }\n\n    /* Use DOMParser to workaround Firefox bug (see comment below) */\n    if (useDOMParser) {\n      try {\n        doc = new DOMParser().parseFromString(dirty, 'text/html');\n      } catch (error) {}\n    }\n\n    /* Remove title to fix a mXSS bug in older MS Edge */\n    if (removeTitle) {\n      addToSet(FORBID_TAGS, ['title']);\n    }\n\n    /* Otherwise use createHTMLDocument, because DOMParser is unsafe in\n    Safari (see comment below) */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createHTMLDocument('');\n      var _doc = doc,\n          body = _doc.body;\n\n      body.parentNode.removeChild(body.parentNode.firstElementChild);\n      body.outerHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n    }\n\n    if (leadingWhitespace) {\n      doc.body.insertBefore(document.createTextNode(leadingWhitespace), doc.body.childNodes[0] || null);\n    }\n\n    /* Work on whole document or just its body */\n    return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n  };\n\n  // Firefox uses a different parser for innerHTML rather than\n  // DOMParser (see https://bugzilla.mozilla.org/show_bug.cgi?id=1205631)\n  // which means that you *must* use DOMParser, otherwise the output may\n  // not be safe if used in a document.write context later.\n  //\n  // So we feature detect the Firefox bug and use the DOMParser if necessary.\n  //\n  // MS Edge, in older versions, is affected by an mXSS behavior. The second\n  // check tests for the behavior and fixes it if necessary.\n  if (DOMPurify.isSupported) {\n    (function () {\n      try {\n        var doc = _initDocument('<svg><p><style><img src=\"</style><img src=x onerror=1//\">');\n        if (doc.querySelector('svg img')) {\n          useDOMParser = true;\n        }\n      } catch (error) {}\n    })();\n\n    (function () {\n      try {\n        var doc = _initDocument('<x/><title>&lt;/title&gt;&lt;img&gt;');\n        if (doc.querySelector('title').innerHTML.match(/<\\/title/)) {\n          removeTitle = true;\n        }\n      } catch (error) {}\n    })();\n  }\n\n  /**\n   * _createIterator\n   *\n   * @param  {Document} root document/fragment to create iterator for\n   * @return {Iterator} iterator instance\n   */\n  var _createIterator = function _createIterator(root) {\n    return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, function () {\n      return NodeFilter.FILTER_ACCEPT;\n    }, false);\n  };\n\n  /**\n   * _isClobbered\n   *\n   * @param  {Node} elm element to check for clobbering attacks\n   * @return {Boolean} true if clobbered, false if safe\n   */\n  var _isClobbered = function _isClobbered(elm) {\n    if (elm instanceof Text || elm instanceof Comment) {\n      return false;\n    }\n\n    if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function') {\n      return true;\n    }\n\n    return false;\n  };\n\n  /**\n   * _isNode\n   *\n   * @param  {Node} obj object to check whether it's a DOM node\n   * @return {Boolean} true is object is a DOM node\n   */\n  var _isNode = function _isNode(obj) {\n    return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? obj instanceof Node : obj && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.nodeType === 'number' && typeof obj.nodeName === 'string';\n  };\n\n  /**\n   * _executeHook\n   * Execute user configurable hooks\n   *\n   * @param  {String} entryPoint  Name of the hook's entry point\n   * @param  {Node} currentNode node to work on with the hook\n   * @param  {Object} data additional hook parameters\n   */\n  var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n    if (!hooks[entryPoint]) {\n      return;\n    }\n\n    hooks[entryPoint].forEach(function (hook) {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  };\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   *\n   * @param   {Node} currentNode to check for permission to exist\n   * @return  {Boolean} true if node was killed, false if left alive\n   */\n  // eslint-disable-next-line complexity\n  var _sanitizeElements = function _sanitizeElements(currentNode) {\n    var content = void 0;\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeElements', currentNode, null);\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    var tagName = currentNode.nodeName.toLowerCase();\n\n    /* Execute a hook if present */\n    _executeHook('uponSanitizeElement', currentNode, {\n      tagName: tagName,\n      allowedTags: ALLOWED_TAGS\n    });\n\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Keep content except for black-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName] && typeof currentNode.insertAdjacentHTML === 'function') {\n        try {\n          var htmlToInsert = currentNode.innerHTML;\n          currentNode.insertAdjacentHTML('AfterEnd', trustedTypesPolicy ? trustedTypesPolicy.createHTML(htmlToInsert) : htmlToInsert);\n        } catch (error) {}\n      }\n\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove in case a noscript/noembed XSS is suspected */\n    if (tagName === 'noscript' && currentNode.innerHTML.match(/<\\/noscript/i)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    if (tagName === 'noembed' && currentNode.innerHTML.match(/<\\/noembed/i)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Convert markup to cover jQuery behavior */\n    if (SAFE_FOR_JQUERY && !currentNode.firstElementChild && (!currentNode.content || !currentNode.content.firstElementChild) && /</g.test(currentNode.textContent)) {\n      DOMPurify.removed.push({ element: currentNode.cloneNode() });\n      if (currentNode.innerHTML) {\n        currentNode.innerHTML = currentNode.innerHTML.replace(/</g, '&lt;');\n      } else {\n        currentNode.innerHTML = currentNode.textContent.replace(/</g, '&lt;');\n      }\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n      content = content.replace(MUSTACHE_EXPR$$1, ' ');\n      content = content.replace(ERB_EXPR$$1, ' ');\n      if (currentNode.textContent !== content) {\n        DOMPurify.removed.push({ element: currentNode.cloneNode() });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeElements', currentNode, null);\n\n    return false;\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param  {string} lcTag Lowercase tag name of containing element.\n   * @param  {string} lcName Lowercase attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n    /* Make sure attribute cannot clobber */\n    if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n      return false;\n    }\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && DATA_ATTR$$1.test(lcName)) {\n      // This attribute is safe\n    } else if (ALLOW_ARIA_ATTR && ARIA_ATTR$$1.test(lcName)) {\n      // This attribute is safe\n      /* Otherwise, check the name is permitted */\n    } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      return false;\n\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n      // This attribute is safe\n      /* Check no script, data or unknown possibly unsafe URI\n        unless we know URI values are safe for that attribute */\n    } else if (IS_ALLOWED_URI$$1.test(value.replace(ATTR_WHITESPACE$$1, ''))) {\n      // This attribute is safe\n      /* Keep image data URIs alive if src/xlink:href is allowed */\n      /* Further prevent gadget XSS for dynamically built script tags */\n    } else if ((lcName === 'src' || lcName === 'xlink:href') && lcTag !== 'script' && value.indexOf('data:') === 0 && DATA_URI_TAGS[lcTag]) {\n      // This attribute is safe\n      /* Allow unknown protocols: This provides support for links that\n        are handled by protocol handlers which may be unknown ahead of\n        time, e.g. fb:, spotify: */\n    } else if (ALLOW_UNKNOWN_PROTOCOLS && !IS_SCRIPT_OR_DATA$$1.test(value.replace(ATTR_WHITESPACE$$1, ''))) {\n      // This attribute is safe\n      /* Check for binary attributes */\n      // eslint-disable-next-line no-negated-condition\n    } else if (!value) {\n      // Binary attributes are safe at this point\n      /* Anything else, presume unsafe, do not add it back */\n    } else {\n      return false;\n    }\n\n    return true;\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param  {Node} currentNode to sanitize\n   */\n  var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n    var attr = void 0;\n    var value = void 0;\n    var lcName = void 0;\n    var idAttr = void 0;\n    var l = void 0;\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n    var attributes = currentNode.attributes;\n\n    /* Check if we have attributes; if not we might have a text node */\n\n    if (!attributes) {\n      return;\n    }\n\n    var hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR\n    };\n    l = attributes.length;\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      attr = attributes[l];\n      var _attr = attr,\n          name = _attr.name,\n          namespaceURI = _attr.namespaceURI;\n\n      value = attr.value.trim();\n      lcName = name.toLowerCase();\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n      value = hookEvent.attrValue;\n\n      /* Remove attribute */\n      // Safari (iOS + Mac), last tested v8.0.5, crashes if you try to\n      // remove a \"name\" attribute from an <img> tag that has an \"id\"\n      // attribute at the time.\n      if (lcName === 'name' && currentNode.nodeName === 'IMG' && attributes.id) {\n        idAttr = attributes.id;\n        attributes = apply(arraySlice, attributes, []);\n        _removeAttribute('id', currentNode);\n        _removeAttribute(name, currentNode);\n        if (attributes.indexOf(idAttr) > l) {\n          currentNode.setAttribute('id', idAttr.value);\n        }\n      } else if (\n      // This works around a bug in Safari, where input[type=file]\n      // cannot be dynamically set after type has been removed\n      currentNode.nodeName === 'INPUT' && lcName === 'type' && value === 'file' && (ALLOWED_ATTR[lcName] || !FORBID_ATTR[lcName])) {\n        continue;\n      } else {\n        // This avoids a crash in Safari v9.0 with double-ids.\n        // The trick is to first set the id to be empty and then to\n        // remove the attribute\n        if (name === 'id') {\n          currentNode.setAttribute(name, '');\n        }\n\n        _removeAttribute(name, currentNode);\n      }\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        value = value.replace(MUSTACHE_EXPR$$1, ' ');\n        value = value.replace(ERB_EXPR$$1, ' ');\n      }\n\n      /* Is `value` valid for this attribute? */\n      var lcTag = currentNode.nodeName.toLowerCase();\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        continue;\n      }\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      try {\n        if (namespaceURI) {\n          currentNode.setAttributeNS(namespaceURI, name, value);\n        } else {\n          /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n          currentNode.setAttribute(name, value);\n        }\n\n        DOMPurify.removed.pop();\n      } catch (error) {}\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeAttributes', currentNode, null);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param  {DocumentFragment} fragment to iterate over recursively\n   */\n  var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n    var shadowNode = void 0;\n    var shadowIterator = _createIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n    while (shadowNode = shadowIterator.nextNode()) {\n      /* Execute a hook if present */\n      _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n      /* Sanitize tags and elements */\n      if (_sanitizeElements(shadowNode)) {\n        continue;\n      }\n\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n\n      /* Check attributes, sanitize if necessary */\n      _sanitizeAttributes(shadowNode);\n    }\n\n    /* Execute a hook if present */\n    _executeHook('afterSanitizeShadowDOM', fragment, null);\n  };\n\n  /**\n   * Sanitize\n   * Public method providing core sanitation functionality\n   *\n   * @param {String|Node} dirty string or DOM node\n   * @param {Object} configuration object\n   */\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty, cfg) {\n    var body = void 0;\n    var importedNode = void 0;\n    var currentNode = void 0;\n    var oldNode = void 0;\n    var returnNode = void 0;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    if (!dirty) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      // eslint-disable-next-line no-negated-condition\n      if (typeof dirty.toString !== 'function') {\n        throw new TypeError('toString is not a function');\n      } else {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw new TypeError('dirty is not a string, aborting');\n        }\n      }\n    }\n\n    /* Check we can run. Otherwise fall back or ignore */\n    if (!DOMPurify.isSupported) {\n      if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n        if (typeof dirty === 'string') {\n          return window.toStaticHTML(dirty);\n        }\n\n        if (_isNode(dirty)) {\n          return window.toStaticHTML(dirty.outerHTML);\n        }\n      }\n\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    if (IN_PLACE) {\n      /* No special handling necessary for in-place sanitization */\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!-->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && dirty.indexOf('<') === -1) {\n        return trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : emptyHTML;\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n    /* Now start iterating over the created document */\n    while (currentNode = nodeIterator.nextNode()) {\n      /* Fix IE's strange behavior with manipulated textNodes #89 */\n      if (currentNode.nodeType === 3 && currentNode === oldNode) {\n        continue;\n      }\n\n      /* Sanitize tags and elements */\n      if (_sanitizeElements(currentNode)) {\n        continue;\n      }\n\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n\n      /* Check attributes, sanitize if necessary */\n      _sanitizeAttributes(currentNode);\n\n      oldNode = currentNode;\n    }\n\n    oldNode = null;\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (RETURN_DOM_IMPORT) {\n        /* AdoptNode() is not used because internal state is not reset\n               (e.g. the past names map of a HTMLFormElement), this is safe\n               in theory but we would rather not risk another attack vector.\n               The state that is cloned by importNode() is explicitly defined\n               by the specs. */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      serializedHTML = serializedHTML.replace(MUSTACHE_EXPR$$1, ' ');\n      serializedHTML = serializedHTML.replace(ERB_EXPR$$1, ' ');\n    }\n\n    return trustedTypesPolicy ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n  };\n\n  /**\n   * Public method to set the configuration once\n   * setConfig\n   *\n   * @param {Object} cfg configuration object\n   */\n  DOMPurify.setConfig = function (cfg) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n\n  /**\n   * Public method to remove the configuration\n   * clearConfig\n   *\n   */\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n\n  /**\n   * Public method to check if an attribute value is valid.\n   * Uses last set config, if any. Otherwise, uses config defaults.\n   * isValidAttribute\n   *\n   * @param  {string} tag Tag name of containing element.\n   * @param  {string} attr Attribute name.\n   * @param  {string} value Attribute value.\n   * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n   */\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    var lcTag = tag.toLowerCase();\n    var lcName = attr.toLowerCase();\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  /**\n   * AddHook\n   * Public method to add DOMPurify hooks\n   *\n   * @param {String} entryPoint entry point for the hook to add\n   * @param {Function} hookFunction function to execute\n   */\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    hooks[entryPoint] = hooks[entryPoint] || [];\n    hooks[entryPoint].push(hookFunction);\n  };\n\n  /**\n   * RemoveHook\n   * Public method to remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if more are present)\n   *\n   * @param {String} entryPoint entry point for the hook to remove\n   */\n  DOMPurify.removeHook = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      hooks[entryPoint].pop();\n    }\n  };\n\n  /**\n   * RemoveHooks\n   * Public method to remove all DOMPurify hooks at a given entryPoint\n   *\n   * @param  {String} entryPoint entry point for the hooks to remove\n   */\n  DOMPurify.removeHooks = function (entryPoint) {\n    if (hooks[entryPoint]) {\n      hooks[entryPoint] = [];\n    }\n  };\n\n  /**\n   * RemoveAllHooks\n   * Public method to remove all DOMPurify hooks\n   *\n   */\n  DOMPurify.removeAllHooks = function () {\n    hooks = {};\n  };\n\n  return DOMPurify;\n}\n\nvar purify = createDOMPurify();\n\nreturn purify;\n\n})));\n//# sourceMappingURL=purify.js.map\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n;(function(root) {\n'use strict';\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n  newline: /^\\n+/,\n  code: /^( {4}[^\\n]+\\n*)+/,\n  fences: noop,\n  hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n  heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n  nptable: noop,\n  blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n  list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n  html: '^ {0,3}(?:' // optional indentation\n    + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n    + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n    + '|<\\\\?[\\\\s\\\\S]*?\\\\?>\\\\n*' // (3)\n    + '|<![A-Z][\\\\s\\\\S]*?>\\\\n*' // (4)\n    + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\\\\n*' // (5)\n    + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n    + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=\\\\h*\\\\n)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n    + '|</(?!script|pre|style)[a-z][\\\\w-]*\\\\s*>(?=\\\\h*\\\\n)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n    + ')',\n  def: /^ {0,3}\\[(label)\\]: *\\n? *<?([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n  table: noop,\n  lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n  paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading| {0,3}>|<\\/?(?:tag)(?: +|\\n|\\/?>)|<(?:script|pre|style|!--))[^\\n]+)*)/,\n  text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n  .replace('label', block._label)\n  .replace('title', block._title)\n  .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}\\.)/;\nblock.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\nblock.item = edit(block.item, 'gm')\n  .replace(/bull/g, block.bullet)\n  .getRegex();\n\nblock.list = edit(block.list)\n  .replace(/bull/g, block.bullet)\n  .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n  .replace('def', '\\\\n+(?=' + block.def.source + ')')\n  .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n  + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n  + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n  + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n  + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n  + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?-->/;\nblock.html = edit(block.html, 'i')\n  .replace('comment', block._comment)\n  .replace('tag', block._tag)\n  .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n  .getRegex();\n\nblock.paragraph = edit(block.paragraph)\n  .replace('hr', block.hr)\n  .replace('heading', block.heading)\n  .replace('lheading', block.lheading)\n  .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n  .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n  .replace('paragraph', block.paragraph)\n  .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n  fences: /^ {0,3}(`{3,}|~{3,})([^`\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n  paragraph: /^/,\n  heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = edit(block.paragraph)\n  .replace('(?!', '(?!'\n    + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n    + block.list.source.replace('\\\\1', '\\\\3') + '|')\n  .getRegex();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n  nptable: /^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:.*[^>\\n ].*(?:\\n|$))*)\\n*|$)/,\n  table: /^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n((?: *[^>\\n ].*(?:\\n|$))*)\\n*|$)/\n});\n\n/**\n * Pedantic grammar\n */\n\nblock.pedantic = merge({}, block.normal, {\n  html: edit(\n    '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n    + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n    + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n    .replace('comment', block._comment)\n    .replace(/tag/g, '(?!(?:'\n      + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n      + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n      + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n    .getRegex(),\n  def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n  this.tokens = [];\n  this.tokens.links = Object.create(null);\n  this.options = options || marked.defaults;\n  this.rules = block.normal;\n\n  if (this.options.pedantic) {\n    this.rules = block.pedantic;\n  } else if (this.options.gfm) {\n    if (this.options.tables) {\n      this.rules = block.tables;\n    } else {\n      this.rules = block.gfm;\n    }\n  }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n  var lexer = new Lexer(options);\n  return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n  src = src\n    .replace(/\\r\\n|\\r/g, '\\n')\n    .replace(/\\t/g, '    ')\n    .replace(/\\u00a0/g, ' ')\n    .replace(/\\u2424/g, '\\n');\n\n  return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top) {\n  src = src.replace(/^ +$/gm, '');\n  var next,\n      loose,\n      cap,\n      bull,\n      b,\n      item,\n      listStart,\n      listItems,\n      t,\n      space,\n      i,\n      tag,\n      l,\n      isordered,\n      istask,\n      ischecked;\n\n  while (src) {\n    // newline\n    if (cap = this.rules.newline.exec(src)) {\n      src = src.substring(cap[0].length);\n      if (cap[0].length > 1) {\n        this.tokens.push({\n          type: 'space'\n        });\n      }\n    }\n\n    // code\n    if (cap = this.rules.code.exec(src)) {\n      src = src.substring(cap[0].length);\n      cap = cap[0].replace(/^ {4}/gm, '');\n      this.tokens.push({\n        type: 'code',\n        text: !this.options.pedantic\n          ? rtrim(cap, '\\n')\n          : cap\n      });\n      continue;\n    }\n\n    // fences (gfm)\n    if (cap = this.rules.fences.exec(src)) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'code',\n        lang: cap[2] ? cap[2].trim() : cap[2],\n        text: cap[3] || ''\n      });\n      continue;\n    }\n\n    // heading\n    if (cap = this.rules.heading.exec(src)) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'heading',\n        depth: cap[1].length,\n        text: cap[2]\n      });\n      continue;\n    }\n\n    // table no leading pipe (gfm)\n    if (top && (cap = this.rules.nptable.exec(src))) {\n      item = {\n        type: 'table',\n        header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n        align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n        cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n      };\n\n      if (item.header.length === item.align.length) {\n        src = src.substring(cap[0].length);\n\n        for (i = 0; i < item.align.length; i++) {\n          if (/^ *-+: *$/.test(item.align[i])) {\n            item.align[i] = 'right';\n          } else if (/^ *:-+: *$/.test(item.align[i])) {\n            item.align[i] = 'center';\n          } else if (/^ *:-+ *$/.test(item.align[i])) {\n            item.align[i] = 'left';\n          } else {\n            item.align[i] = null;\n          }\n        }\n\n        for (i = 0; i < item.cells.length; i++) {\n          item.cells[i] = splitCells(item.cells[i], item.header.length);\n        }\n\n        this.tokens.push(item);\n\n        continue;\n      }\n    }\n\n    // hr\n    if (cap = this.rules.hr.exec(src)) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'hr'\n      });\n      continue;\n    }\n\n    // blockquote\n    if (cap = this.rules.blockquote.exec(src)) {\n      src = src.substring(cap[0].length);\n\n      this.tokens.push({\n        type: 'blockquote_start'\n      });\n\n      cap = cap[0].replace(/^ *> ?/gm, '');\n\n      // Pass `top` to keep the current\n      // \"toplevel\" state. This is exactly\n      // how markdown.pl works.\n      this.token(cap, top);\n\n      this.tokens.push({\n        type: 'blockquote_end'\n      });\n\n      continue;\n    }\n\n    // list\n    if (cap = this.rules.list.exec(src)) {\n      src = src.substring(cap[0].length);\n      bull = cap[2];\n      isordered = bull.length > 1;\n\n      listStart = {\n        type: 'list_start',\n        ordered: isordered,\n        start: isordered ? +bull : '',\n        loose: false\n      };\n\n      this.tokens.push(listStart);\n\n      // Get each top-level item.\n      cap = cap[0].match(this.rules.item);\n\n      listItems = [];\n      next = false;\n      l = cap.length;\n      i = 0;\n\n      for (; i < l; i++) {\n        item = cap[i];\n\n        // Remove the list item's bullet\n        // so it is seen as the next token.\n        space = item.length;\n        item = item.replace(/^ *([*+-]|\\d+\\.) */, '');\n\n        // Outdent whatever the\n        // list item contains. Hacky.\n        if (~item.indexOf('\\n ')) {\n          space -= item.length;\n          item = !this.options.pedantic\n            ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n            : item.replace(/^ {1,4}/gm, '');\n        }\n\n        // Determine whether the next list item belongs here.\n        // Backpedal if it does not belong in this list.\n        if (i !== l - 1) {\n          b = block.bullet.exec(cap[i + 1])[0];\n          if (bull.length > 1 ? b.length === 1\n            : (b.length > 1 || (this.options.smartLists && b !== bull))) {\n            src = cap.slice(i + 1).join('\\n') + src;\n            i = l - 1;\n          }\n        }\n\n        // Determine whether item is loose or not.\n        // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n        // for discount behavior.\n        loose = next || /\\n\\n(?!\\s*$)/.test(item);\n        if (i !== l - 1) {\n          next = item.charAt(item.length - 1) === '\\n';\n          if (!loose) loose = next;\n        }\n\n        if (loose) {\n          listStart.loose = true;\n        }\n\n        // Check for task list items\n        istask = /^\\[[ xX]\\] /.test(item);\n        ischecked = undefined;\n        if (istask) {\n          ischecked = item[1] !== ' ';\n          item = item.replace(/^\\[[ xX]\\] +/, '');\n        }\n\n        t = {\n          type: 'list_item_start',\n          task: istask,\n          checked: ischecked,\n          loose: loose\n        };\n\n        listItems.push(t);\n        this.tokens.push(t);\n\n        // Recurse.\n        this.token(item, false);\n\n        this.tokens.push({\n          type: 'list_item_end'\n        });\n      }\n\n      if (listStart.loose) {\n        l = listItems.length;\n        i = 0;\n        for (; i < l; i++) {\n          listItems[i].loose = true;\n        }\n      }\n\n      this.tokens.push({\n        type: 'list_end'\n      });\n\n      continue;\n    }\n\n    // html\n    if (cap = this.rules.html.exec(src)) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: this.options.sanitize\n          ? 'paragraph'\n          : 'html',\n        pre: !this.options.sanitizer\n          && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n        text: cap[0]\n      });\n      continue;\n    }\n\n    // def\n    if (top && (cap = this.rules.def.exec(src))) {\n      src = src.substring(cap[0].length);\n      if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n      tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n      if (!this.tokens.links[tag]) {\n        this.tokens.links[tag] = {\n          href: cap[2],\n          title: cap[3]\n        };\n      }\n      continue;\n    }\n\n    // table (gfm)\n    if (top && (cap = this.rules.table.exec(src))) {\n      item = {\n        type: 'table',\n        header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n        align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n        cells: cap[3] ? cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n') : []\n      };\n\n      if (item.header.length === item.align.length) {\n        src = src.substring(cap[0].length);\n\n        for (i = 0; i < item.align.length; i++) {\n          if (/^ *-+: *$/.test(item.align[i])) {\n            item.align[i] = 'right';\n          } else if (/^ *:-+: *$/.test(item.align[i])) {\n            item.align[i] = 'center';\n          } else if (/^ *:-+ *$/.test(item.align[i])) {\n            item.align[i] = 'left';\n          } else {\n            item.align[i] = null;\n          }\n        }\n\n        for (i = 0; i < item.cells.length; i++) {\n          item.cells[i] = splitCells(\n            item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''),\n            item.header.length);\n        }\n\n        this.tokens.push(item);\n\n        continue;\n      }\n    }\n\n    // lheading\n    if (cap = this.rules.lheading.exec(src)) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'heading',\n        depth: cap[2] === '=' ? 1 : 2,\n        text: cap[1]\n      });\n      continue;\n    }\n\n    // top-level paragraph\n    if (top && (cap = this.rules.paragraph.exec(src))) {\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'paragraph',\n        text: cap[1].charAt(cap[1].length - 1) === '\\n'\n          ? cap[1].slice(0, -1)\n          : cap[1]\n      });\n      continue;\n    }\n\n    // text\n    if (cap = this.rules.text.exec(src)) {\n      // Top-level should never reach here.\n      src = src.substring(cap[0].length);\n      this.tokens.push({\n        type: 'text',\n        text: cap[0]\n      });\n      continue;\n    }\n\n    if (src) {\n      throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n    }\n  }\n\n  return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n  escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n  autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n  url: noop,\n  tag: '^comment'\n    + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>', // CDATA section\n  link: /^!?\\[(label)\\]\\(href(?:\\s+(title))?\\s*\\)/,\n  reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n  nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n  strong: /^__([^\\s_])__(?!_)|^\\*\\*([^\\s*])\\*\\*(?!\\*)|^__([^\\s][\\s\\S]*?[^\\s])__(?!_)|^\\*\\*([^\\s][\\s\\S]*?[^\\s])\\*\\*(?!\\*)/,\n  em: /^_([^\\s_])_(?!_)|^\\*([^\\s*\"<\\[])\\*(?!\\*)|^_([^\\s][\\s\\S]*?[^\\s_])_(?!_|[^\\spunctuation])|^_([^\\s_][\\s\\S]*?[^\\s])_(?!_|[^\\spunctuation])|^\\*([^\\s\"<\\[][\\s\\S]*?[^\\s*])\\*(?!\\*)|^\\*([^\\s*\"<\\[][\\s\\S]*?[^\\s])\\*(?!\\*)/,\n  code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n  br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n  del: noop,\n  text: /^(`+|[^`])[\\s\\S]*?(?=[\\\\<!\\[`*]|\\b_| {2,}\\n|$)/\n};\n\n// list of punctuation marks from common mark spec\n// without ` and ] to workaround Rule 17 (inline code blocks/links)\ninline._punctuation = '!\"#$%&\\'()*+,\\\\-./:;<=>?@\\\\[^_{|}~';\ninline.em = edit(inline.em).replace(/punctuation/g, inline._punctuation).getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n  .replace('scheme', inline._scheme)\n  .replace('email', inline._email)\n  .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n  .replace('comment', block._comment)\n  .replace('attribute', inline._attribute)\n  .getRegex();\n\ninline._label = /(?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]?|`[^`]*`|[^\\[\\]\\\\])*?/;\ninline._href = /\\s*(<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*)/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n  .replace('label', inline._label)\n  .replace('href', inline._href)\n  .replace('title', inline._title)\n  .getRegex();\n\ninline.reflink = edit(inline.reflink)\n  .replace('label', inline._label)\n  .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n  strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n  em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/,\n  link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n    .replace('label', inline._label)\n    .getRegex(),\n  reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n    .replace('label', inline._label)\n    .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n  escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n  _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n  url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n  _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n  del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n  text: edit(inline.text)\n    .replace(']|', '~]|')\n    .replace('|$', '|https?://|ftp://|www\\\\.|[a-zA-Z0-9.!#$%&\\'*+/=?^_`{\\\\|}~-]+@|$')\n    .getRegex()\n});\n\ninline.gfm.url = edit(inline.gfm.url, 'i')\n  .replace('email', inline.gfm._extended_email)\n  .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n  br: edit(inline.br).replace('{2,}', '*').getRegex(),\n  text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n  this.options = options || marked.defaults;\n  this.links = links;\n  this.rules = inline.normal;\n  this.renderer = this.options.renderer || new Renderer();\n  this.renderer.options = this.options;\n\n  if (!this.links) {\n    throw new Error('Tokens array requires a `links` property.');\n  }\n\n  if (this.options.pedantic) {\n    this.rules = inline.pedantic;\n  } else if (this.options.gfm) {\n    if (this.options.breaks) {\n      this.rules = inline.breaks;\n    } else {\n      this.rules = inline.gfm;\n    }\n  }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n  var inline = new InlineLexer(links, options);\n  return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n  var out = '',\n      link,\n      text,\n      href,\n      title,\n      cap,\n      prevCapZero;\n\n  while (src) {\n    // escape\n    if (cap = this.rules.escape.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += escape(cap[1]);\n      continue;\n    }\n\n    // tag\n    if (cap = this.rules.tag.exec(src)) {\n      if (!this.inLink && /^<a /i.test(cap[0])) {\n        this.inLink = true;\n      } else if (this.inLink && /^<\\/a>/i.test(cap[0])) {\n        this.inLink = false;\n      }\n      if (!this.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n        this.inRawBlock = true;\n      } else if (this.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n        this.inRawBlock = false;\n      }\n\n      src = src.substring(cap[0].length);\n      out += this.options.sanitize\n        ? this.options.sanitizer\n          ? this.options.sanitizer(cap[0])\n          : escape(cap[0])\n        : cap[0];\n      continue;\n    }\n\n    // link\n    if (cap = this.rules.link.exec(src)) {\n      var lastParenIndex = findClosingBracket(cap[2], '()');\n      if (lastParenIndex > -1) {\n        var removeChars = cap[2].length - lastParenIndex;\n        cap[2] = cap[2].substring(0, lastParenIndex);\n        cap[0] = cap[0].substring(0, cap[0].length - removeChars);\n      }\n      src = src.substring(cap[0].length);\n      this.inLink = true;\n      href = cap[2];\n      if (this.options.pedantic) {\n        link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n        if (link) {\n          href = link[1];\n          title = link[3];\n        } else {\n          title = '';\n        }\n      } else {\n        title = cap[3] ? cap[3].slice(1, -1) : '';\n      }\n      href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n      out += this.outputLink(cap, {\n        href: InlineLexer.escapes(href),\n        title: InlineLexer.escapes(title)\n      });\n      this.inLink = false;\n      continue;\n    }\n\n    // reflink, nolink\n    if ((cap = this.rules.reflink.exec(src))\n        || (cap = this.rules.nolink.exec(src))) {\n      src = src.substring(cap[0].length);\n      link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n      link = this.links[link.toLowerCase()];\n      if (!link || !link.href) {\n        out += cap[0].charAt(0);\n        src = cap[0].substring(1) + src;\n        continue;\n      }\n      this.inLink = true;\n      out += this.outputLink(cap, link);\n      this.inLink = false;\n      continue;\n    }\n\n    // strong\n    if (cap = this.rules.strong.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));\n      continue;\n    }\n\n    // em\n    if (cap = this.rules.em.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));\n      continue;\n    }\n\n    // code\n    if (cap = this.rules.code.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.renderer.codespan(escape(cap[2].trim(), true));\n      continue;\n    }\n\n    // br\n    if (cap = this.rules.br.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.renderer.br();\n      continue;\n    }\n\n    // del (gfm)\n    if (cap = this.rules.del.exec(src)) {\n      src = src.substring(cap[0].length);\n      out += this.renderer.del(this.output(cap[1]));\n      continue;\n    }\n\n    // autolink\n    if (cap = this.rules.autolink.exec(src)) {\n      src = src.substring(cap[0].length);\n      if (cap[2] === '@') {\n        text = escape(this.mangle(cap[1]));\n        href = 'mailto:' + text;\n      } else {\n        text = escape(cap[1]);\n        href = text;\n      }\n      out += this.renderer.link(href, null, text);\n      continue;\n    }\n\n    // url (gfm)\n    if (!this.inLink && (cap = this.rules.url.exec(src))) {\n      if (cap[2] === '@') {\n        text = escape(cap[0]);\n        href = 'mailto:' + text;\n      } else {\n        // do extended autolink path validation\n        do {\n          prevCapZero = cap[0];\n          cap[0] = this.rules._backpedal.exec(cap[0])[0];\n        } while (prevCapZero !== cap[0]);\n        text = escape(cap[0]);\n        if (cap[1] === 'www.') {\n          href = 'http://' + text;\n        } else {\n          href = text;\n        }\n      }\n      src = src.substring(cap[0].length);\n      out += this.renderer.link(href, null, text);\n      continue;\n    }\n\n    // text\n    if (cap = this.rules.text.exec(src)) {\n      src = src.substring(cap[0].length);\n      if (this.inRawBlock) {\n        out += this.renderer.text(cap[0]);\n      } else {\n        out += this.renderer.text(escape(this.smartypants(cap[0])));\n      }\n      continue;\n    }\n\n    if (src) {\n      throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));\n    }\n  }\n\n  return out;\n};\n\nInlineLexer.escapes = function(text) {\n  return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n  var href = link.href,\n      title = link.title ? escape(link.title) : null;\n\n  return cap[0].charAt(0) !== '!'\n    ? this.renderer.link(href, title, this.output(cap[1]))\n    : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n  if (!this.options.smartypants) return text;\n  return text\n    // em-dashes\n    .replace(/---/g, '\\u2014')\n    // en-dashes\n    .replace(/--/g, '\\u2013')\n    // opening singles\n    .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n    // closing singles & apostrophes\n    .replace(/'/g, '\\u2019')\n    // opening doubles\n    .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n    // closing doubles\n    .replace(/\"/g, '\\u201d')\n    // ellipses\n    .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n  if (!this.options.mangle) return text;\n  var out = '',\n      l = text.length,\n      i = 0,\n      ch;\n\n  for (; i < l; i++) {\n    ch = text.charCodeAt(i);\n    if (Math.random() > 0.5) {\n      ch = 'x' + ch.toString(16);\n    }\n    out += '&#' + ch + ';';\n  }\n\n  return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n  this.options = options || marked.defaults;\n}\n\nRenderer.prototype.code = function(code, infostring, escaped) {\n  var lang = (infostring || '').match(/\\S*/)[0];\n  if (this.options.highlight) {\n    var out = this.options.highlight(code, lang);\n    if (out != null && out !== code) {\n      escaped = true;\n      code = out;\n    }\n  }\n\n  if (!lang) {\n    return '<pre><code>'\n      + (escaped ? code : escape(code, true))\n      + '</code></pre>';\n  }\n\n  return '<pre><code class=\"'\n    + this.options.langPrefix\n    + escape(lang, true)\n    + '\">'\n    + (escaped ? code : escape(code, true))\n    + '</code></pre>\\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n  return '<blockquote>\\n' + quote + '</blockquote>\\n';\n};\n\nRenderer.prototype.html = function(html) {\n  return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw, slugger) {\n  if (this.options.headerIds) {\n    return '<h'\n      + level\n      + ' id=\"'\n      + this.options.headerPrefix\n      + slugger.slug(raw)\n      + '\">'\n      + text\n      + '</h'\n      + level\n      + '>\\n';\n  }\n  // ignore IDs\n  return '<h' + level + '>' + text + '</h' + level + '>\\n';\n};\n\nRenderer.prototype.hr = function() {\n  return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n};\n\nRenderer.prototype.list = function(body, ordered, start) {\n  var type = ordered ? 'ol' : 'ul',\n      startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n  return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n  return '<li>' + text + '</li>\\n';\n};\n\nRenderer.prototype.checkbox = function(checked) {\n  return '<input '\n    + (checked ? 'checked=\"\" ' : '')\n    + 'disabled=\"\" type=\"checkbox\"'\n    + (this.options.xhtml ? ' /' : '')\n    + '> ';\n};\n\nRenderer.prototype.paragraph = function(text) {\n  return '<p>' + text + '</p>\\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n  if (body) body = '<tbody>' + body + '</tbody>';\n\n  return '<table>\\n'\n    + '<thead>\\n'\n    + header\n    + '</thead>\\n'\n    + body\n    + '</table>\\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n  return '<tr>\\n' + content + '</tr>\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n  var type = flags.header ? 'th' : 'td';\n  var tag = flags.align\n    ? '<' + type + ' align=\"' + flags.align + '\">'\n    : '<' + type + '>';\n  return tag + content + '</' + type + '>\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n  return '<strong>' + text + '</strong>';\n};\n\nRenderer.prototype.em = function(text) {\n  return '<em>' + text + '</em>';\n};\n\nRenderer.prototype.codespan = function(text) {\n  return '<code>' + text + '</code>';\n};\n\nRenderer.prototype.br = function() {\n  return this.options.xhtml ? '<br/>' : '<br>';\n};\n\nRenderer.prototype.del = function(text) {\n  return '<del>' + text + '</del>';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n  href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n  if (href === null) {\n    return text;\n  }\n  var out = '<a href=\"' + escape(href) + '\"';\n  if (title) {\n    out += ' title=\"' + title + '\"';\n  }\n  out += '>' + text + '</a>';\n  return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n  href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n  if (href === null) {\n    return text;\n  }\n\n  var out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n  if (title) {\n    out += ' title=\"' + title + '\"';\n  }\n  out += this.options.xhtml ? '/>' : '>';\n  return out;\n};\n\nRenderer.prototype.text = function(text) {\n  return text;\n};\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\n\nfunction TextRenderer() {}\n\n// no need for block level renderers\n\nTextRenderer.prototype.strong =\nTextRenderer.prototype.em =\nTextRenderer.prototype.codespan =\nTextRenderer.prototype.del =\nTextRenderer.prototype.text = function (text) {\n  return text;\n};\n\nTextRenderer.prototype.link =\nTextRenderer.prototype.image = function(href, title, text) {\n  return '' + text;\n};\n\nTextRenderer.prototype.br = function() {\n  return '';\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n  this.tokens = [];\n  this.token = null;\n  this.options = options || marked.defaults;\n  this.options.renderer = this.options.renderer || new Renderer();\n  this.renderer = this.options.renderer;\n  this.renderer.options = this.options;\n  this.slugger = new Slugger();\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options) {\n  var parser = new Parser(options);\n  return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n  this.inline = new InlineLexer(src.links, this.options);\n  // use an InlineLexer with a TextRenderer to extract pure text\n  this.inlineText = new InlineLexer(\n    src.links,\n    merge({}, this.options, {renderer: new TextRenderer()})\n  );\n  this.tokens = src.reverse();\n\n  var out = '';\n  while (this.next()) {\n    out += this.tok();\n  }\n\n  return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n  return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n  return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n  var body = this.token.text;\n\n  while (this.peek().type === 'text') {\n    body += '\\n' + this.next().text;\n  }\n\n  return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n  switch (this.token.type) {\n    case 'space': {\n      return '';\n    }\n    case 'hr': {\n      return this.renderer.hr();\n    }\n    case 'heading': {\n      return this.renderer.heading(\n        this.inline.output(this.token.text),\n        this.token.depth,\n        unescape(this.inlineText.output(this.token.text)),\n        this.slugger);\n    }\n    case 'code': {\n      return this.renderer.code(this.token.text,\n        this.token.lang,\n        this.token.escaped);\n    }\n    case 'table': {\n      var header = '',\n          body = '',\n          i,\n          row,\n          cell,\n          j;\n\n      // header\n      cell = '';\n      for (i = 0; i < this.token.header.length; i++) {\n        cell += this.renderer.tablecell(\n          this.inline.output(this.token.header[i]),\n          { header: true, align: this.token.align[i] }\n        );\n      }\n      header += this.renderer.tablerow(cell);\n\n      for (i = 0; i < this.token.cells.length; i++) {\n        row = this.token.cells[i];\n\n        cell = '';\n        for (j = 0; j < row.length; j++) {\n          cell += this.renderer.tablecell(\n            this.inline.output(row[j]),\n            { header: false, align: this.token.align[j] }\n          );\n        }\n\n        body += this.renderer.tablerow(cell);\n      }\n      return this.renderer.table(header, body);\n    }\n    case 'blockquote_start': {\n      body = '';\n\n      while (this.next().type !== 'blockquote_end') {\n        body += this.tok();\n      }\n\n      return this.renderer.blockquote(body);\n    }\n    case 'list_start': {\n      body = '';\n      var ordered = this.token.ordered,\n          start = this.token.start;\n\n      while (this.next().type !== 'list_end') {\n        body += this.tok();\n      }\n\n      return this.renderer.list(body, ordered, start);\n    }\n    case 'list_item_start': {\n      body = '';\n      var loose = this.token.loose;\n\n      if (this.token.task) {\n        body += this.renderer.checkbox(this.token.checked);\n      }\n\n      while (this.next().type !== 'list_item_end') {\n        body += !loose && this.token.type === 'text'\n          ? this.parseText()\n          : this.tok();\n      }\n\n      return this.renderer.listitem(body);\n    }\n    case 'html': {\n      // TODO parse inline content if parameter markdown=1\n      return this.renderer.html(this.token.text);\n    }\n    case 'paragraph': {\n      return this.renderer.paragraph(this.inline.output(this.token.text));\n    }\n    case 'text': {\n      return this.renderer.paragraph(this.parseText());\n    }\n    default: {\n      var errMsg = 'Token with \"' + this.token.type + '\" type was not found.';\n      if (this.options.silent) {\n        console.log(errMsg);\n      } else {\n        throw new Error(errMsg);\n      }\n    }\n  }\n};\n\n/**\n * Slugger generates header id\n */\n\nfunction Slugger () {\n  this.seen = {};\n}\n\n/**\n * Convert string to unique id\n */\n\nSlugger.prototype.slug = function (value) {\n  var slug = value\n    .toLowerCase()\n    .trim()\n    .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n    .replace(/\\s/g, '-');\n\n  if (this.seen.hasOwnProperty(slug)) {\n    var originalSlug = slug;\n    do {\n      this.seen[originalSlug]++;\n      slug = originalSlug + '-' + this.seen[originalSlug];\n    } while (this.seen.hasOwnProperty(slug));\n  }\n  this.seen[slug] = 0;\n\n  return slug;\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n  if (encode) {\n    if (escape.escapeTest.test(html)) {\n      return html.replace(escape.escapeReplace, function (ch) { return escape.replacements[ch]; });\n    }\n  } else {\n    if (escape.escapeTestNoEncode.test(html)) {\n      return html.replace(escape.escapeReplaceNoEncode, function (ch) { return escape.replacements[ch]; });\n    }\n  }\n\n  return html;\n}\n\nescape.escapeTest = /[&<>\"']/;\nescape.escapeReplace = /[&<>\"']/g;\nescape.replacements = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;'\n};\n\nescape.escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nescape.escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n\nfunction unescape(html) {\n  // explicitly match decimal, hex, and named HTML entities\n  return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig, function(_, n) {\n    n = n.toLowerCase();\n    if (n === 'colon') return ':';\n    if (n.charAt(0) === '#') {\n      return n.charAt(1) === 'x'\n        ? String.fromCharCode(parseInt(n.substring(2), 16))\n        : String.fromCharCode(+n.substring(1));\n    }\n    return '';\n  });\n}\n\nfunction edit(regex, opt) {\n  regex = regex.source || regex;\n  opt = opt || '';\n  return {\n    replace: function(name, val) {\n      val = val.source || val;\n      val = val.replace(/(^|[^\\[])\\^/g, '$1');\n      regex = regex.replace(name, val);\n      return this;\n    },\n    getRegex: function() {\n      return new RegExp(regex, opt);\n    }\n  };\n}\n\nfunction cleanUrl(sanitize, base, href) {\n  if (sanitize) {\n    try {\n      var prot = decodeURIComponent(unescape(href))\n        .replace(/[^\\w:]/g, '')\n        .toLowerCase();\n    } catch (e) {\n      return null;\n    }\n    if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n      return null;\n    }\n  }\n  if (base && !originIndependentUrl.test(href)) {\n    href = resolveUrl(base, href);\n  }\n  try {\n    href = encodeURI(href).replace(/%25/g, '%');\n  } catch (e) {\n    return null;\n  }\n  return href;\n}\n\nfunction resolveUrl(base, href) {\n  if (!baseUrls[' ' + base]) {\n    // we can ignore everything in base after the last slash of its path component,\n    // but we might need to add _that_\n    // https://tools.ietf.org/html/rfc3986#section-3\n    if (/^[^:]+:\\/*[^/]*$/.test(base)) {\n      baseUrls[' ' + base] = base + '/';\n    } else {\n      baseUrls[' ' + base] = rtrim(base, '/', true);\n    }\n  }\n  base = baseUrls[' ' + base];\n\n  if (href.slice(0, 2) === '//') {\n    return base.replace(/:[\\s\\S]*/, ':') + href;\n  } else if (href.charAt(0) === '/') {\n    return base.replace(/(:\\/*[^/]*)[\\s\\S]*/, '$1') + href;\n  } else {\n    return base + href;\n  }\n}\nvar baseUrls = {};\nvar originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n  var i = 1,\n      target,\n      key;\n\n  for (; i < arguments.length; i++) {\n    target = arguments[i];\n    for (key in target) {\n      if (Object.prototype.hasOwnProperty.call(target, key)) {\n        obj[key] = target[key];\n      }\n    }\n  }\n\n  return obj;\n}\n\nfunction splitCells(tableRow, count) {\n  // ensure that every cell-delimiting pipe has a space\n  // before it to distinguish it from an escaped pipe\n  var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n        var escaped = false,\n            curr = offset;\n        while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n        if (escaped) {\n          // odd number of slashes means | is escaped\n          // so we leave it alone\n          return '|';\n        } else {\n          // add space before unescaped |\n          return ' |';\n        }\n      }),\n      cells = row.split(/ \\|/),\n      i = 0;\n\n  if (cells.length > count) {\n    cells.splice(count);\n  } else {\n    while (cells.length < count) cells.push('');\n  }\n\n  for (; i < cells.length; i++) {\n    // leading or trailing whitespace is ignored per the gfm spec\n    cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n  }\n  return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n  if (str.length === 0) {\n    return '';\n  }\n\n  // Length of suffix matching the invert condition.\n  var suffLen = 0;\n\n  // Step left until we fail to match the invert condition.\n  while (suffLen < str.length) {\n    var currChar = str.charAt(str.length - suffLen - 1);\n    if (currChar === c && !invert) {\n      suffLen++;\n    } else if (currChar !== c && invert) {\n      suffLen++;\n    } else {\n      break;\n    }\n  }\n\n  return str.substr(0, str.length - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n  if (str.indexOf(b[1]) === -1) {\n    return -1;\n  }\n  var level = 0;\n  for (var i = 0; i < str.length; i++) {\n    if (str[i] === '\\\\') {\n      i++;\n    } else if (str[i] === b[0]) {\n      level++;\n    } else if (str[i] === b[1]) {\n      level--;\n      if (level < 0) {\n        return i;\n      }\n    }\n  }\n  return -1;\n}\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n  // throw error in case of non string input\n  if (typeof src === 'undefined' || src === null) {\n    throw new Error('marked(): input parameter is undefined or null');\n  }\n  if (typeof src !== 'string') {\n    throw new Error('marked(): input parameter is of type '\n      + Object.prototype.toString.call(src) + ', string expected');\n  }\n\n  if (callback || typeof opt === 'function') {\n    if (!callback) {\n      callback = opt;\n      opt = null;\n    }\n\n    opt = merge({}, marked.defaults, opt || {});\n\n    var highlight = opt.highlight,\n        tokens,\n        pending,\n        i = 0;\n\n    try {\n      tokens = Lexer.lex(src, opt);\n    } catch (e) {\n      return callback(e);\n    }\n\n    pending = tokens.length;\n\n    var done = function(err) {\n      if (err) {\n        opt.highlight = highlight;\n        return callback(err);\n      }\n\n      var out;\n\n      try {\n        out = Parser.parse(tokens, opt);\n      } catch (e) {\n        err = e;\n      }\n\n      opt.highlight = highlight;\n\n      return err\n        ? callback(err)\n        : callback(null, out);\n    };\n\n    if (!highlight || highlight.length < 3) {\n      return done();\n    }\n\n    delete opt.highlight;\n\n    if (!pending) return done();\n\n    for (; i < tokens.length; i++) {\n      (function(token) {\n        if (token.type !== 'code') {\n          return --pending || done();\n        }\n        return highlight(token.text, token.lang, function(err, code) {\n          if (err) return done(err);\n          if (code == null || code === token.text) {\n            return --pending || done();\n          }\n          token.text = code;\n          token.escaped = true;\n          --pending || done();\n        });\n      })(tokens[i]);\n    }\n\n    return;\n  }\n  try {\n    if (opt) opt = merge({}, marked.defaults, opt);\n    return Parser.parse(Lexer.lex(src, opt), opt);\n  } catch (e) {\n    e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n    if ((opt || marked.defaults).silent) {\n      return '<p>An error occurred:</p><pre>'\n        + escape(e.message + '', true)\n        + '</pre>';\n    }\n    throw e;\n  }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n  merge(marked.defaults, opt);\n  return marked;\n};\n\nmarked.getDefaults = function () {\n  return {\n    baseUrl: null,\n    breaks: false,\n    gfm: true,\n    headerIds: true,\n    headerPrefix: '',\n    highlight: null,\n    langPrefix: 'language-',\n    mangle: true,\n    pedantic: false,\n    renderer: new Renderer(),\n    sanitize: false,\n    sanitizer: null,\n    silent: false,\n    smartLists: false,\n    smartypants: false,\n    tables: true,\n    xhtml: false\n  };\n};\n\nmarked.defaults = marked.getDefaults();\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.Slugger = Slugger;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n  module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n  define(function() { return marked; });\n} else {\n  root.marked = marked;\n}\n})(this || (typeof window !== 'undefined' ? window : global));\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACpFA;AACA;AACA,UACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC5pCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAIA;AACA;;;;;;;;;;;;;;ACzpDA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7NA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;A","sourceRoot":""}
\ No newline at end of file
diff --git a/settings/js/vue-8.js b/settings/js/vue-8.js
deleted file mode 100644 (file)
index 471ae88..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{69:function(e,s,a){"use strict";a.r(s);var i=a(15),n={props:["item"]},o=a(4),r={name:"popoverMenu",props:["menu"],components:{popoverItem:Object(o.a)(n,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("li",[e.item.href?s("a",{attrs:{href:e.item.href?e.item.href:"#",target:e.item.target?e.item.target:"",rel:"noreferrer noopener"},on:{click:e.item.action}},[s("span",{class:e.item.icon}),e._v(" "),e.item.text?s("span",[e._v(e._s(e.item.text))]):e.item.longtext?s("p",[e._v(e._s(e.item.longtext))]):e._e()]):e.item.action?s("button",{on:{click:e.item.action}},[s("span",{class:e.item.icon}),e._v(" "),e.item.text?s("span",[e._v(e._s(e.item.text))]):e.item.longtext?s("p",[e._v(e._s(e.item.longtext))]):e._e()]):s("span",{staticClass:"menuitem"},[s("span",{class:e.item.icon}),e._v(" "),e.item.text?s("span",[e._v(e._s(e.item.text))]):e.item.longtext?s("p",[e._v(e._s(e.item.longtext))]):e._e()])])},[],!1,null,null,null).exports}},u=Object(o.a)(r,function(){var e=this.$createElement,t=this._self._c||e;return t("ul",this._l(this.menu,function(e,s){return t("popover-item",{key:s,attrs:{item:e}})}),1)},[],!1,null,null,null).exports,l=a(64),d=a.n(l),c=a(62),g=a.n(c),h=a(2),p=a(44);function m(e){return(m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}h.a.use(p.a);var f={name:"userRow",props:["user","settings","groups","subAdminsGroups","quotaOptions","showConfig","languages","externalActions"],components:{popoverMenu:u,Multiselect:g.a},directives:{ClickOutside:d.a},mounted:function(){},data:function(){return{rand:parseInt(1e3*Math.random()),openedMenu:!1,feedbackMessage:"",loading:{all:!1,displayName:!1,password:!1,mailAddress:!1,groups:!1,subadmins:!1,quota:!1,delete:!1,disable:!1,languages:!1}}},computed:{userActions:function(){var e=[{icon:"icon-delete",text:t("settings","Delete user"),action:this.deleteUser},{icon:this.user.enabled?"icon-close":"icon-add",text:this.user.enabled?t("settings","Disable user"):t("settings","Enable user"),action:this.enableDisableUser}];return null!==this.user.email&&""!==this.user.email&&e.push({icon:"icon-mail",text:t("settings","Resend welcome email"),action:this.sendWelcomeMail}),e.concat(this.externalActions)},userGroups:function(){var e=this,t=this.groups.filter(function(t){return e.user.groups.includes(t.id)});return t},userSubAdminsGroups:function(){var e=this,t=this.subAdminsGroups.filter(function(t){return e.user.subadmin.includes(t.id)});return t},availableGroups:function(){var e=this;return this.groups.map(function(t){var s=Object.assign({},t);return s.$isDisabled=!1===t.canAdd&&!e.user.groups.includes(t.id)||!1===t.canRemove&&e.user.groups.includes(t.id),s})},usedSpace:function(){return this.user.quota.used?t("settings","{size} used",{size:OC.Util.humanFileSize(this.user.quota.used)}):t("settings","{size} used",{size:OC.Util.humanFileSize(0)})},usedQuota:function(){var e=this.user.quota.quota;e>0?e=Math.min(100,Math.round(this.user.quota.used/e*100)):e=95*(1-1/(this.user.quota.used/(10*Math.pow(2,30))+1));return isNaN(e)?0:e},userQuota:function(){if(this.user.quota.quota>=0){var e=OC.Util.humanFileSize(this.user.quota.quota),t=this.quotaOptions.find(function(t){return t.id===e});return t||{id:e,label:e}}return"default"===this.user.quota.quota?this.quotaOptions[0]:this.quotaOptions[1]},minPasswordLength:function(){return this.$store.getters.getPasswordPolicyMinLength},userLanguage:function(){var e=this,t=this.languages[0].languages.concat(this.languages[1].languages).find(function(t){return t.code===e.user.language});return"object"!==m(t)&&""!==this.user.language?{code:this.user.language,name:this.user.language}:""!==this.user.language&&t}},methods:{toggleMenu:function(){this.openedMenu=!this.openedMenu},hideMenu:function(){this.openedMenu=!1},generateAvatar:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:32;return OC.generateUrl("/avatar/{user}/{size}?v={version}",{user:e,size:t,version:oc_userconfig.avatar.version})},formatGroupsTitle:function(e){return e.map(function(e){return e.name}).slice(2).join(", ")},deleteUser:function(){var e=this;this.loading.delete=!0,this.loading.all=!0;var t=this.user.id;return this.$store.dispatch("deleteUser",t).then(function(){e.loading.delete=!1,e.loading.all=!1})},enableDisableUser:function(){var e=this;this.loading.delete=!0,this.loading.all=!0;var t=this.user.id,s=!this.user.enabled;return this.$store.dispatch("enableDisableUser",{userid:t,enabled:s}).then(function(){e.loading.delete=!1,e.loading.all=!1})},updateDisplayName:function(){var e=this,t=this.$refs.displayName.value;this.loading.displayName=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"displayname",value:t}).then(function(){e.loading.displayName=!1,e.$refs.displayName.value=t})},updatePassword:function(){var e=this,t=this.$refs.password.value;this.loading.password=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"password",value:t}).then(function(){e.loading.password=!1,e.$refs.password.value=""})},updateEmail:function(){var e=this,t=this.$refs.mailAddress.value;this.loading.mailAddress=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"email",value:t}).then(function(){e.loading.mailAddress=!1,e.$refs.mailAddress.value=t})},createGroup:function(e){var t=this;return this.loading={groups:!0,subadmins:!0},this.$store.dispatch("addGroup",e).then(function(){t.loading={groups:!1,subadmins:!1};var s=t.user.id;t.$store.dispatch("addUserGroup",{userid:s,gid:e})}).catch(function(){t.loading={groups:!1,subadmins:!1}}),this.$store.getters.getGroups[this.groups.length]},addUserGroup:function(e){var t=this;if(!1===e.canAdd)return!1;this.loading.groups=!0;var s=this.user.id,a=e.id;return this.$store.dispatch("addUserGroup",{userid:s,gid:a}).then(function(){return t.loading.groups=!1})},removeUserGroup:function(e){var t=this;if(!1===e.canRemove)return!1;this.loading.groups=!0;var s=this.user.id,a=e.id;return this.$store.dispatch("removeUserGroup",{userid:s,gid:a}).then(function(){t.loading.groups=!1,t.$route.params.selectedGroup===a&&t.$store.commit("deleteUser",s)}).catch(function(){t.loading.groups=!1})},addUserSubAdmin:function(e){var t=this;this.loading.subadmins=!0;var s=this.user.id,a=e.id;return this.$store.dispatch("addUserSubAdmin",{userid:s,gid:a}).then(function(){return t.loading.subadmins=!1})},removeUserSubAdmin:function(e){var t=this;this.loading.subadmins=!0;var s=this.user.id,a=e.id;return this.$store.dispatch("removeUserSubAdmin",{userid:s,gid:a}).then(function(){return t.loading.subadmins=!1})},setUserQuota:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";return this.loading.quota=!0,t=t.id?t.id:t,this.$store.dispatch("setUserData",{userid:this.user.id,key:"quota",value:t}).then(function(){return e.loading.quota=!1}),t},validateQuota:function(e){var t=OC.Util.computerFileSize(e);return null!==t&&t>=0&&this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(e)))},setUserLanguage:function(e){var t=this;return this.loading.languages=!0,this.$store.dispatch("setUserData",{userid:this.user.id,key:"language",value:e.code}).then(function(){return t.loading.languages=!1}),e},sendWelcomeMail:function(){var e=this;this.loading.all=!0,this.$store.dispatch("sendWelcomeMail",this.user.id).then(function(s){s&&(e.feedbackMessage=t("setting","Welcome mail sent!"),setTimeout(function(){e.feedbackMessage=""},2e3)),e.loading.all=!1})}}},v=Object(o.a)(f,function(){var e=this,t=e.$createElement,s=e._self._c||t;return 1===Object.keys(e.user).length?s("div",{staticClass:"row",attrs:{"data-id":e.user.id}},[s("div",{staticClass:"avatar",class:{"icon-loading-small":e.loading.delete||e.loading.disable}},[e.loading.delete||e.loading.disable?e._e():s("img",{attrs:{alt:"",width:"32",height:"32",src:e.generateAvatar(e.user.id,32),srcset:e.generateAvatar(e.user.id,64)+" 2x, "+e.generateAvatar(e.user.id,128)+" 4x"}})]),e._v(" "),s("div",{staticClass:"name"},[e._v(e._s(e.user.id))]),e._v(" "),s("div",{staticClass:"obfuscated"},[e._v(e._s(e.t("settings","You do not have permissions to see the details of this user")))])]):s("div",{staticClass:"row",class:{disabled:e.loading.delete||e.loading.disable},attrs:{"data-id":e.user.id}},[s("div",{staticClass:"avatar",class:{"icon-loading-small":e.loading.delete||e.loading.disable}},[e.loading.delete||e.loading.disable?e._e():s("img",{attrs:{alt:"",width:"32",height:"32",src:e.generateAvatar(e.user.id,32),srcset:e.generateAvatar(e.user.id,64)+" 2x, "+e.generateAvatar(e.user.id,128)+" 4x"}})]),e._v(" "),s("div",{staticClass:"name"},[e._v(e._s(e.user.id))]),e._v(" "),s("form",{staticClass:"displayName",class:{"icon-loading-small":e.loading.displayName},on:{submit:function(t){return t.preventDefault(),e.updateDisplayName(t)}}},[e.user.backendCapabilities.setDisplayName?[e.user.backendCapabilities.setDisplayName?s("input",{ref:"displayName",attrs:{id:"displayName"+e.user.id+e.rand,type:"text",disabled:e.loading.displayName||e.loading.all,autocomplete:"new-password",autocorrect:"off",autocapitalize:"off",spellcheck:"false"},domProps:{value:e.user.displayname}}):e._e(),e._v(" "),e.user.backendCapabilities.setDisplayName?s("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}}):e._e()]:s("div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:e.t("settings","The backend does not support changing the display name"),expression:"t('settings', 'The backend does not support changing the display name')",modifiers:{auto:!0}}],staticClass:"name"},[e._v(e._s(e.user.displayname))])],2),e._v(" "),e.settings.canChangePassword&&e.user.backendCapabilities.setPassword?s("form",{staticClass:"password",class:{"icon-loading-small":e.loading.password},on:{submit:function(t){return t.preventDefault(),e.updatePassword(t)}}},[s("input",{ref:"password",attrs:{id:"password"+e.user.id+e.rand,type:"password",required:"",disabled:e.loading.password||e.loading.all,minlength:e.minPasswordLength,value:"",placeholder:e.t("settings","New password"),autocomplete:"new-password",autocorrect:"off",autocapitalize:"off",spellcheck:"false"}}),e._v(" "),s("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]):s("div"),e._v(" "),s("form",{staticClass:"mailAddress",class:{"icon-loading-small":e.loading.mailAddress},on:{submit:function(t){return t.preventDefault(),e.updateEmail(t)}}},[s("input",{ref:"mailAddress",attrs:{id:"mailAddress"+e.user.id+e.rand,type:"email",disabled:e.loading.mailAddress||e.loading.all,autocomplete:"new-password",autocorrect:"off",autocapitalize:"off",spellcheck:"false"},domProps:{value:e.user.email}}),e._v(" "),s("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]),e._v(" "),s("div",{staticClass:"groups",class:{"icon-loading-small":e.loading.groups}},[s("multiselect",{staticClass:"multiselect-vue",attrs:{value:e.userGroups,options:e.availableGroups,disabled:e.loading.groups||e.loading.all,"tag-placeholder":"create",placeholder:e.t("settings","Add user in group"),label:"name","track-by":"id",limit:2,multiple:!0,taggable:e.settings.isAdmin,closeOnSelect:!1},on:{tag:e.createGroup,select:e.addUserGroup,remove:e.removeUserGroup}},[s("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:e.formatGroupsTitle(e.userGroups),expression:"formatGroupsTitle(userGroups)",modifiers:{auto:!0}}],staticClass:"multiselect__limit",attrs:{slot:"limit"},slot:"limit"},[e._v("+"+e._s(e.userGroups.length-2))]),e._v(" "),s("span",{attrs:{slot:"noResult"},slot:"noResult"},[e._v(e._s(e.t("settings","No results")))])])],1),e._v(" "),e.subAdminsGroups.length>0&&e.settings.isAdmin?s("div",{staticClass:"subadmins",class:{"icon-loading-small":e.loading.subadmins}},[s("multiselect",{staticClass:"multiselect-vue",attrs:{value:e.userSubAdminsGroups,options:e.subAdminsGroups,disabled:e.loading.subadmins||e.loading.all,placeholder:e.t("settings","Set user as admin for"),label:"name","track-by":"id",limit:2,multiple:!0,closeOnSelect:!1},on:{select:e.addUserSubAdmin,remove:e.removeUserSubAdmin}},[s("span",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:e.formatGroupsTitle(e.userSubAdminsGroups),expression:"formatGroupsTitle(userSubAdminsGroups)",modifiers:{auto:!0}}],staticClass:"multiselect__limit",attrs:{slot:"limit"},slot:"limit"},[e._v("+"+e._s(e.userSubAdminsGroups.length-2))]),e._v(" "),s("span",{attrs:{slot:"noResult"},slot:"noResult"},[e._v(e._s(e.t("settings","No results")))])])],1):e._e(),e._v(" "),s("div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:e.usedSpace,expression:"usedSpace",modifiers:{auto:!0}}],staticClass:"quota",class:{"icon-loading-small":e.loading.quota}},[s("multiselect",{staticClass:"multiselect-vue",attrs:{value:e.userQuota,options:e.quotaOptions,disabled:e.loading.quota||e.loading.all,"tag-placeholder":"create",placeholder:e.t("settings","Select user quota"),label:"label","track-by":"id",allowEmpty:!1,taggable:!0},on:{tag:e.validateQuota,input:e.setUserQuota}}),e._v(" "),s("progress",{staticClass:"quota-user-progress",class:{warn:e.usedQuota>80},attrs:{max:"100"},domProps:{value:e.usedQuota}})],1),e._v(" "),e.showConfig.showLanguages?s("div",{staticClass:"languages",class:{"icon-loading-small":e.loading.languages}},[s("multiselect",{staticClass:"multiselect-vue",attrs:{value:e.userLanguage,options:e.languages,disabled:e.loading.languages||e.loading.all,placeholder:e.t("settings","No language set"),label:"name","track-by":"code",allowEmpty:!1,"group-values":"languages","group-label":"label"},on:{input:e.setUserLanguage}})],1):e._e(),e._v(" "),e.showConfig.showStoragePath?s("div",{staticClass:"storageLocation"},[e._v(e._s(e.user.storageLocation))]):e._e(),e._v(" "),e.showConfig.showUserBackend?s("div",{staticClass:"userBackend"},[e._v(e._s(e.user.backend))]):e._e(),e._v(" "),e.showConfig.showLastLogin?s("div",{directives:[{name:"tooltip",rawName:"v-tooltip.auto",value:e.user.lastLogin>0?e.OC.Util.formatDate(e.user.lastLogin):"",expression:"user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''",modifiers:{auto:!0}}],staticClass:"lastLogin"},[e._v("\n\t\t"+e._s(e.user.lastLogin>0?e.OC.Util.relativeModifiedDate(e.user.lastLogin):e.t("settings","Never"))+"\n\t")]):e._e(),e._v(" "),s("div",{staticClass:"userActions"},[e.OC.currentUser===e.user.id||"admin"===e.user.id||e.loading.all?e._e():s("div",{staticClass:"toggleUserActions"},[s("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:e.hideMenu,expression:"hideMenu"}],staticClass:"icon-more",on:{click:e.toggleMenu}}),e._v(" "),s("div",{staticClass:"popovermenu",class:{open:e.openedMenu}},[s("popover-menu",{attrs:{menu:e.userActions}})],1)]),e._v(" "),s("div",{staticClass:"feedback",style:{opacity:""!==e.feedbackMessage?1:0}},[s("div",{staticClass:"icon-checkmark"}),e._v("\n\t\t\t"+e._s(e.feedbackMessage)+"\n\t\t")])])])},[],!1,null,null,null).exports,w=a(65),b=a.n(w),_={name:"userList",props:["users","showConfig","selectedGroup","externalActions"],components:{userRow:v,Multiselect:g.a,InfiniteLoading:b.a},data:function(){var e={id:"none",label:t("settings","Unlimited")},s={id:"default",label:t("settings","Default quota")};return{unlimitedQuota:e,defaultQuota:s,loading:{all:!1,groups:!1},scrolled:!1,searchQuery:"",newUser:{id:"",displayName:"",password:"",mailAddress:"",groups:[],subAdminsGroups:[],quota:s,language:{code:"en",name:t("settings","Default language")}}}},mounted:function(){this.settings.canChangePassword||OC.Notification.showTemporary(t("settings","Password change is disabled because the master key is disabled")),h.a.set(this.newUser.language,"code",this.settings.defaultLanguage),this.setNewUserDefaultGroup(this.selectedGroup),this.userSearch=new OCA.Search(this.search,this.resetSearch)},computed:{settings:function(){return this.$store.getters.getServerData},filteredUsers:function(){if("disabled"===this.selectedGroup){var e=this.users.filter(function(e){return!1===e.enabled});return 0===e.length&&this.$refs.infiniteLoading&&this.$refs.infiniteLoading.isComplete&&(this.$router.push({name:"users"}),this.$refs.infiniteLoading.stateChanger.reset()),e}return this.settings.isAdmin?this.users.filter(function(e){return!1!==e.enabled}):this.users.filter(function(e){return!1!==e.enabled&&e.id!==oc_current_user})},groups:function(){return this.$store.getters.getGroups.filter(function(e){return"disabled"!==e.id}).sort(function(e,t){return e.name.localeCompare(t.name)})},canAddGroups:function(){return this.groups.map(function(e){return(e=Object.assign({},e)).$isDisabled=!1===e.canAdd,e})},subAdminsGroups:function(){return this.$store.getters.getSubadminGroups},quotaOptions:function(){var e=this.settings.quotaPreset.reduce(function(e,t){return e.concat({id:t,label:t})},[]);return e.unshift(this.unlimitedQuota),e.unshift(this.defaultQuota),e},minPasswordLength:function(){return this.$store.getters.getPasswordPolicyMinLength},usersOffset:function(){return this.$store.getters.getUsersOffset},usersLimit:function(){return this.$store.getters.getUsersLimit},usersCount:function(){return this.users.length},languages:function(){return Array({label:t("settings","Common languages"),languages:this.settings.languages.commonlanguages},{label:t("settings","All languages"),languages:this.settings.languages.languages})}},watch:{selectedGroup:function(e,t){this.$store.commit("resetUsers"),this.$refs.infiniteLoading.stateChanger.reset(),this.setNewUserDefaultGroup(e)},usersCount:function(e,t){0===e&&1===t?this.$refs.infiniteLoading.stateChanger.reset():1===e&&0===t&&this.$refs.infiniteLoading.stateChanger.loaded()}},methods:{onScroll:function(e){this.scrolled=e.target.scrollTo>0},validateQuota:function(e){var t=OC.Util.computerFileSize(e);return null!==t&&t>=0?(e=OC.Util.humanFileSize(OC.Util.computerFileSize(e)),this.newUser.quota={id:e,label:e}):this.newUser.quota=this.quotaOptions[0]},infiniteHandler:function(e){this.$store.dispatch("getUsers",{offset:this.usersOffset,limit:this.usersLimit,group:"disabled"!==this.selectedGroup?this.selectedGroup:"",search:this.searchQuery}).then(function(t){t?e.loaded():e.complete()})},search:function(e){this.searchQuery=e,this.$store.commit("resetUsers"),this.$refs.infiniteLoading.stateChanger.reset()},resetSearch:function(){this.search("")},resetForm:function(){Object.assign(this.newUser,this.$options.data.call(this).newUser),this.setNewUserDefaultGroup(this.selectedGroup),this.loading.all=!1},createUser:function(){var e=this;this.loading.all=!0,this.$store.dispatch("addUser",{userid:this.newUser.id,password:this.newUser.password,displayName:this.newUser.displayName,email:this.newUser.mailAddress,groups:this.newUser.groups.map(function(e){return e.id}),subadmin:this.newUser.subAdminsGroups.map(function(e){return e.id}),quota:this.newUser.quota.id,language:this.newUser.language.code}).then(function(){e.resetForm()}).catch(function(t){if(e.loading.all=!1,t.response&&t.response.data&&t.response.data.ocs&&t.response.data.ocs.meta){var s=t.response.data.ocs.meta.statuscode;102===s?e.$refs.newusername.focus():107===s&&e.$refs.newuserpassword.focus()}})},setNewUserDefaultGroup:function(e){if(e&&e.length>0){var t=this.groups.find(function(t){return t.id===e});if(t)return void(this.newUser.groups=[t])}this.newUser.groups=[]},createGroup:function(e){var t=this;return this.loading.groups=!0,this.$store.dispatch("addGroup",e).then(function(s){t.newUser.groups.push(t.groups.find(function(t){return t.id===e})),t.loading.groups=!1}).catch(function(){t.loading.groups=!1}),this.$store.getters.getGroups[this.groups.length]}}},C=Object(o.a)(_,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"user-list-grid",attrs:{id:"app-content"},on:{"&scroll":function(t){return e.onScroll(t)}}},[s("div",{staticClass:"row",class:{sticky:e.scrolled&&!e.showConfig.showNewUserForm},attrs:{id:"grid-header"}},[s("div",{staticClass:"avatar",attrs:{id:"headerAvatar"}}),e._v(" "),s("div",{staticClass:"name",attrs:{id:"headerName"}},[e._v(e._s(e.t("settings","Username")))]),e._v(" "),s("div",{staticClass:"displayName",attrs:{id:"headerDisplayName"}},[e._v(e._s(e.t("settings","Display name")))]),e._v(" "),s("div",{staticClass:"password",attrs:{id:"headerPassword"}},[e._v(e._s(e.t("settings","Password")))]),e._v(" "),s("div",{staticClass:"mailAddress",attrs:{id:"headerAddress"}},[e._v(e._s(e.t("settings","Email")))]),e._v(" "),s("div",{staticClass:"groups",attrs:{id:"headerGroups"}},[e._v(e._s(e.t("settings","Groups")))]),e._v(" "),e.subAdminsGroups.length>0&&e.settings.isAdmin?s("div",{staticClass:"subadmins",attrs:{id:"headerSubAdmins"}},[e._v(e._s(e.t("settings","Group admin for")))]):e._e(),e._v(" "),s("div",{staticClass:"quota",attrs:{id:"headerQuota"}},[e._v(e._s(e.t("settings","Quota")))]),e._v(" "),e.showConfig.showLanguages?s("div",{staticClass:"languages",attrs:{id:"headerLanguages"}},[e._v(e._s(e.t("settings","Language")))]):e._e(),e._v(" "),e.showConfig.showStoragePath?s("div",{staticClass:"headerStorageLocation storageLocation"},[e._v(e._s(e.t("settings","Storage location")))]):e._e(),e._v(" "),e.showConfig.showUserBackend?s("div",{staticClass:"headerUserBackend userBackend"},[e._v(e._s(e.t("settings","User backend")))]):e._e(),e._v(" "),e.showConfig.showLastLogin?s("div",{staticClass:"headerLastLogin lastLogin"},[e._v(e._s(e.t("settings","Last login")))]):e._e(),e._v(" "),s("div",{staticClass:"userActions"})]),e._v(" "),s("form",{directives:[{name:"show",rawName:"v-show",value:e.showConfig.showNewUserForm,expression:"showConfig.showNewUserForm"}],staticClass:"row",class:{sticky:e.scrolled&&e.showConfig.showNewUserForm},attrs:{id:"new-user",disabled:e.loading.all},on:{submit:function(t){return t.preventDefault(),e.createUser(t)}}},[s("div",{class:e.loading.all?"icon-loading-small":"icon-add"}),e._v(" "),s("div",{staticClass:"name"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.newUser.id,expression:"newUser.id"}],ref:"newusername",attrs:{id:"newusername",type:"text",required:"",placeholder:e.t("settings","Username"),name:"username",autocomplete:"off",autocapitalize:"none",autocorrect:"off",pattern:"[a-zA-Z0-9 _\\.@\\-']+"},domProps:{value:e.newUser.id},on:{input:function(t){t.target.composing||e.$set(e.newUser,"id",t.target.value)}}})]),e._v(" "),s("div",{staticClass:"displayName"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.newUser.displayName,expression:"newUser.displayName"}],attrs:{id:"newdisplayname",type:"text",placeholder:e.t("settings","Display name"),name:"displayname",autocomplete:"off",autocapitalize:"none",autocorrect:"off"},domProps:{value:e.newUser.displayName},on:{input:function(t){t.target.composing||e.$set(e.newUser,"displayName",t.target.value)}}})]),e._v(" "),s("div",{staticClass:"password"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.newUser.password,expression:"newUser.password"}],ref:"newuserpassword",attrs:{id:"newuserpassword",type:"password",required:""===e.newUser.mailAddress,placeholder:e.t("settings","Password"),name:"password",autocomplete:"new-password",autocapitalize:"none",autocorrect:"off",minlength:e.minPasswordLength},domProps:{value:e.newUser.password},on:{input:function(t){t.target.composing||e.$set(e.newUser,"password",t.target.value)}}})]),e._v(" "),s("div",{staticClass:"mailAddress"},[s("input",{directives:[{name:"model",rawName:"v-model",value:e.newUser.mailAddress,expression:"newUser.mailAddress"}],attrs:{id:"newemail",type:"email",required:""===e.newUser.password,placeholder:e.t("settings","Email"),name:"email",autocomplete:"off",autocapitalize:"none",autocorrect:"off"},domProps:{value:e.newUser.mailAddress},on:{input:function(t){t.target.composing||e.$set(e.newUser,"mailAddress",t.target.value)}}})]),e._v(" "),s("div",{staticClass:"groups"},[e.settings.isAdmin?e._e():s("input",{class:{"icon-loading-small":e.loading.groups},attrs:{type:"text",tabindex:"-1",id:"newgroups",required:!e.settings.isAdmin},domProps:{value:e.newUser.groups}}),e._v(" "),s("multiselect",{staticClass:"multiselect-vue",attrs:{options:e.canAddGroups,disabled:e.loading.groups||e.loading.all,"tag-placeholder":"create",placeholder:e.t("settings","Add user in group"),label:"name","track-by":"id",multiple:!0,taggable:!0,"close-on-select":!1},on:{tag:e.createGroup},model:{value:e.newUser.groups,callback:function(t){e.$set(e.newUser,"groups",t)},expression:"newUser.groups"}},[s("span",{attrs:{slot:"noResult"},slot:"noResult"},[e._v(e._s(e.t("settings","No results")))])])],1),e._v(" "),e.subAdminsGroups.length>0&&e.settings.isAdmin?s("div",{staticClass:"subadmins"},[s("multiselect",{staticClass:"multiselect-vue",attrs:{options:e.subAdminsGroups,placeholder:e.t("settings","Set user as admin for"),label:"name","track-by":"id",multiple:!0,"close-on-select":!1},model:{value:e.newUser.subAdminsGroups,callback:function(t){e.$set(e.newUser,"subAdminsGroups",t)},expression:"newUser.subAdminsGroups"}},[s("span",{attrs:{slot:"noResult"},slot:"noResult"},[e._v(e._s(e.t("settings","No results")))])])],1):e._e(),e._v(" "),s("div",{staticClass:"quota"},[s("multiselect",{staticClass:"multiselect-vue",attrs:{options:e.quotaOptions,placeholder:e.t("settings","Select user quota"),label:"label","track-by":"id",allowEmpty:!1,taggable:!0},on:{tag:e.validateQuota},model:{value:e.newUser.quota,callback:function(t){e.$set(e.newUser,"quota",t)},expression:"newUser.quota"}})],1),e._v(" "),e.showConfig.showLanguages?s("div",{staticClass:"languages"},[s("multiselect",{staticClass:"multiselect-vue",attrs:{options:e.languages,placeholder:e.t("settings","Default language"),label:"name","track-by":"code",allowEmpty:!1,"group-values":"languages","group-label":"label"},model:{value:e.newUser.language,callback:function(t){e.$set(e.newUser,"language",t)},expression:"newUser.language"}})],1):e._e(),e._v(" "),e.showConfig.showStoragePath?s("div",{staticClass:"storageLocation"}):e._e(),e._v(" "),e.showConfig.showUserBackend?s("div",{staticClass:"userBackend"}):e._e(),e._v(" "),e.showConfig.showLastLogin?s("div",{staticClass:"lastLogin"}):e._e(),e._v(" "),s("div",{staticClass:"userActions"},[s("input",{staticClass:"button primary icon-checkmark-white has-tooltip",attrs:{type:"submit",id:"newsubmit",value:"",title:e.t("settings","Add a new user")}})])]),e._v(" "),e._l(e.filteredUsers,function(t,a){return s("user-row",{key:a,attrs:{user:t,settings:e.settings,showConfig:e.showConfig,groups:e.groups,subAdminsGroups:e.subAdminsGroups,quotaOptions:e.quotaOptions,languages:e.languages,externalActions:e.externalActions}})}),e._v(" "),s("infinite-loading",{ref:"infiniteLoading",on:{infinite:e.infiniteHandler}},[s("div",{attrs:{slot:"spinner"},slot:"spinner"},[s("div",{staticClass:"users-icon-loading icon-loading"})]),e._v(" "),s("div",{attrs:{slot:"no-more"},slot:"no-more"},[s("div",{staticClass:"users-list-end"})]),e._v(" "),s("div",{attrs:{slot:"no-results"},slot:"no-results"},[s("div",{attrs:{id:"emptycontent"}},[s("div",{staticClass:"icon-contacts-dark"}),e._v(" "),s("h2",[e._v(e._s(e.t("settings","No users in here")))])])])])],2)},[],!1,null,null,null).exports,y=a(63),U=a.n(y);a(0);function A(e){return(A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}h.a.use(U.a);var L={name:"Users",props:["selectedGroup"],components:{AppContent:i.AppContent,AppNavigationItem:i.AppNavigationItem,AppNavigationNew:i.AppNavigationNew,AppNavigationSettings:i.AppNavigationSettings,userList:C,Multiselect:g.a},beforeMount:function(){this.$store.commit("initGroups",{groups:this.$store.getters.getServerData.groups,orderBy:this.$store.getters.getServerData.sortGroups,userCount:this.$store.getters.getServerData.userCount}),this.$store.dispatch("getPasswordPolicyMinLength")},created:function(){Object.assign(OCA,{Settings:{UserList:{registerAction:this.registerAction}}})},data:function(){return{unlimitedQuota:{id:"none",label:t("settings","Unlimited")},selectedQuota:!1,externalActions:[],showAddGroupEntry:!1,loadingAddGroup:!1,showConfig:{showStoragePath:!1,showUserBackend:!1,showLastLogin:!1,showNewUserForm:!1,showLanguages:!1}}},methods:{toggleNewUserMenu:function(){this.showConfig.showNewUserForm=!this.showConfig.showNewUserForm,this.showConfig.showNewUserForm&&h.a.nextTick(function(){window.newusername.focus()})},getLocalstorage:function(e){var t=this.$localStorage.get(e);return this.showConfig[e]=null!==t?"true"===t:this.showConfig[e],this.showConfig[e]},setLocalStorage:function(e,t){return this.showConfig[e]=t,this.$localStorage.set(e,t),t},removeGroup:function(e){var s=this;OC.dialogs.confirm(t("settings","You are about to remove the group {group}. The users will NOT be deleted.",{group:e}),t("settings","Please confirm the group removal "),function(t){t&&s.$store.dispatch("removeGroup",e)})},setDefaultQuota:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"none";this.$store.dispatch("setAppConfig",{app:"files",key:"default_quota",value:t.id?t.id:t}).then(function(){"object"!==A(t)&&(t={id:t,label:t}),e.defaultQuota=t})},validateQuota:function(e){var t=OC.Util.computerFileSize(e);return 0===t?this.setDefaultQuota("none"):null!==t&&this.setDefaultQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(e)))},registerAction:function(e,t,s){return this.externalActions.push({icon:e,text:t,action:s}),this.externalActions},createGroup:function(e){var t=this,s=e.target[0].value;this.loadingAddGroup=!0,this.$store.dispatch("addGroup",s).then(function(){t.showAddGroupEntry=!1,t.loadingAddGroup=!1,t.$router.push({name:"group",params:{selectedGroup:s}})}).catch(function(){t.loadingAddGroup=!1})}},computed:{users:function(){return this.$store.getters.getUsers},usersOffset:function(){return this.$store.getters.getUsersOffset},usersLimit:function(){return this.$store.getters.getUsersLimit},showLanguages:{get:function(){return this.getLocalstorage("showLanguages")},set:function(e){this.setLocalStorage("showLanguages",e)}},showLastLogin:{get:function(){return this.getLocalstorage("showLastLogin")},set:function(e){this.setLocalStorage("showLastLogin",e)}},showUserBackend:{get:function(){return this.getLocalstorage("showUserBackend")},set:function(e){this.setLocalStorage("showUserBackend",e)}},showStoragePath:{get:function(){return this.getLocalstorage("showStoragePath")},set:function(e){this.setLocalStorage("showStoragePath",e)}},userCount:function(){return this.$store.getters.getUserCount},settings:function(){return this.$store.getters.getServerData},quotaOptions:function(){var e=this.settings.quotaPreset.reduce(function(e,t){return e.concat({id:t,label:t})},[]);return e.unshift(this.unlimitedQuota),e},defaultQuota:{get:function(){return!1!==this.selectedQuota?this.selectedQuota:OC.Util.computerFileSize(this.settings.defaultQuota)>0?{id:this.settings.defaultQuota,label:this.settings.defaultQuota}:this.unlimitedQuota},set:function(e){this.selectedQuota=e}},menu:function(){var e=this,s=this,a=this.$store.getters.getGroups,i=(a=(a=Array.isArray(a)?a:[]).map(function(a){var i={};return i.id=a.id.replace(" ","_"),i.key=i.id,i.utils={},i.router={name:"group",params:{selectedGroup:a.id}},i.text=a.name,i.title=a.name,(a.usercount-a.disabled>0||-1===a.usercount)&&(i.utils.counter=a.usercount-a.disabled),"admin"!==i.id&&"disabled"!==i.id&&e.settings.isAdmin&&(i.utils.actions=[{icon:"icon-delete",text:t("settings","Remove group"),action:function(){s.removeGroup(a.id)}}]),i})).find(function(e){return"disabled"!==e.id&&"admin"!==e.id});if(i=void 0===i?[]:i,(i=Array.isArray(i)?i:[i]).length>0){var n={caption:!0,text:t("settings","Groups")};a.unshift(n)}var o=a.find(function(e){return"admin"==e.id}),r=a.find(function(e){return"disabled"==e.id});a=a.filter(function(e){return-1===["admin","disabled"].indexOf(e.id)}),o&&o.text&&(o.text=t("settings","Admins"),o.icon="icon-user-admin",a.unshift(o)),r&&r.text&&(r.text=t("settings","Disabled users"),r.icon="icon-disabled-users",r.utils&&(r.utils.counter>0||-1===r.utils.counter)&&a.unshift(r));var u={id:"everyone",key:"everyone",icon:"icon-contacts-dark",router:{name:"users"},text:t("settings","Everyone")};this.userCount>0&&h.a.set(u,"utils",{counter:this.userCount}),a.unshift(u);var l={id:"addgroup",key:"addgroup",icon:"icon-add",text:t("settings","Add group"),classes:this.loadingAddGroup?"icon-loading-small":""};return this.showAddGroupEntry?(h.a.set(l,"edit",{text:t("settings","Add group"),action:this.createGroup,reset:function(){s.showAddGroupEntry=!1}}),l.classes="editing"):h.a.set(l,"action",function(){s.showAddGroupEntry=!0,h.a.nextTick(function(){window.addgroup.querySelector('form > input[type="text"]').focus()})}),a.unshift(l),a}}},k=Object(o.a)(L,function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("AppContent",{attrs:{"app-name":"settings","navigation-class":{"icon-loading":e.loadingAddGroup}},scopedSlots:e._u([{key:"navigation",fn:function(){return[s("AppNavigationNew",{attrs:{"button-id":"new-user-button",text:e.t("settings","New user"),"button-class":"icon-add"},on:{click:e.toggleNewUserMenu}}),e._v(" "),s("ul",{attrs:{id:"usergrouplist"}},e._l(e.menu,function(e){return s("AppNavigationItem",{key:e.key,attrs:{item:e}})}),1),e._v(" "),s("AppNavigationSettings",[s("div",[s("p",[e._v(e._s(e.t("settings","Default quota:")))]),e._v(" "),s("multiselect",{staticClass:"multiselect-vue",attrs:{value:e.defaultQuota,options:e.quotaOptions,"tag-placeholder":"create",placeholder:e.t("settings","Select default quota"),label:"label","track-by":"id",allowEmpty:!1,taggable:!0},on:{tag:e.validateQuota,input:e.setDefaultQuota}})],1),e._v(" "),s("div",[s("input",{directives:[{name:"model",rawName:"v-model",value:e.showLanguages,expression:"showLanguages"}],staticClass:"checkbox",attrs:{type:"checkbox",id:"showLanguages"},domProps:{checked:Array.isArray(e.showLanguages)?e._i(e.showLanguages,null)>-1:e.showLanguages},on:{change:function(t){var s=e.showLanguages,a=t.target,i=!!a.checked;if(Array.isArray(s)){var n=e._i(s,null);a.checked?n<0&&(e.showLanguages=s.concat([null])):n>-1&&(e.showLanguages=s.slice(0,n).concat(s.slice(n+1)))}else e.showLanguages=i}}}),e._v(" "),s("label",{attrs:{for:"showLanguages"}},[e._v(e._s(e.t("settings","Show Languages")))])]),e._v(" "),s("div",[s("input",{directives:[{name:"model",rawName:"v-model",value:e.showLastLogin,expression:"showLastLogin"}],staticClass:"checkbox",attrs:{type:"checkbox",id:"showLastLogin"},domProps:{checked:Array.isArray(e.showLastLogin)?e._i(e.showLastLogin,null)>-1:e.showLastLogin},on:{change:function(t){var s=e.showLastLogin,a=t.target,i=!!a.checked;if(Array.isArray(s)){var n=e._i(s,null);a.checked?n<0&&(e.showLastLogin=s.concat([null])):n>-1&&(e.showLastLogin=s.slice(0,n).concat(s.slice(n+1)))}else e.showLastLogin=i}}}),e._v(" "),s("label",{attrs:{for:"showLastLogin"}},[e._v(e._s(e.t("settings","Show last login")))])]),e._v(" "),s("div",[s("input",{directives:[{name:"model",rawName:"v-model",value:e.showUserBackend,expression:"showUserBackend"}],staticClass:"checkbox",attrs:{type:"checkbox",id:"showUserBackend"},domProps:{checked:Array.isArray(e.showUserBackend)?e._i(e.showUserBackend,null)>-1:e.showUserBackend},on:{change:function(t){var s=e.showUserBackend,a=t.target,i=!!a.checked;if(Array.isArray(s)){var n=e._i(s,null);a.checked?n<0&&(e.showUserBackend=s.concat([null])):n>-1&&(e.showUserBackend=s.slice(0,n).concat(s.slice(n+1)))}else e.showUserBackend=i}}}),e._v(" "),s("label",{attrs:{for:"showUserBackend"}},[e._v(e._s(e.t("settings","Show user backend")))])]),e._v(" "),s("div",[s("input",{directives:[{name:"model",rawName:"v-model",value:e.showStoragePath,expression:"showStoragePath"}],staticClass:"checkbox",attrs:{type:"checkbox",id:"showStoragePath"},domProps:{checked:Array.isArray(e.showStoragePath)?e._i(e.showStoragePath,null)>-1:e.showStoragePath},on:{change:function(t){var s=e.showStoragePath,a=t.target,i=!!a.checked;if(Array.isArray(s)){var n=e._i(s,null);a.checked?n<0&&(e.showStoragePath=s.concat([null])):n>-1&&(e.showStoragePath=s.slice(0,n).concat(s.slice(n+1)))}else e.showStoragePath=i}}}),e._v(" "),s("label",{attrs:{for:"showStoragePath"}},[e._v(e._s(e.t("settings","Show storage path")))])])])]},proxy:!0},{key:"content",fn:function(){return[s("user-list",{attrs:{users:e.users,showConfig:e.showConfig,selectedGroup:e.selectedGroup,externalActions:e.externalActions}})]},proxy:!0}])})},[],!1,null,null,null);s.default=k.exports}}]);
-//# sourceMappingURL=vue-8.js.map
\ No newline at end of file
diff --git a/settings/js/vue-8.js.map b/settings/js/vue-8.js.map
deleted file mode 100644 (file)
index b9a777e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///./settings/src/views/Users.vue?a5b6","webpack:///./settings/src/components/popoverMenu/popoverItem.vue?dd78","webpack:///settings/src/components/popoverMenu/popoverItem.vue","webpack:///./settings/src/components/popoverMenu.vue?c9ec","webpack:///settings/src/components/popoverMenu.vue","webpack:///./settings/src/components/popoverMenu/popoverItem.vue","webpack:///./settings/src/components/popoverMenu/popoverItem.vue?b237","webpack:///./settings/src/components/popoverMenu.vue","webpack:///./settings/src/components/popoverMenu.vue?4243","webpack:///settings/src/components/userList/userRow.vue","webpack:///./settings/src/components/userList/userRow.vue?c225","webpack:///./settings/src/components/userList/userRow.vue","webpack:///./settings/src/components/userList/userRow.vue?1c25","webpack:///./settings/src/components/userList.vue?3703","webpack:///settings/src/components/userList.vue","webpack:///./settings/src/components/userList.vue","webpack:///./settings/src/components/userList.vue?643d","webpack:///settings/src/views/Users.vue","webpack:///./settings/src/views/Users.vue?9466","webpack:///./settings/src/views/Users.vue"],"names":["popoverMenu_popoverItemvue_type_script_lang_js_","props","components_popoverMenuvue_type_script_lang_js_","name","components","popoverItem","Object","componentNormalizer","_vm","this","_h","$createElement","_c","_self","item","attrs","href","target","rel","on","click","action","class","icon","_v","_s","text","longtext","_e","staticClass","popoverMenu","_l","key","vue_runtime_esm","use","v_tooltip_esm","userList_userRowvue_type_script_lang_js_","Multiselect","vue_multiselect_min_default","a","directives","ClickOutside","vue_click_outside_default","mounted","data","rand","parseInt","Math","random","openedMenu","feedbackMessage","loading","all","displayName","password","mailAddress","groups","subadmins","quota","delete","disable","languages","computed","userActions","actions","t","deleteUser","user","enabled","enableDisableUser","email","push","sendWelcomeMail","concat","externalActions","userGroups","_this","filter","group","includes","id","userSubAdminsGroups","_this2","subAdminsGroups","subadmin","availableGroups","_this3","map","groupClone","assign","$isDisabled","canAdd","canRemove","usedSpace","used","size","OC","Util","humanFileSize","usedQuota","min","round","pow","isNaN","userQuota","humanQuota","quotaOptions","find","label","minPasswordLength","$store","getters","getPasswordPolicyMinLength","userLanguage","_this4","userLang","lang","code","language","_typeof","methods","toggleMenu","hideMenu","generateAvatar","arguments","length","undefined","generateUrl","version","oc_userconfig","avatar","formatGroupsTitle","slice","join","_this5","userid","dispatch","then","_this6","updateDisplayName","_this7","$refs","value","updatePassword","_this8","updateEmail","_this9","createGroup","gid","_this10","catch","getGroups","addUserGroup","_this11","removeUserGroup","_this12","$route","params","selectedGroup","commit","addUserSubAdmin","_this13","removeUserSubAdmin","_this14","setUserQuota","_this15","validateQuota","validQuota","computerFileSize","setUserLanguage","_this16","_this17","success","setTimeout","userRow","keys","data-id","icon-loading-small","alt","width","height","src","srcset","disabled","submit","$event","preventDefault","backendCapabilities","ref","type","autocomplete","autocorrect","autocapitalize","spellcheck","domProps","displayname","rawName","expression","modifiers","auto","settings","canChangePassword","setPassword","required","minlength","placeholder","options","tag-placeholder","track-by","limit","multiple","taggable","isAdmin","closeOnSelect","tag","select","remove","slot","allowEmpty","input","warn","max","showConfig","group-values","group-label","storageLocation","backend","lastLogin","formatDate","relativeModifiedDate","currentUser","open","menu","style","opacity","components_userListvue_type_script_lang_js_","InfiniteLoading","vue_infinite_loading_default","unlimitedQuota","defaultQuota","scrolled","searchQuery","newUser","Notification","showTemporary","set","defaultLanguage","setNewUserDefaultGroup","userSearch","OCA","Search","search","resetSearch","getServerData","filteredUsers","disabledUsers","users","infiniteLoading","isComplete","$router","stateChanger","reset","oc_current_user","sort","b","localeCompare","canAddGroups","getSubadminGroups","quotaPreset","reduce","acc","cur","unshift","usersOffset","getUsersOffset","usersLimit","getUsersLimit","usersCount","Array","commonlanguages","watch","val","old","loaded","onScroll","event","scrollTo","infiniteHandler","$state","offset","response","complete","query","resetForm","$options","call","createUser","error","ocs","meta","statuscode","newusername","focus","newuserpassword","currentGroup","userList","&scroll","sticky","showNewUserForm","pattern","composing","$set","tabindex","close-on-select","model","callback","$$v","title","infinite","vue_local_storage_default","views_Usersvue_type_script_lang_js_","AppContent","ncvuecomponents","AppNavigationItem","AppNavigationNew","AppNavigationSettings","beforeMount","orderBy","sortGroups","userCount","created","Settings","UserList","registerAction","selectedQuota","showAddGroupEntry","loadingAddGroup","showStoragePath","showUserBackend","showLastLogin","showLanguages","toggleNewUserMenu","nextTick","window","getLocalstorage","localConfig","$localStorage","get","setLocalStorage","status","removeGroup","groupid","self","dialogs","confirm","setDefaultQuota","app","Usersvue_type_script_lang_js_typeof","getUsers","getUserCount","realGroups","isArray","replace","utils","router","usercount","counter","separator","caption","adminGroup","disabledGroup","indexOf","everyoneGroup","addGroup","classes","addgroup","querySelector","Users_component","app-name","navigation-class","icon-loading","scopedSlots","_u","fn","button-id","button-class","checked","_i","change","$$a","$$el","$$c","$$i","for","proxy","__webpack_exports__"],"mappings":"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","file":"vue-8.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('AppContent',{attrs:{\"app-name\":\"settings\",\"navigation-class\":{ 'icon-loading': _vm.loadingAddGroup }},scopedSlots:_vm._u([{key:\"navigation\",fn:function(){return [_c('AppNavigationNew',{attrs:{\"button-id\":\"new-user-button\",\"text\":_vm.t('settings','New user'),\"button-class\":\"icon-add\"},on:{\"click\":_vm.toggleNewUserMenu}}),_vm._v(\" \"),_c('ul',{attrs:{\"id\":\"usergrouplist\"}},_vm._l((_vm.menu),function(item){return _c('AppNavigationItem',{key:item.key,attrs:{\"item\":item}})}),1),_vm._v(\" \"),_c('AppNavigationSettings',[_c('div',[_c('p',[_vm._v(_vm._s(_vm.t('settings', 'Default quota:')))]),_vm._v(\" \"),_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"value\":_vm.defaultQuota,\"options\":_vm.quotaOptions,\"tag-placeholder\":\"create\",\"placeholder\":_vm.t('settings', 'Select default quota'),\"label\":\"label\",\"track-by\":\"id\",\"allowEmpty\":false,\"taggable\":true},on:{\"tag\":_vm.validateQuota,\"input\":_vm.setDefaultQuota}})],1),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showLanguages),expression:\"showLanguages\"}],staticClass:\"checkbox\",attrs:{\"type\":\"checkbox\",\"id\":\"showLanguages\"},domProps:{\"checked\":Array.isArray(_vm.showLanguages)?_vm._i(_vm.showLanguages,null)>-1:(_vm.showLanguages)},on:{\"change\":function($event){var $$a=_vm.showLanguages,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showLanguages=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showLanguages=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showLanguages=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showLanguages\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show Languages')))])]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showLastLogin),expression:\"showLastLogin\"}],staticClass:\"checkbox\",attrs:{\"type\":\"checkbox\",\"id\":\"showLastLogin\"},domProps:{\"checked\":Array.isArray(_vm.showLastLogin)?_vm._i(_vm.showLastLogin,null)>-1:(_vm.showLastLogin)},on:{\"change\":function($event){var $$a=_vm.showLastLogin,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showLastLogin=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showLastLogin=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showLastLogin=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showLastLogin\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show last login')))])]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showUserBackend),expression:\"showUserBackend\"}],staticClass:\"checkbox\",attrs:{\"type\":\"checkbox\",\"id\":\"showUserBackend\"},domProps:{\"checked\":Array.isArray(_vm.showUserBackend)?_vm._i(_vm.showUserBackend,null)>-1:(_vm.showUserBackend)},on:{\"change\":function($event){var $$a=_vm.showUserBackend,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showUserBackend=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showUserBackend=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showUserBackend=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showUserBackend\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show user backend')))])]),_vm._v(\" \"),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showStoragePath),expression:\"showStoragePath\"}],staticClass:\"checkbox\",attrs:{\"type\":\"checkbox\",\"id\":\"showStoragePath\"},domProps:{\"checked\":Array.isArray(_vm.showStoragePath)?_vm._i(_vm.showStoragePath,null)>-1:(_vm.showStoragePath)},on:{\"change\":function($event){var $$a=_vm.showStoragePath,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showStoragePath=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showStoragePath=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showStoragePath=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"showStoragePath\"}},[_vm._v(_vm._s(_vm.t('settings', 'Show storage path')))])])])]},proxy:true},{key:\"content\",fn:function(){return [_c('user-list',{attrs:{\"users\":_vm.users,\"showConfig\":_vm.showConfig,\"selectedGroup\":_vm.selectedGroup,\"externalActions\":_vm.externalActions}})]},proxy:true}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./popoverItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./popoverItem.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @author John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<li>\n\t\t<!-- If item.href is set, a link will be directly used -->\n\t\t<a @click=\"item.action\" v-if=\"item.href\" :href=\"(item.href) ? item.href : '#' \" :target=\"(item.target) ? item.target : '' \" rel=\"noreferrer noopener\">\n\t\t\t<span :class=\"item.icon\"></span>\n\t\t\t<span v-if=\"item.text\">{{item.text}}</span>\n\t\t\t<p v-else-if=\"item.longtext\">{{item.longtext}}</p>\n\t\t</a>\n\t\t<!-- If item.action is set instead, a button will be used -->\n\t\t<button @click=\"item.action\" v-else-if=\"item.action\">\n\t\t\t<span :class=\"item.icon\"></span>\n\t\t\t<span v-if=\"item.text\">{{item.text}}</span>\n\t\t\t<p v-else-if=\"item.longtext\">{{item.longtext}}</p>\n\t\t</button>\n\t\t<!-- If item.longtext is set AND the item does not have an action -->\n\t\t<span class=\"menuitem\" v-else>\n\t\t\t<span :class=\"item.icon\"></span>\n\t\t\t<span v-if=\"item.text\">{{item.text}}</span>\n\t\t\t<p v-else-if=\"item.longtext\">{{item.longtext}}</p>\n\t\t</span>\n\t</li>\n</template>\n\n<script>\nexport default {\n\tprops: ['item']\n};\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./popoverMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./popoverMenu.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @author John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<ul>\n\t\t<popover-item v-for=\"(item, key) in menu\" :item=\"item\" :key=\"key\" />\n\t</ul>\n</template>\n\n\n<script>\nimport popoverItem from './popoverMenu/popoverItem';\n\nexport default {\n\tname: 'popoverMenu',\n\tprops: ['menu'],\n\tcomponents: {\n\t\tpopoverItem\n\t}\n}\n</script>\n","import { render, staticRenderFns } from \"./popoverItem.vue?vue&type=template&id=5542f16d&\"\nimport script from \"./popoverItem.vue?vue&type=script&lang=js&\"\nexport * from \"./popoverItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',[(_vm.item.href)?_c('a',{attrs:{\"href\":(_vm.item.href) ? _vm.item.href : '#',\"target\":(_vm.item.target) ? _vm.item.target : '',\"rel\":\"noreferrer noopener\"},on:{\"click\":_vm.item.action}},[_c('span',{class:_vm.item.icon}),_vm._v(\" \"),(_vm.item.text)?_c('span',[_vm._v(_vm._s(_vm.item.text))]):(_vm.item.longtext)?_c('p',[_vm._v(_vm._s(_vm.item.longtext))]):_vm._e()]):(_vm.item.action)?_c('button',{on:{\"click\":_vm.item.action}},[_c('span',{class:_vm.item.icon}),_vm._v(\" \"),(_vm.item.text)?_c('span',[_vm._v(_vm._s(_vm.item.text))]):(_vm.item.longtext)?_c('p',[_vm._v(_vm._s(_vm.item.longtext))]):_vm._e()]):_c('span',{staticClass:\"menuitem\"},[_c('span',{class:_vm.item.icon}),_vm._v(\" \"),(_vm.item.text)?_c('span',[_vm._v(_vm._s(_vm.item.text))]):(_vm.item.longtext)?_c('p',[_vm._v(_vm._s(_vm.item.longtext))]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./popoverMenu.vue?vue&type=template&id=62de1dda&\"\nimport script from \"./popoverMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./popoverMenu.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',_vm._l((_vm.menu),function(item,key){return _c('popover-item',{key:key,attrs:{\"item\":item}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n  - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @author John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<!-- Obfuscated user: Logged in user does not have permissions to see all of the data -->\n\t<div class=\"row\" v-if=\"Object.keys(user).length ===1\" :data-id=\"user.id\">\n\t\t<div class=\"avatar\" :class=\"{'icon-loading-small': loading.delete || loading.disable}\">\n\t\t\t<img alt=\"\" width=\"32\" height=\"32\" :src=\"generateAvatar(user.id, 32)\"\n\t\t\t\t :srcset=\"generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'\"\n\t\t\t\t v-if=\"!loading.delete && !loading.disable\">\n\t\t</div>\n\t\t<div class=\"name\">{{user.id}}</div>\n\t\t<div class=\"obfuscated\">{{t('settings','You do not have permissions to see the details of this user')}}</div>\n\t</div>\n\n\t<!-- User full data -->\n\t<div class=\"row\" v-else :class=\"{'disabled': loading.delete || loading.disable}\" :data-id=\"user.id\">\n\t\t<div class=\"avatar\" :class=\"{'icon-loading-small': loading.delete || loading.disable}\">\n\t\t\t<img alt=\"\" width=\"32\" height=\"32\" :src=\"generateAvatar(user.id, 32)\"\n\t\t\t\t :srcset=\"generateAvatar(user.id, 64)+' 2x, '+generateAvatar(user.id, 128)+' 4x'\"\n\t\t\t\t v-if=\"!loading.delete && !loading.disable\">\n\t\t</div>\n\t\t<!-- dirty hack to ellipsis on two lines -->\n\t\t<div class=\"name\">{{user.id}}</div>\n\t\t<form class=\"displayName\" :class=\"{'icon-loading-small': loading.displayName}\" v-on:submit.prevent=\"updateDisplayName\">\n\t\t\t<template v-if=\"user.backendCapabilities.setDisplayName\">\n\t\t\t\t<input v-if=\"user.backendCapabilities.setDisplayName\"\n\t\t\t\t\t\t:id=\"'displayName'+user.id+rand\" type=\"text\"\n\t\t\t\t\t\t:disabled=\"loading.displayName||loading.all\"\n\t\t\t\t\t\t:value=\"user.displayname\" ref=\"displayName\"\n\t\t\t\t\t\tautocomplete=\"new-password\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\n\t\t\t\t<input v-if=\"user.backendCapabilities.setDisplayName\" type=\"submit\" class=\"icon-confirm\" value=\"\" />\n\t\t\t</template>\n\t\t\t<div v-else class=\"name\" v-tooltip.auto=\"t('settings', 'The backend does not support changing the display name')\">{{user.displayname}}</div>\n\t\t</form>\n\t\t<form class=\"password\" v-if=\"settings.canChangePassword && user.backendCapabilities.setPassword\" :class=\"{'icon-loading-small': loading.password}\"\n\t\t\t  v-on:submit.prevent=\"updatePassword\">\n\t\t\t<input :id=\"'password'+user.id+rand\" type=\"password\" required\n\t\t\t\t\t:disabled=\"loading.password||loading.all\" :minlength=\"minPasswordLength\"\n\t\t\t\t\tvalue=\"\" :placeholder=\"t('settings', 'New password')\" ref=\"password\"\n\t\t\t\t\tautocomplete=\"new-password\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\n\t\t\t<input type=\"submit\" class=\"icon-confirm\" value=\"\" />\n\t\t</form>\n\t\t<div v-else></div>\n\t\t<form class=\"mailAddress\" :class=\"{'icon-loading-small': loading.mailAddress}\" v-on:submit.prevent=\"updateEmail\">\n\t\t\t<input :id=\"'mailAddress'+user.id+rand\" type=\"email\"\n\t\t\t\t\t:disabled=\"loading.mailAddress||loading.all\"\n\t\t\t\t\t:value=\"user.email\" ref=\"mailAddress\"\n\t\t\t\t\tautocomplete=\"new-password\" autocorrect=\"off\" autocapitalize=\"off\" spellcheck=\"false\" />\n\t\t\t<input type=\"submit\" class=\"icon-confirm\" value=\"\" />\n\t\t</form>\n\t\t<div class=\"groups\" :class=\"{'icon-loading-small': loading.groups}\">\n\t\t\t<multiselect :value=\"userGroups\" :options=\"availableGroups\" :disabled=\"loading.groups||loading.all\"\n\t\t\t\t\t\t tag-placeholder=\"create\" :placeholder=\"t('settings', 'Add user in group')\"\n\t\t\t\t\t\t label=\"name\" track-by=\"id\" class=\"multiselect-vue\" :limit=\"2\"\n\t\t\t\t\t\t :multiple=\"true\" :taggable=\"settings.isAdmin\" :closeOnSelect=\"false\"\n\t\t\t\t\t\t @tag=\"createGroup\" @select=\"addUserGroup\" @remove=\"removeUserGroup\">\n\t\t\t\t<span slot=\"limit\" class=\"multiselect__limit\" v-tooltip.auto=\"formatGroupsTitle(userGroups)\">+{{userGroups.length-2}}</span>\n\t\t\t\t<span slot=\"noResult\">{{t('settings', 'No results')}}</span>\n\t\t\t</multiselect>\n\t\t</div>\n\t\t<div class=\"subadmins\" v-if=\"subAdminsGroups.length>0 && settings.isAdmin\" :class=\"{'icon-loading-small': loading.subadmins}\">\n\t\t\t<multiselect :value=\"userSubAdminsGroups\" :options=\"subAdminsGroups\" :disabled=\"loading.subadmins||loading.all\"\n\t\t\t\t\t\t :placeholder=\"t('settings', 'Set user as admin for')\"\n\t\t\t\t\t\t label=\"name\" track-by=\"id\" class=\"multiselect-vue\" :limit=\"2\"\n\t\t\t\t\t\t :multiple=\"true\" :closeOnSelect=\"false\"\n\t\t\t\t\t\t @select=\"addUserSubAdmin\" @remove=\"removeUserSubAdmin\">\n\t\t\t\t<span slot=\"limit\" class=\"multiselect__limit\" v-tooltip.auto=\"formatGroupsTitle(userSubAdminsGroups)\">+{{userSubAdminsGroups.length-2}}</span>\n\t\t\t\t<span slot=\"noResult\">{{t('settings', 'No results')}}</span>\n\t\t\t</multiselect>\n\t\t</div>\n\t\t<div class=\"quota\" :class=\"{'icon-loading-small': loading.quota}\" v-tooltip.auto=\"usedSpace\">\n\t\t\t<multiselect :value=\"userQuota\" :options=\"quotaOptions\" :disabled=\"loading.quota||loading.all\"\n\t\t\t\t\t\t tag-placeholder=\"create\" :placeholder=\"t('settings', 'Select user quota')\"\n\t\t\t\t\t\t label=\"label\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t :allowEmpty=\"false\" :taggable=\"true\"\n\t\t\t\t\t\t @tag=\"validateQuota\" @input=\"setUserQuota\">\n\t\t\t</multiselect>\n\t\t\t<progress class=\"quota-user-progress\" :class=\"{'warn':usedQuota>80}\" :value=\"usedQuota\" max=\"100\"></progress>\n\t\t</div>\n\t\t<div class=\"languages\" :class=\"{'icon-loading-small': loading.languages}\"\n\t\t\t v-if=\"showConfig.showLanguages\">\n\t\t\t<multiselect :value=\"userLanguage\" :options=\"languages\" :disabled=\"loading.languages||loading.all\"\n\t\t\t\t\t\t :placeholder=\"t('settings', 'No language set')\"\n\t\t\t\t\t\t label=\"name\" track-by=\"code\" class=\"multiselect-vue\"\n\t\t\t\t\t\t :allowEmpty=\"false\" group-values=\"languages\" group-label=\"label\"\n\t\t\t\t\t\t @input=\"setUserLanguage\">\n\t\t\t</multiselect>\n\t\t</div>\n\t\t<div class=\"storageLocation\" v-if=\"showConfig.showStoragePath\">{{user.storageLocation}}</div>\n\t\t<div class=\"userBackend\" v-if=\"showConfig.showUserBackend\">{{user.backend}}</div>\n\t\t<div class=\"lastLogin\" v-if=\"showConfig.showLastLogin\" v-tooltip.auto=\"user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''\">\n\t\t\t{{user.lastLogin>0 ? OC.Util.relativeModifiedDate(user.lastLogin) : t('settings','Never')}}\n\t\t</div>\n\t\t<div class=\"userActions\">\n\t\t\t<div class=\"toggleUserActions\" v-if=\"OC.currentUser !== user.id && user.id !== 'admin' && !loading.all\">\n\t\t\t\t<div class=\"icon-more\" v-click-outside=\"hideMenu\" @click=\"toggleMenu\"></div>\n\t\t\t\t<div class=\"popovermenu\" :class=\"{ 'open': openedMenu }\">\n\t\t\t\t\t<popover-menu :menu=\"userActions\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"feedback\" :style=\"{opacity: feedbackMessage !== '' ? 1 : 0}\">\n\t\t\t\t<div class=\"icon-checkmark\"></div>\n\t\t\t\t{{feedbackMessage}}\n\t\t\t</div>\n\t\t</div>\n\t\t</div>\n</template>\n\n<script>\nimport popoverMenu from '../popoverMenu';\nimport ClickOutside from 'vue-click-outside';\nimport Multiselect from 'vue-multiselect';\nimport Vue from 'vue'\nimport VTooltip from 'v-tooltip'\n\nVue.use(VTooltip)\n\nexport default {\n\tname: 'userRow',\n\tprops: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig', 'languages', 'externalActions'],\n\tcomponents: {\n\t\tpopoverMenu,\n\t\tMultiselect\n\t},\n\tdirectives: {\n\t\tClickOutside\n\t},\n\tmounted() {\n\t\t// required if popup needs to stay opened after menu click\n\t\t// since we only have disable/delete actions, let's close it directly\n\t\t// this.popupItem = this.$el;\n\t},\n\tdata() {\n\t\treturn {\n\t\t\trand: parseInt(Math.random() * 1000),\n\t\t\topenedMenu: false,\n\t\t\tfeedbackMessage: '',\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\t/* USER POPOVERMENU ACTIONS */\n\t\tuserActions() {\n\t\t\tlet actions = [{\n\t\t\t\ticon: 'icon-delete',\n\t\t\t\ttext: t('settings','Delete user'),\n\t\t\t\taction: this.deleteUser\n\t\t\t},{\n\t\t\t\ticon: this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\ttext: this.user.enabled ? t('settings','Disable user') : t('settings','Enable user'),\n\t\t\t\taction: this.enableDisableUser\n\t\t\t}];\n\t\t\tif (this.user.email !== null && this.user.email !== '') {\n\t\t\t\tactions.push({\n\t\t\t\t\ticon: 'icon-mail',\n\t\t\t\t\ttext: t('settings','Resend welcome email'),\n\t\t\t\t\taction: this.sendWelcomeMail\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn actions.concat(this.externalActions);\n\t\t},\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups() {\n\t\t\tlet userGroups = this.groups.filter(group => this.user.groups.includes(group.id));\n\t\t\treturn userGroups;\n\t\t},\n\t\tuserSubAdminsGroups() {\n\t\t\tlet userSubAdminsGroups = this.subAdminsGroups.filter(group => this.user.subadmin.includes(group.id));\n\t\t\treturn userSubAdminsGroups;\n\t\t},\n\t\tavailableGroups() {\n\t\t\treturn this.groups.map((group) => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tlet groupClone = Object.assign({}, group);\n\n\t\t\t\t// two settings here:\n\t\t\t\t// 1. user NOT in group but no permission to add\n\t\t\t\t// 2. user is in group but no permission to remove\n\t\t\t\tgroupClone.$isDisabled =\n\t\t\t\t\t(group.canAdd === false &&\n\t\t\t\t\t\t!this.user.groups.includes(group.id)) ||\n\t\t\t\t\t(group.canRemove === false &&\n\t\t\t\t\t\tthis.user.groups.includes(group.id));\n\t\t\t\treturn groupClone;\n\t\t\t});\n\t\t},\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedSpace() {\n\t\t\tif (this.user.quota.used) {\n\t\t\t\treturn t('settings', '{size} used', {size: OC.Util.humanFileSize(this.user.quota.used)});\n\t\t\t}\n\t\t\treturn t('settings', '{size} used', {size: OC.Util.humanFileSize(0)});\n\t\t},\n\t\tusedQuota() {\n\t\t\tlet quota = this.user.quota.quota;\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100));\n\t\t\t} else {\n\t\t\t\tvar usedInGB = this.user.quota.used / (10 * Math.pow(2, 30));\n\t\t\t\t//asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - (1 / (usedInGB + 1)));\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota;\n\t\t},\n\t\t// Mapping saved values to objects\n\t\tuserQuota() {\n\t\t\tif (this.user.quota.quota >= 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tlet humanQuota = OC.Util.humanFileSize(this.user.quota.quota);\n\t\t\t\tlet userQuota = this.quotaOptions.find(quota => quota.id === humanQuota);\n\t\t\t\treturn userQuota ? userQuota : {id:humanQuota, label:humanQuota};\n\t\t\t} else if (this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0];\n\t\t\t}\n\t\t\treturn this.quotaOptions[1]; // unlimited\n\t\t},\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\n\t\t/* LANGUAGE */\n\t\tuserLanguage() {\n\t\t\tlet availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);\n\t\t\tlet userLang = availableLanguages.find(lang => lang.code === this.user.language);\n\t\t\tif (typeof userLang !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language\n\t\t\t\t}\n\t\t\t} else if(this.user.language === '') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn userLang;\n\t\t}\n\t},\n\tmethods: {\n\t\t/* MENU HANDLING */\n\t\ttoggleMenu() {\n\t\t\tthis.openedMenu = !this.openedMenu;\n\t\t},\n\t\thideMenu() {\n\t\t\tthis.openedMenu = false;\n\t\t},\n\n\t\t/**\n\t\t * Generate avatar url\n\t\t * \n\t\t * @param {string} user The user name\n\t\t * @param {int} size Size integer, default 32\n\t\t * @returns {string}\n\t\t */\n\t\tgenerateAvatar(user, size=32) {\n\t\t\treturn OC.generateUrl(\n\t\t\t\t'/avatar/{user}/{size}?v={version}',\n\t\t\t\t{\n\t\t\t\t\tuser: user,\n\t\t\t\t\tsize: size,\n\t\t\t\t\tversion: oc_userconfig.avatar.version\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Format array of groups objects to a string for the popup\n\t\t * \n\t\t * @param {array} groups The groups\n\t\t * @returns {string}\n\t\t */\n\t\tformatGroupsTitle(groups) {\n\t\t\tlet names = groups.map(group => group.name);\n\t\t\treturn names.slice(2,).join(', ');\n\t\t},\n\n\t\tdeleteUser() {\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tlet userid = this.user.id;\n\t\t\treturn this.$store.dispatch('deleteUser', userid)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t});\n\t\t},\n\n\t\tenableDisableUser() {\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tlet userid = this.user.id;\n\t\t\tlet enabled = !this.user.enabled;\n\t\t\treturn this.$store.dispatch('enableDisableUser', {userid, enabled})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.delete = false\n\t\t\t\t\tthis.loading.all = false\n\t\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Set user displayName\n\t\t * \n\t\t * @param {string} displayName The display name\n\t\t * @returns {Promise}\n\t\t */\n\t\tupdateDisplayName() {\n\t\t\tlet displayName = this.$refs.displayName.value;\n\t\t\tthis.loading.displayName = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id, \n\t\t\t\tkey: 'displayname',\n\t\t\t\tvalue: displayName\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.displayName = false;\n\t\t\t\tthis.$refs.displayName.value = displayName;\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Set user password\n\t\t * \n\t\t * @param {string} password The email adress\n\t\t * @returns {Promise}\n\t\t */\n\t\tupdatePassword() {\n\t\t\tlet password = this.$refs.password.value;\n\t\t\tthis.loading.password = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'password',\n\t\t\t\tvalue: password\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.password = false;\n\t\t\t\tthis.$refs.password.value = ''; // empty & show placeholder \n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Set user mailAddress\n\t\t * \n\t\t * @param {string} mailAddress The email adress\n\t\t * @returns {Promise}\n\t\t */\n\t\tupdateEmail() {\n\t\t\tlet mailAddress = this.$refs.mailAddress.value;\n\t\t\tthis.loading.mailAddress = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'email',\n\t\t\t\tvalue: mailAddress\n\t\t\t}).then(() => {\n\t\t\t\tthis.loading.mailAddress = false;\n\t\t\t\tthis.$refs.mailAddress.value = mailAddress;\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Create a new group and add user to it\n\t\t * \n\t\t * @param {string} groups Group id\n\t\t * @returns {Promise}\n\t\t */\n\t\tcreateGroup(gid) {\n\t\t\tthis.loading = {groups:true, subadmins:true}\n\t\t\tthis.$store.dispatch('addGroup', gid)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = {groups:false, subadmins:false};\n\t\t\t\t\tlet userid = this.user.id;\n\t\t\t\t\tthis.$store.dispatch('addUserGroup', {userid, gid});\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.loading = {groups:false, subadmins:false};\n\t\t\t\t});\n\t\t\treturn this.$store.getters.getGroups[this.groups.length];\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t * \n\t\t * @param {object} group Group object\n\t\t * @returns {Promise}\n\t\t */\n\t\taddUserGroup(group) {\n\t\t\tif (group.canAdd === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.loading.groups = true;\n\t\t\tlet userid = this.user.id;\n\t\t\tlet gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserGroup', {userid, gid})\n\t\t\t\t.then(() => this.loading.groups = false);\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t * \n\t\t * @param {object} group Group object\n\t\t * @returns {Promise}\n\t\t */\n\t\tremoveUserGroup(group) {\n\t\t\tif (group.canRemove === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.loading.groups = true;\n\t\t\tlet userid = this.user.id;\n\t\t\tlet gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserGroup', {userid, gid})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading.groups = false\n\t\t\t\t\t// remove user from current list if current list is the removed group\n\t\t\t\t\tif (this.$route.params.selectedGroup === gid) {\n\t\t\t\t\t\tthis.$store.commit('deleteUser', userid);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.loading.groups = false\n\t\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Add user to group\n\t\t * \n\t\t * @param {object} group Group object\n\t\t * @returns {Promise}\n\t\t */\n\t\taddUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true;\n\t\t\tlet userid = this.user.id;\n\t\t\tlet gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserSubAdmin', {userid, gid})\n\t\t\t\t.then(() => this.loading.subadmins = false);\n\t\t},\n\n\t\t/**\n\t\t * Remove user from group\n\t\t * \n\t\t * @param {object} group Group object\n\t\t * @returns {Promise}\n\t\t */\n\t\tremoveUserSubAdmin(group) {\n\t\t\tthis.loading.subadmins = true;\n\t\t\tlet userid = this.user.id;\n\t\t\tlet gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserSubAdmin', {userid, gid})\n\t\t\t\t.then(() => this.loading.subadmins = false);\n\t\t},\n\n\t\t/**\n\t\t * Dispatch quota set request\n\t\t * \n\t\t * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @returns {string}\n\t\t */\n\t\tsetUserQuota(quota = 'none') {\n\t\t\tthis.loading.quota = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id, \n\t\t\t\tkey: 'quota',\n\t\t\t\tvalue: quota\n\t\t\t}).then(() => this.loading.quota = false);\n\t\t\treturn quota;\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t * \n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @returns {Promise|boolean}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tlet validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\treturn this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n\t\t\t}\n\t\t\t// if no valid do not change\n\t\t\treturn false;\n\t\t},\n\n\t\t/**\n\t\t * Dispatch language set request\n\t\t * \n\t\t * @param {Object} lang language object {code:'en', name:'English'}\n\t\t * @returns {Object}\n\t\t */\n\t\tsetUserLanguage(lang) {\n\t\t\tthis.loading.languages = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id, \n\t\t\t\tkey: 'language',\n\t\t\t\tvalue: lang.code\n\t\t\t}).then(() => this.loading.languages = false);\n\t\t\treturn lang;\n\t\t},\n\n\t\t/**\n\t\t * Dispatch new welcome mail request\n\t\t */\n\t\tsendWelcomeMail() {\n\t\t\tthis.loading.all = true;\n\t\t\tthis.$store.dispatch('sendWelcomeMail', this.user.id)\n\t\t\t\t.then(success => {\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\t// Show feedback to indicate the success\n\t\t\t\t\t\tthis.feedbackMessage = t('setting', 'Welcome mail sent!');\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tthis.feedbackMessage = '';\n\t\t\t\t\t\t}, 2000);\n\t\t\t\t\t}\n\t\t\t\t\tthis.loading.all = false;\n\t\t\t\t});\n\t\t}\n\n\t}\n}\n</script>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userRow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userRow.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./userRow.vue?vue&type=template&id=76938654&\"\nimport script from \"./userRow.vue?vue&type=script&lang=js&\"\nexport * from \"./userRow.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (Object.keys(_vm.user).length ===1)?_c('div',{staticClass:\"row\",attrs:{\"data-id\":_vm.user.id}},[_c('div',{staticClass:\"avatar\",class:{'icon-loading-small': _vm.loading.delete || _vm.loading.disable}},[(!_vm.loading.delete && !_vm.loading.disable)?_c('img',{attrs:{\"alt\":\"\",\"width\":\"32\",\"height\":\"32\",\"src\":_vm.generateAvatar(_vm.user.id, 32),\"srcset\":_vm.generateAvatar(_vm.user.id, 64)+' 2x, '+_vm.generateAvatar(_vm.user.id, 128)+' 4x'}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.user.id))]),_vm._v(\" \"),_c('div',{staticClass:\"obfuscated\"},[_vm._v(_vm._s(_vm.t('settings','You do not have permissions to see the details of this user')))])]):_c('div',{staticClass:\"row\",class:{'disabled': _vm.loading.delete || _vm.loading.disable},attrs:{\"data-id\":_vm.user.id}},[_c('div',{staticClass:\"avatar\",class:{'icon-loading-small': _vm.loading.delete || _vm.loading.disable}},[(!_vm.loading.delete && !_vm.loading.disable)?_c('img',{attrs:{\"alt\":\"\",\"width\":\"32\",\"height\":\"32\",\"src\":_vm.generateAvatar(_vm.user.id, 32),\"srcset\":_vm.generateAvatar(_vm.user.id, 64)+' 2x, '+_vm.generateAvatar(_vm.user.id, 128)+' 4x'}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_vm._v(_vm._s(_vm.user.id))]),_vm._v(\" \"),_c('form',{staticClass:\"displayName\",class:{'icon-loading-small': _vm.loading.displayName},on:{\"submit\":function($event){$event.preventDefault();return _vm.updateDisplayName($event)}}},[(_vm.user.backendCapabilities.setDisplayName)?[(_vm.user.backendCapabilities.setDisplayName)?_c('input',{ref:\"displayName\",attrs:{\"id\":'displayName'+_vm.user.id+_vm.rand,\"type\":\"text\",\"disabled\":_vm.loading.displayName||_vm.loading.all,\"autocomplete\":\"new-password\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"},domProps:{\"value\":_vm.user.displayname}}):_vm._e(),_vm._v(\" \"),(_vm.user.backendCapabilities.setDisplayName)?_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}}):_vm._e()]:_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.t('settings', 'The backend does not support changing the display name')),expression:\"t('settings', 'The backend does not support changing the display name')\",modifiers:{\"auto\":true}}],staticClass:\"name\"},[_vm._v(_vm._s(_vm.user.displayname))])],2),_vm._v(\" \"),(_vm.settings.canChangePassword && _vm.user.backendCapabilities.setPassword)?_c('form',{staticClass:\"password\",class:{'icon-loading-small': _vm.loading.password},on:{\"submit\":function($event){$event.preventDefault();return _vm.updatePassword($event)}}},[_c('input',{ref:\"password\",attrs:{\"id\":'password'+_vm.user.id+_vm.rand,\"type\":\"password\",\"required\":\"\",\"disabled\":_vm.loading.password||_vm.loading.all,\"minlength\":_vm.minPasswordLength,\"value\":\"\",\"placeholder\":_vm.t('settings', 'New password'),\"autocomplete\":\"new-password\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"}}),_vm._v(\" \"),_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}})]):_c('div'),_vm._v(\" \"),_c('form',{staticClass:\"mailAddress\",class:{'icon-loading-small': _vm.loading.mailAddress},on:{\"submit\":function($event){$event.preventDefault();return _vm.updateEmail($event)}}},[_c('input',{ref:\"mailAddress\",attrs:{\"id\":'mailAddress'+_vm.user.id+_vm.rand,\"type\":\"email\",\"disabled\":_vm.loading.mailAddress||_vm.loading.all,\"autocomplete\":\"new-password\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"},domProps:{\"value\":_vm.user.email}}),_vm._v(\" \"),_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"groups\",class:{'icon-loading-small': _vm.loading.groups}},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"value\":_vm.userGroups,\"options\":_vm.availableGroups,\"disabled\":_vm.loading.groups||_vm.loading.all,\"tag-placeholder\":\"create\",\"placeholder\":_vm.t('settings', 'Add user in group'),\"label\":\"name\",\"track-by\":\"id\",\"limit\":2,\"multiple\":true,\"taggable\":_vm.settings.isAdmin,\"closeOnSelect\":false},on:{\"tag\":_vm.createGroup,\"select\":_vm.addUserGroup,\"remove\":_vm.removeUserGroup}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.formatGroupsTitle(_vm.userGroups)),expression:\"formatGroupsTitle(userGroups)\",modifiers:{\"auto\":true}}],staticClass:\"multiselect__limit\",attrs:{\"slot\":\"limit\"},slot:\"limit\"},[_vm._v(\"+\"+_vm._s(_vm.userGroups.length-2))]),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1),_vm._v(\" \"),(_vm.subAdminsGroups.length>0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subadmins\",class:{'icon-loading-small': _vm.loading.subadmins}},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"value\":_vm.userSubAdminsGroups,\"options\":_vm.subAdminsGroups,\"disabled\":_vm.loading.subadmins||_vm.loading.all,\"placeholder\":_vm.t('settings', 'Set user as admin for'),\"label\":\"name\",\"track-by\":\"id\",\"limit\":2,\"multiple\":true,\"closeOnSelect\":false},on:{\"select\":_vm.addUserSubAdmin,\"remove\":_vm.removeUserSubAdmin}},[_c('span',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.formatGroupsTitle(_vm.userSubAdminsGroups)),expression:\"formatGroupsTitle(userSubAdminsGroups)\",modifiers:{\"auto\":true}}],staticClass:\"multiselect__limit\",attrs:{\"slot\":\"limit\"},slot:\"limit\"},[_vm._v(\"+\"+_vm._s(_vm.userSubAdminsGroups.length-2))]),_vm._v(\" \"),_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1):_vm._e(),_vm._v(\" \"),_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.usedSpace),expression:\"usedSpace\",modifiers:{\"auto\":true}}],staticClass:\"quota\",class:{'icon-loading-small': _vm.loading.quota}},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"value\":_vm.userQuota,\"options\":_vm.quotaOptions,\"disabled\":_vm.loading.quota||_vm.loading.all,\"tag-placeholder\":\"create\",\"placeholder\":_vm.t('settings', 'Select user quota'),\"label\":\"label\",\"track-by\":\"id\",\"allowEmpty\":false,\"taggable\":true},on:{\"tag\":_vm.validateQuota,\"input\":_vm.setUserQuota}}),_vm._v(\" \"),_c('progress',{staticClass:\"quota-user-progress\",class:{'warn':_vm.usedQuota>80},attrs:{\"max\":\"100\"},domProps:{\"value\":_vm.usedQuota}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\",class:{'icon-loading-small': _vm.loading.languages}},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"value\":_vm.userLanguage,\"options\":_vm.languages,\"disabled\":_vm.loading.languages||_vm.loading.all,\"placeholder\":_vm.t('settings', 'No language set'),\"label\":\"name\",\"track-by\":\"code\",\"allowEmpty\":false,\"group-values\":\"languages\",\"group-label\":\"label\"},on:{\"input\":_vm.setUserLanguage}})],1):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('div',{staticClass:\"storageLocation\"},[_vm._v(_vm._s(_vm.user.storageLocation))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend)?_c('div',{staticClass:\"userBackend\"},[_vm._v(_vm._s(_vm.user.backend))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.auto\",value:(_vm.user.lastLogin>0 ? _vm.OC.Util.formatDate(_vm.user.lastLogin) : ''),expression:\"user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''\",modifiers:{\"auto\":true}}],staticClass:\"lastLogin\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.user.lastLogin>0 ? _vm.OC.Util.relativeModifiedDate(_vm.user.lastLogin) : _vm.t('settings','Never'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"},[(_vm.OC.currentUser !== _vm.user.id && _vm.user.id !== 'admin' && !_vm.loading.all)?_c('div',{staticClass:\"toggleUserActions\"},[_c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.hideMenu),expression:\"hideMenu\"}],staticClass:\"icon-more\",on:{\"click\":_vm.toggleMenu}}),_vm._v(\" \"),_c('div',{staticClass:\"popovermenu\",class:{ 'open': _vm.openedMenu }},[_c('popover-menu',{attrs:{\"menu\":_vm.userActions}})],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"feedback\",style:({opacity: _vm.feedbackMessage !== '' ? 1 : 0})},[_c('div',{staticClass:\"icon-checkmark\"}),_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.feedbackMessage)+\"\\n\\t\\t\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./userList.vue?vue&type=script&lang=js&\"","<!--\n  - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @author John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n  \n<template>\n\t<div id=\"app-content\" class=\"user-list-grid\" v-on:scroll.passive=\"onScroll\">\n\t\t<div class=\"row\" id=\"grid-header\" :class=\"{'sticky': scrolled && !showConfig.showNewUserForm}\">\n\t\t\t<div id=\"headerAvatar\" class=\"avatar\"></div>\n\t\t\t<div id=\"headerName\" class=\"name\">{{ t('settings', 'Username') }}</div>\n\t\t\t<div id=\"headerDisplayName\" class=\"displayName\">{{ t('settings',  'Display name') }}</div>\n\t\t\t<div id=\"headerPassword\" class=\"password\">{{ t('settings',  'Password') }}</div>\n\t\t\t<div id=\"headerAddress\" class=\"mailAddress\">{{ t('settings',  'Email') }}</div>\n\t\t\t<div id=\"headerGroups\" class=\"groups\">{{ t('settings',  'Groups') }}</div>\n\t\t\t<div id=\"headerSubAdmins\" class=\"subadmins\"\n\t\t\t\t v-if=\"subAdminsGroups.length>0 && settings.isAdmin\">{{ t('settings', 'Group admin for') }}</div>\n\t\t\t<div id=\"headerQuota\" class=\"quota\">{{ t('settings', 'Quota') }}</div>\n\t\t\t<div id=\"headerLanguages\" class=\"languages\"\n\t\t\t\t v-if=\"showConfig.showLanguages\">{{ t('settings', 'Language') }}</div>\n\t\t\t<div class=\"headerStorageLocation storageLocation\"\n\t\t\t\t v-if=\"showConfig.showStoragePath\">{{ t('settings', 'Storage location') }}</div>\n\t\t\t<div class=\"headerUserBackend userBackend\"\n\t\t\t\t v-if=\"showConfig.showUserBackend\">{{ t('settings', 'User backend') }}</div>\n\t\t\t<div class=\"headerLastLogin lastLogin\" \n\t\t\t\t v-if=\"showConfig.showLastLogin\">{{ t('settings', 'Last login') }}</div>\n\t\t\t<div class=\"userActions\"></div>\n\t\t</div>\n\n\t\t<form class=\"row\" id=\"new-user\" v-show=\"showConfig.showNewUserForm\"\n\t\t\t  v-on:submit.prevent=\"createUser\" :disabled=\"loading.all\"\n\t\t\t  :class=\"{'sticky': scrolled && showConfig.showNewUserForm}\">\n\t\t\t<div :class=\"loading.all?'icon-loading-small':'icon-add'\"></div>\n\t\t\t<div class=\"name\">\n\t\t\t\t<input id=\"newusername\" type=\"text\" required v-model=\"newUser.id\"\n\t\t\t\t\t   :placeholder=\"t('settings', 'Username')\" name=\"username\"\n\t\t\t\t\t   autocomplete=\"off\" autocapitalize=\"none\" autocorrect=\"off\"\n\t\t\t\t\t   ref=\"newusername\" pattern=\"[a-zA-Z0-9 _\\.@\\-']+\">\n\t\t\t</div>\n\t\t\t<div class=\"displayName\">\n\t\t\t\t<input id=\"newdisplayname\" type=\"text\" v-model=\"newUser.displayName\"\n\t\t\t\t\t   :placeholder=\"t('settings', 'Display name')\" name=\"displayname\"\n\t\t\t\t\t   autocomplete=\"off\" autocapitalize=\"none\" autocorrect=\"off\">\n\t\t\t</div>\n\t\t\t<div class=\"password\">\n\t\t\t\t<input id=\"newuserpassword\" type=\"password\" v-model=\"newUser.password\"\n\t\t\t\t\t   :required=\"newUser.mailAddress===''\" ref=\"newuserpassword\"\n\t\t\t\t\t   :placeholder=\"t('settings', 'Password')\" name=\"password\"\n\t\t\t\t\t   autocomplete=\"new-password\" autocapitalize=\"none\" autocorrect=\"off\"\n\t\t\t\t\t   :minlength=\"minPasswordLength\">\n\t\t\t</div>\n\t\t\t<div class=\"mailAddress\">\n\t\t\t\t<input id=\"newemail\" type=\"email\" v-model=\"newUser.mailAddress\"\n\t\t\t\t\t   :required=\"newUser.password===''\"\n\t\t\t\t\t   :placeholder=\"t('settings', 'Email')\" name=\"email\"\n\t\t\t\t\t   autocomplete=\"off\" autocapitalize=\"none\" autocorrect=\"off\">\n\t\t\t</div>\n\t\t\t<div class=\"groups\">\n\t\t\t\t<!-- hidden input trick for vanilla html5 form validation -->\n\t\t\t\t<input type=\"text\" :value=\"newUser.groups\" v-if=\"!settings.isAdmin\"\n\t\t\t\t\t   tabindex=\"-1\" id=\"newgroups\" :required=\"!settings.isAdmin\"\n\t\t\t\t\t   :class=\"{'icon-loading-small': loading.groups}\"/>\n\t\t\t\t<multiselect v-model=\"newUser.groups\" :options=\"canAddGroups\" :disabled=\"loading.groups||loading.all\"\n\t\t\t\t\t\t tag-placeholder=\"create\" :placeholder=\"t('settings', 'Add user in group')\"\n\t\t\t\t\t\t label=\"name\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t :multiple=\"true\" :taggable=\"true\" :close-on-select=\"false\"\n\t\t\t\t\t\t @tag=\"createGroup\">\n\t\t\t\t\t\t\t <!-- If user is not admin, he is a subadmin.\n\t\t\t\t\t\t\t \t  Subadmins can't create users outside their groups\n\t\t\t\t\t\t\t\t  Therefore, empty select is forbidden -->\n\t\t\t\t\t<span slot=\"noResult\">{{t('settings', 'No results')}}</span>\n\t\t\t\t</multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"subadmins\" v-if=\"subAdminsGroups.length>0 && settings.isAdmin\">\n\t\t\t\t<multiselect :options=\"subAdminsGroups\" v-model=\"newUser.subAdminsGroups\"\n\t\t\t\t\t\t\t :placeholder=\"t('settings', 'Set user as admin for')\"\n\t\t\t\t\t\t\t label=\"name\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t\t :multiple=\"true\" :close-on-select=\"false\">\n\t\t\t\t\t<span slot=\"noResult\">{{t('settings', 'No results')}}</span>\n\t\t\t</multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"quota\">\n\t\t\t\t<multiselect :options=\"quotaOptions\" v-model=\"newUser.quota\"\n\t\t\t\t\t\t\t :placeholder=\"t('settings', 'Select user quota')\"\n\t\t\t\t\t\t\t label=\"label\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t\t :allowEmpty=\"false\" :taggable=\"true\"\n\t\t\t\t\t\t \t @tag=\"validateQuota\" >\n\t\t\t\t</multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"languages\" v-if=\"showConfig.showLanguages\">\n\t\t\t\t<multiselect :options=\"languages\" v-model=\"newUser.language\"\n\t\t\t\t\t\t\t :placeholder=\"t('settings', 'Default language')\"\n\t\t\t\t\t\t\t label=\"name\" track-by=\"code\" class=\"multiselect-vue\"\n\t\t\t\t\t\t\t :allowEmpty=\"false\" group-values=\"languages\" group-label=\"label\">\n\t\t\t\t</multiselect>\n\t\t\t</div>\n\t\t\t<div class=\"storageLocation\" v-if=\"showConfig.showStoragePath\"></div>\n\t\t\t<div class=\"userBackend\" v-if=\"showConfig.showUserBackend\"></div>\n\t\t\t<div class=\"lastLogin\" v-if=\"showConfig.showLastLogin\"></div>\n\t\t\t<div class=\"userActions\">\n\t\t\t\t<input type=\"submit\" id=\"newsubmit\" class=\"button primary icon-checkmark-white has-tooltip\"\n\t\t\t\t\t   value=\"\" :title=\"t('settings', 'Add a new user')\">\n\t\t\t</div>\n\t\t</form>\n\n\t\t<user-row v-for=\"(user, key) in filteredUsers\" :user=\"user\" :key=\"key\" :settings=\"settings\" :showConfig=\"showConfig\"\n\t\t\t\t  :groups=\"groups\" :subAdminsGroups=\"subAdminsGroups\" :quotaOptions=\"quotaOptions\" :languages=\"languages\"\n\t\t\t\t  :externalActions=\"externalActions\" />\n\t\t<infinite-loading @infinite=\"infiniteHandler\" ref=\"infiniteLoading\">\n\t\t\t<div slot=\"spinner\"><div class=\"users-icon-loading icon-loading\"></div></div>\n\t\t\t<div slot=\"no-more\"><div class=\"users-list-end\"></div></div>\n\t\t\t<div slot=\"no-results\">\n\t\t\t\t<div id=\"emptycontent\">\n\t\t\t\t\t<div class=\"icon-contacts-dark\"></div>\n\t\t\t\t\t<h2>{{t('settings', 'No users in here')}}</h2>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</infinite-loading>\n\t</div>\n</template>\n\n<script>\nimport userRow from './userList/userRow';\nimport Multiselect from 'vue-multiselect';\nimport InfiniteLoading from 'vue-infinite-loading';\nimport Vue from 'vue';\n\nexport default {\n\tname: 'userList',\n\tprops: ['users', 'showConfig', 'selectedGroup', 'externalActions'],\n\tcomponents: {\n\t\tuserRow,\n\t\tMultiselect,\n\t\tInfiniteLoading\n\t},\n\tdata() {\n\t\tlet unlimitedQuota = {id:'none', label:t('settings', 'Unlimited')},\n\t\t\tdefaultQuota = {id:'default', label:t('settings', 'Default quota')};\n\t\treturn {\n\t\t\tunlimitedQuota: unlimitedQuota,\n\t\t\tdefaultQuota: defaultQuota,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tgroups: false\n\t\t\t},\n\t\t\tscrolled: false,\n\t\t\tsearchQuery: '',\n\t\t\tnewUser: {\n\t\t\t\tid:'',\n\t\t\t\tdisplayName:'',\n\t\t\t\tpassword:'',\n\t\t\t\tmailAddress:'',\n\t\t\t\tgroups: [],\n\t\t\t\tsubAdminsGroups: [],\n\t\t\t\tquota: defaultQuota,\n\t\t\t\tlanguage: {code: 'en', name: t('settings', 'Default language')}\n\t\t\t}\n\t\t};\n\t},\n\tmounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));\n\t\t}\n\n\t\t/** \n\t\t * Init default language from server data. The use of this.settings\n\t\t * requires a computed variable, which break the v-model binding of the form,\n\t\t * this is a much easier solution than getter and setter on a computed var\n\t\t */\n\t\tVue.set(this.newUser.language, 'code', this.settings.defaultLanguage);\n\n\t\t/**\n\t\t * In case the user directly loaded the user list within a group\n\t\t * the watch won't be triggered. We need to initialize it.\n\t\t */\n\t\tthis.setNewUserDefaultGroup(this.selectedGroup);\n\n\t\t/** \n\t\t * Register search\n\t\t */\n\t\tthis.userSearch = new OCA.Search(this.search, this.resetSearch);\n\t},\n\tcomputed: {\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData;\n\t\t},\n\t\tfilteredUsers() {\n\t\t\tif (this.selectedGroup === 'disabled') {\n\t\t\t\tlet disabledUsers = this.users.filter(user => user.enabled === false);\n\t\t\t\tif (disabledUsers.length===0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) {\n\t\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\t\tthis.$router.push({name: 'users'});\n\t\t\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t\t\t}\n\t\t\t\treturn disabledUsers;\n\t\t\t}\n\t\t\tif (!this.settings.isAdmin) {\n\t\t\t\t// we don't want subadmins to edit themselves\n\t\t\t\treturn this.users.filter(user => user.enabled !== false && user.id !== oc_current_user);\n\t\t\t}\n\t\t\treturn this.users.filter(user => user.enabled !== false);\n\t\t},\n\t\tgroups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups\n\t\t\t\t.filter(group => group.id !== 'disabled')\n\t\t\t\t.sort((a, b) => a.name.localeCompare(b.name));\n\t\t},\n\t\tcanAddGroups() {\n\t\t\t// disabled if no permission to add new users to group\n\t\t\treturn this.groups.map(group => {\n\t\t\t\t// clone object because we don't want\n\t\t\t\t// to edit the original groups\n\t\t\t\tgroup = Object.assign({}, group);\n\t\t\t\tgroup.$isDisabled = group.canAdd === false;\n\t\t\t\treturn group;\n\t\t\t});\n\t\t},\n\t\tsubAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getSubadminGroups;\n\t\t},\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tlet quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({id: cur, label: cur}), []);\n\t\t\t// add default presets\n\t\t\tquotaPreset.unshift(this.unlimitedQuota);\n\t\t\tquotaPreset.unshift(this.defaultQuota);\n\t\t\treturn quotaPreset;\n\t\t},\n\t\tminPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset;\n\t\t},\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit;\n\t\t},\n\t\tusersCount() {\n\t\t\treturn this.users.length\n\t\t},\n\n\t\t/* LANGUAGES */\n\t\tlanguages() {\n\t\t\treturn Array(\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\t\tlanguages: this.settings.languages.commonlanguages\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('settings', 'All languages'),\n\t\t\t\t\tlanguages: this.settings.languages.languages\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t},\n\twatch: {\n\t\t// watch url change and group select\n\t\tselectedGroup: function (val, old) {\n\t\t\tthis.$store.commit('resetUsers');\n\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t\tthis.setNewUserDefaultGroup(val);\n\t\t},\n\n\t\t// make sure the infiniteLoading state is changed if we manually\n\t\t// add/remove data from the store\n\t\tusersCount: function(val, old) {\n\t\t\t// deleting the last user, reset the list \n\t\t\tif (val === 0 && old === 1) {\n\t\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t\t// adding the first user, warn the infiniteLoader that \n\t\t\t// the list is not empty anymore (we don't fetch the newly\n\t\t\t// added user as we already have all the info we need)\n\t\t\t} else if (val === 1 && old === 0) {\n\t\t\t\tthis.$refs.infiniteLoading.stateChanger.loaded()\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\tonScroll(event) {\n\t\t\tthis.scrolled = event.target.scrollTo > 0;\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t * \n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @returns {Object}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tlet validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota !== null && validQuota >= 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));\n\t\t\t\treturn this.newUser.quota = {id: quota, label: quota};\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\treturn this.newUser.quota = this.quotaOptions[0];\n\t\t},\n\n\t\tinfiniteHandler($state) {\n\t\t\tthis.$store.dispatch('getUsers', {\n\t\t\t\toffset: this.usersOffset,\n\t\t\t\tlimit: this.usersLimit,\n\t\t\t\tgroup: this.selectedGroup !== 'disabled' ? this.selectedGroup : '',\n\t\t\t\tsearch: this.searchQuery\n\t\t\t})\n\t\t\t.then((response) => { response ? $state.loaded() : $state.complete() });\n\t\t},\n\n\t\t/* SEARCH */\n\t\tsearch(query) {\n\t\t\tthis.searchQuery = query;\n\t\t\tthis.$store.commit('resetUsers');\n\t\t\tthis.$refs.infiniteLoading.stateChanger.reset()\n\t\t},\n\t\tresetSearch() {\n\t\t\tthis.search('');\n\t\t},\n\n\t\tresetForm() {\n\t\t\t// revert form to original state\n\t\t\tObject.assign(this.newUser, this.$options.data.call(this).newUser);\n\t\t\t// reset group\n\t\t\tthis.setNewUserDefaultGroup(this.selectedGroup);\n\t\t\tthis.loading.all = false;\n\t\t},\n\t\tcreateUser() {\n\t\t\tthis.loading.all = true;\n\t\t\tthis.$store.dispatch('addUser', {\n\t\t\t\tuserid: this.newUser.id,\n\t\t\t\tpassword: this.newUser.password,\n\t\t\t\tdisplayName: this.newUser.displayName,\n\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\tgroups: this.newUser.groups.map(group => group.id),\n\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(group => group.id),\n\t\t\t\tquota: this.newUser.quota.id,\n\t\t\t\tlanguage: this.newUser.language.code,\n\t\t\t})\n\t\t\t.then(() => {\n\t\t\t\tthis.resetForm()\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.loading.all = false;\n\t\t\t\tif (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n\t\t\t\t\tconst statuscode = error.response.data.ocs.meta.statuscode\n\t\t\t\t\tif (statuscode === 102) {\n\t\t\t\t\t\t// wrong username\n\t\t\t\t\t\tthis.$refs.newusername.focus();\t\n\t\t\t\t\t} else if (statuscode === 107) {\n\t\t\t\t\t\t// wrong password\n\t\t\t\t\t\tthis.$refs.newuserpassword.focus();\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tsetNewUserDefaultGroup(value) {\n\t\t\tif (value && value.length > 0) {\n\t\t\t\t// setting new user default group to the current selected one\n\t\t\t\tlet currentGroup = this.groups.find(group => group.id === value);\n\t\t\t\tif (currentGroup) {\n\t\t\t\t\tthis.newUser.groups = [currentGroup];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback, empty selected group\n\t\t\tthis.newUser.groups = [];\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t * \n\t\t * @param {string} groups Group id\n\t\t * @returns {Promise}\n\t\t */\n\t\tcreateGroup(gid) {\n\t\t\tthis.loading.groups = true;\n\t\t\tthis.$store.dispatch('addGroup', gid)\n\t\t\t\t.then((group) => {\n\t\t\t\t\tthis.newUser.groups.push(this.groups.find(group => group.id === gid))\n\t\t\t\t\tthis.loading.groups = false;\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.loading.groups = false;\n\t\t\t\t});\n\t\t\treturn this.$store.getters.getGroups[this.groups.length];\n\t\t}\n\t}\n}\n</script>\n","import { render, staticRenderFns } from \"./userList.vue?vue&type=template&id=9cfd6f82&\"\nimport script from \"./userList.vue?vue&type=script&lang=js&\"\nexport * from \"./userList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-list-grid\",attrs:{\"id\":\"app-content\"},on:{\"&scroll\":function($event){return _vm.onScroll($event)}}},[_c('div',{staticClass:\"row\",class:{'sticky': _vm.scrolled && !_vm.showConfig.showNewUserForm},attrs:{\"id\":\"grid-header\"}},[_c('div',{staticClass:\"avatar\",attrs:{\"id\":\"headerAvatar\"}}),_vm._v(\" \"),_c('div',{staticClass:\"name\",attrs:{\"id\":\"headerName\"}},[_vm._v(_vm._s(_vm.t('settings', 'Username')))]),_vm._v(\" \"),_c('div',{staticClass:\"displayName\",attrs:{\"id\":\"headerDisplayName\"}},[_vm._v(_vm._s(_vm.t('settings',  'Display name')))]),_vm._v(\" \"),_c('div',{staticClass:\"password\",attrs:{\"id\":\"headerPassword\"}},[_vm._v(_vm._s(_vm.t('settings',  'Password')))]),_vm._v(\" \"),_c('div',{staticClass:\"mailAddress\",attrs:{\"id\":\"headerAddress\"}},[_vm._v(_vm._s(_vm.t('settings',  'Email')))]),_vm._v(\" \"),_c('div',{staticClass:\"groups\",attrs:{\"id\":\"headerGroups\"}},[_vm._v(_vm._s(_vm.t('settings',  'Groups')))]),_vm._v(\" \"),(_vm.subAdminsGroups.length>0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subadmins\",attrs:{\"id\":\"headerSubAdmins\"}},[_vm._v(_vm._s(_vm.t('settings', 'Group admin for')))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"quota\",attrs:{\"id\":\"headerQuota\"}},[_vm._v(_vm._s(_vm.t('settings', 'Quota')))]),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\",attrs:{\"id\":\"headerLanguages\"}},[_vm._v(_vm._s(_vm.t('settings', 'Language')))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('div',{staticClass:\"headerStorageLocation storageLocation\"},[_vm._v(_vm._s(_vm.t('settings', 'Storage location')))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend)?_c('div',{staticClass:\"headerUserBackend userBackend\"},[_vm._v(_vm._s(_vm.t('settings', 'User backend')))]):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div',{staticClass:\"headerLastLogin lastLogin\"},[_vm._v(_vm._s(_vm.t('settings', 'Last login')))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"})]),_vm._v(\" \"),_c('form',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showConfig.showNewUserForm),expression:\"showConfig.showNewUserForm\"}],staticClass:\"row\",class:{'sticky': _vm.scrolled && _vm.showConfig.showNewUserForm},attrs:{\"id\":\"new-user\",\"disabled\":_vm.loading.all},on:{\"submit\":function($event){$event.preventDefault();return _vm.createUser($event)}}},[_c('div',{class:_vm.loading.all?'icon-loading-small':'icon-add'}),_vm._v(\" \"),_c('div',{staticClass:\"name\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.id),expression:\"newUser.id\"}],ref:\"newusername\",attrs:{\"id\":\"newusername\",\"type\":\"text\",\"required\":\"\",\"placeholder\":_vm.t('settings', 'Username'),\"name\":\"username\",\"autocomplete\":\"off\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"pattern\":\"[a-zA-Z0-9 _\\\\.@\\\\-']+\"},domProps:{\"value\":(_vm.newUser.id)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"id\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"displayName\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.displayName),expression:\"newUser.displayName\"}],attrs:{\"id\":\"newdisplayname\",\"type\":\"text\",\"placeholder\":_vm.t('settings', 'Display name'),\"name\":\"displayname\",\"autocomplete\":\"off\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\"},domProps:{\"value\":(_vm.newUser.displayName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"displayName\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"password\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.password),expression:\"newUser.password\"}],ref:\"newuserpassword\",attrs:{\"id\":\"newuserpassword\",\"type\":\"password\",\"required\":_vm.newUser.mailAddress==='',\"placeholder\":_vm.t('settings', 'Password'),\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\",\"minlength\":_vm.minPasswordLength},domProps:{\"value\":(_vm.newUser.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"password\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"mailAddress\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newUser.mailAddress),expression:\"newUser.mailAddress\"}],attrs:{\"id\":\"newemail\",\"type\":\"email\",\"required\":_vm.newUser.password==='',\"placeholder\":_vm.t('settings', 'Email'),\"name\":\"email\",\"autocomplete\":\"off\",\"autocapitalize\":\"none\",\"autocorrect\":\"off\"},domProps:{\"value\":(_vm.newUser.mailAddress)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newUser, \"mailAddress\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"groups\"},[(!_vm.settings.isAdmin)?_c('input',{class:{'icon-loading-small': _vm.loading.groups},attrs:{\"type\":\"text\",\"tabindex\":\"-1\",\"id\":\"newgroups\",\"required\":!_vm.settings.isAdmin},domProps:{\"value\":_vm.newUser.groups}}):_vm._e(),_vm._v(\" \"),_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.canAddGroups,\"disabled\":_vm.loading.groups||_vm.loading.all,\"tag-placeholder\":\"create\",\"placeholder\":_vm.t('settings', 'Add user in group'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"taggable\":true,\"close-on-select\":false},on:{\"tag\":_vm.createGroup},model:{value:(_vm.newUser.groups),callback:function ($$v) {_vm.$set(_vm.newUser, \"groups\", $$v)},expression:\"newUser.groups\"}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1),_vm._v(\" \"),(_vm.subAdminsGroups.length>0 && _vm.settings.isAdmin)?_c('div',{staticClass:\"subadmins\"},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.subAdminsGroups,\"placeholder\":_vm.t('settings', 'Set user as admin for'),\"label\":\"name\",\"track-by\":\"id\",\"multiple\":true,\"close-on-select\":false},model:{value:(_vm.newUser.subAdminsGroups),callback:function ($$v) {_vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)},expression:\"newUser.subAdminsGroups\"}},[_c('span',{attrs:{\"slot\":\"noResult\"},slot:\"noResult\"},[_vm._v(_vm._s(_vm.t('settings', 'No results')))])])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"quota\"},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.quotaOptions,\"placeholder\":_vm.t('settings', 'Select user quota'),\"label\":\"label\",\"track-by\":\"id\",\"allowEmpty\":false,\"taggable\":true},on:{\"tag\":_vm.validateQuota},model:{value:(_vm.newUser.quota),callback:function ($$v) {_vm.$set(_vm.newUser, \"quota\", $$v)},expression:\"newUser.quota\"}})],1),_vm._v(\" \"),(_vm.showConfig.showLanguages)?_c('div',{staticClass:\"languages\"},[_c('multiselect',{staticClass:\"multiselect-vue\",attrs:{\"options\":_vm.languages,\"placeholder\":_vm.t('settings', 'Default language'),\"label\":\"name\",\"track-by\":\"code\",\"allowEmpty\":false,\"group-values\":\"languages\",\"group-label\":\"label\"},model:{value:(_vm.newUser.language),callback:function ($$v) {_vm.$set(_vm.newUser, \"language\", $$v)},expression:\"newUser.language\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showStoragePath)?_c('div',{staticClass:\"storageLocation\"}):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showUserBackend)?_c('div',{staticClass:\"userBackend\"}):_vm._e(),_vm._v(\" \"),(_vm.showConfig.showLastLogin)?_c('div',{staticClass:\"lastLogin\"}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"userActions\"},[_c('input',{staticClass:\"button primary icon-checkmark-white has-tooltip\",attrs:{\"type\":\"submit\",\"id\":\"newsubmit\",\"value\":\"\",\"title\":_vm.t('settings', 'Add a new user')}})])]),_vm._v(\" \"),_vm._l((_vm.filteredUsers),function(user,key){return _c('user-row',{key:key,attrs:{\"user\":user,\"settings\":_vm.settings,\"showConfig\":_vm.showConfig,\"groups\":_vm.groups,\"subAdminsGroups\":_vm.subAdminsGroups,\"quotaOptions\":_vm.quotaOptions,\"languages\":_vm.languages,\"externalActions\":_vm.externalActions}})}),_vm._v(\" \"),_c('infinite-loading',{ref:\"infiniteLoading\",on:{\"infinite\":_vm.infiniteHandler}},[_c('div',{attrs:{\"slot\":\"spinner\"},slot:\"spinner\"},[_c('div',{staticClass:\"users-icon-loading icon-loading\"})]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"no-more\"},slot:\"no-more\"},[_c('div',{staticClass:\"users-list-end\"})]),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"no-results\"},slot:\"no-results\"},[_c('div',{attrs:{\"id\":\"emptycontent\"}},[_c('div',{staticClass:\"icon-contacts-dark\"}),_vm._v(\" \"),_c('h2',[_vm._v(_vm._s(_vm.t('settings', 'No users in here')))])])])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n  - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @author John Molakvoæ <skjnldsv@protonmail.com>\n  -\n  - @license GNU AGPL version 3 or any later version\n  -\n  - This program is free software: you can redistribute it and/or modify\n  - it under the terms of the GNU Affero General Public License as\n  - published by the Free Software Foundation, either version 3 of the\n  - License, or (at your option) any later version.\n  -\n  - This program is distributed in the hope that it will be useful,\n  - but WITHOUT ANY WARRANTY; without even the implied warranty of\n  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n  - GNU Affero General Public License for more details.\n  -\n  - You should have received a copy of the GNU Affero General Public License\n  - along with this program. If not, see <http://www.gnu.org/licenses/>.\n  -\n  -->\n\n<template>\n\t<AppContent app-name=\"settings\" :navigation-class=\"{ 'icon-loading': loadingAddGroup }\">\n\t\t<template #navigation>\n\t\t\t<AppNavigationNew button-id=\"new-user-button\" :text=\"t('settings','New user')\" button-class=\"icon-add\" @click=\"toggleNewUserMenu\" />\n\t\t\t<ul id=\"usergrouplist\">\n\t\t\t\t<AppNavigationItem v-for=\"item in menu\" :key=\"item.key\" :item=\"item\" />\n\t\t\t</ul>\n\t\t\t<AppNavigationSettings>\n\t\t\t\t<div>\n\t\t\t\t\t<p>{{t('settings', 'Default quota:')}}</p>\n\t\t\t\t\t<multiselect :value=\"defaultQuota\" :options=\"quotaOptions\"\n\t\t\t\t\t\t\t\t tag-placeholder=\"create\" :placeholder=\"t('settings', 'Select default quota')\"\n\t\t\t\t\t\t\t\t label=\"label\" track-by=\"id\" class=\"multiselect-vue\"\n\t\t\t\t\t\t\t\t :allowEmpty=\"false\" :taggable=\"true\"\n\t\t\t\t\t\t\t\t @tag=\"validateQuota\" @input=\"setDefaultQuota\">\n\t\t\t\t\t</multiselect>\n\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"checkbox\" id=\"showLanguages\" class=\"checkbox\" v-model=\"showLanguages\">\n\t\t\t\t\t<label for=\"showLanguages\">{{t('settings', 'Show Languages')}}</label>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"checkbox\" id=\"showLastLogin\" class=\"checkbox\" v-model=\"showLastLogin\">\n\t\t\t\t\t<label for=\"showLastLogin\">{{t('settings', 'Show last login')}}</label>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"checkbox\" id=\"showUserBackend\" class=\"checkbox\" v-model=\"showUserBackend\">\n\t\t\t\t\t<label for=\"showUserBackend\">{{t('settings', 'Show user backend')}}</label>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"checkbox\" id=\"showStoragePath\" class=\"checkbox\" v-model=\"showStoragePath\">\n\t\t\t\t\t<label for=\"showStoragePath\">{{t('settings', 'Show storage path')}}</label>\n\t\t\t\t</div>\n\t\t\t</AppNavigationSettings>\n\t\t</template>\n\t\t<template #content>\n\t\t\t<user-list :users=\"users\" :showConfig=\"showConfig\" :selectedGroup=\"selectedGroup\" :externalActions=\"externalActions\" />\n\t\t</template>\n\t</AppContent>\n</template>\n\n<script>\nimport {\n\tAppContent,\n\tAppNavigationItem,\n\tAppNavigationNew,\n\tAppNavigationSettings,\n} from 'nextcloud-vue';\nimport userList from '../components/userList';\nimport Vue from 'vue';\nimport VueLocalStorage from 'vue-localstorage'\nimport Multiselect from 'vue-multiselect';\nimport api from '../store/api';\n\nVue.use(VueLocalStorage)\n\nexport default {\n\tname: 'Users',\n\tprops: ['selectedGroup'],\n\tcomponents: {\n\t\tAppContent,\n\t\tAppNavigationItem,\n\t\tAppNavigationNew,\n\t\tAppNavigationSettings,\n\t\tuserList,\n\t\tMultiselect,\n\t},\n\tbeforeMount() {\n\t\tthis.$store.commit('initGroups', {\n\t\t\tgroups: this.$store.getters.getServerData.groups, \n\t\t\torderBy: this.$store.getters.getServerData.sortGroups,\n\t\t\tuserCount: this.$store.getters.getServerData.userCount\n\t\t});\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength');\n\t},\n\tcreated() {\n\t\t// init the OCA.Settings.UserList object\n\t\t// and add the registerAction method\n\t\tObject.assign(OCA, {\n\t\t\tSettings: {\n\t\t\t\tUserList: {\n\t\t\t\t\tregisterAction: this.registerAction\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\tdata() {\n\t\treturn {\n\t\t\t// default quota is set to unlimited\n\t\t\tunlimitedQuota: {id: 'none', label: t('settings', 'Unlimited')},\n\t\t\t// temporary value used for multiselect change\n\t\t\tselectedQuota: false,\n\t\t\texternalActions: [],\n\t\t\tshowAddGroupEntry: false,\n\t\t\tloadingAddGroup: false,\n\t\t\tshowConfig: {\n\t\t\t\tshowStoragePath: false,\n\t\t\t\tshowUserBackend: false,\n\t\t\t\tshowLastLogin: false,\n\t\t\t\tshowNewUserForm: false,\n\t\t\t\tshowLanguages: false\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\ttoggleNewUserMenu() {\n\t\t\tthis.showConfig.showNewUserForm = !this.showConfig.showNewUserForm;\n\t\t\tif (this.showConfig.showNewUserForm) {\n\t\t\t\tVue.nextTick(() => {\n\t\t\t\t\twindow.newusername.focus();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetLocalstorage(key) {\n\t\t\t// force initialization\n\t\t\tlet localConfig = this.$localStorage.get(key);\n\t\t\t// if localstorage is null, fallback to original values\n\t\t\tthis.showConfig[key] = localConfig !== null ? localConfig === 'true' : this.showConfig[key];\n\t\t\treturn this.showConfig[key];\n\t\t},\n\t\tsetLocalStorage(key, status) {\n\t\t\tthis.showConfig[key] = status;\n\t\t\tthis.$localStorage.set(key, status);\n\t\t\treturn status;\n\t\t},\n\t\tremoveGroup(groupid) {\n\t\t\tlet self = this;\n\t\t\t// TODO migrate to a vue js confirm dialog component \n\t\t\tOC.dialogs.confirm(\n\t\t\t\tt('settings', 'You are about to remove the group {group}. The users will NOT be deleted.', {group: groupid}),\n\t\t\t\tt('settings','Please confirm the group removal '),\n\t\t\t\tfunction (success) {\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\tself.$store.dispatch('removeGroup', groupid);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\t/**\n\t\t * Dispatch default quota set request\n\t\t * \n\t\t * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n\t\t * @returns {string}\n\t\t */\n\t\tsetDefaultQuota(quota = 'none') {\n\t\t\tthis.$store.dispatch('setAppConfig', {\n\t\t\t\tapp: 'files',\n\t\t\t\tkey: 'default_quota',\n\t\t\t\t// ensure we only send the preset id\n\t\t\t\tvalue: quota.id ? quota.id : quota\n\t\t\t}).then(() => {\n\t\t\t\tif (typeof quota !== 'object') {\n\t\t\t\t\tquota = {id: quota, label: quota};\n\t\t\t\t}\n\t\t\t\tthis.defaultQuota = quota;\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Validate quota string to make sure it's a valid human file size\n\t\t * \n\t\t * @param {string} quota Quota in readable format '5 GB'\n\t\t * @returns {Promise|boolean}\n\t\t */\n\t\tvalidateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tlet validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota === 0) {\n\t\t\t\treturn this.setDefaultQuota('none');\n\t\t\t} else if (validQuota !== null) {\n\t\t\t\t// unify format output\n\t\t\t\treturn this.setDefaultQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n\t\t\t}\n\t\t\t// if no valid do not change\n\t\t\treturn false;\n\t\t},\n\n\t\t/**\n\t\t * Register a new action for the user menu\n\t\t * \n\t\t * @param {string} icon the icon class\n\t\t * @param {string} text the text to display\n\t\t * @param {function} action the function to run\n\t\t */\n\t\tregisterAction(icon, text, action) {\n\t\t\tthis.externalActions.push({\n\t\t\t\ticon: icon,\n\t\t\t\ttext: text,\n\t\t\t\taction: action\n\t\t\t});\n\t\t\treturn this.externalActions;\n\t\t},\n\n\t\t/**\n\t\t * Create a new group\n\t\t * \n\t\t * @param {Object} event The form submit event\n\t\t */\n\t\tcreateGroup(event) {\n\t\t\tlet gid = event.target[0].value;\n\t\t\tthis.loadingAddGroup = true;\n\t\t\tthis.$store.dispatch('addGroup', gid)\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.showAddGroupEntry = false;\n\t\t\t\t\tthis.loadingAddGroup = false;\n\t\t\t\t\tthis.$router.push({\n\t\t\t\t\t\tname: 'group',\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\tselectedGroup: gid\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.loadingAddGroup = false;\n\t\t\t\t});\n\t\t}\n\t},\n\tcomputed: {\n\t\tusers() {\n\t\t\treturn this.$store.getters.getUsers;\n\t\t},\n\t\tusersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset;\n\t\t},\n\t\tusersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit;\n\t\t},\n\n\t\t// Local settings\n\t\tshowLanguages: {\n\t\t\tget: function() {return this.getLocalstorage('showLanguages')},\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showLanguages', status);\n\t\t\t}\n\t\t},\n\t\tshowLastLogin: {\n\t\t\tget: function() {return this.getLocalstorage('showLastLogin')},\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showLastLogin', status);\n\t\t\t}\n\t\t},\n\t\tshowUserBackend: {\n\t\t\tget: function() {return this.getLocalstorage('showUserBackend')},\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showUserBackend', status);\n\t\t\t}\n\t\t},\n\t\tshowStoragePath: {\n\t\t\tget: function() {return this.getLocalstorage('showStoragePath')},\n\t\t\tset: function(status) {\n\t\t\t\tthis.setLocalStorage('showStoragePath', status);\n\t\t\t}\n\t\t},\n\n\t\tuserCount() {\n\t\t\treturn this.$store.getters.getUserCount;\n\t\t},\n\t\tsettings() {\n\t\t\treturn this.$store.getters.getServerData;\n\t\t},\n\n\t\t// default quota\n\t\tquotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tlet quotaPreset = this.settings.quotaPreset.reduce((acc, cur) => acc.concat({id:cur, label:cur}), []);\n\t\t\t// add default presets\n\t\t\tquotaPreset.unshift(this.unlimitedQuota);\n\t\t\treturn quotaPreset;\n\t\t},\n\t\t// mapping saved values to objects\n\t\tdefaultQuota: {\n\t\t\tget: function() {\n\t\t\t\tif (this.selectedQuota !== false) {\n\t\t\t\t\treturn this.selectedQuota;\n\t\t\t\t}\n\t\t\t\tif (OC.Util.computerFileSize(this.settings.defaultQuota) > 0) {\n\t\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\t\treturn {id:this.settings.defaultQuota, label:this.settings.defaultQuota};\n\t\t\t\t}\n\t\t\t\treturn this.unlimitedQuota; // unlimited\n\t\t\t},\n\t\t\tset: function(quota) {\n\t\t\t\tthis.selectedQuota =  quota;\n\t\t\t}\n\t\t\t\n\t\t},\n\n\t\t// BUILD APP NAVIGATION MENU OBJECT\n\t\tmenu() {\n\t\t\t// Data provided php side\n\t\t\tlet self = this;\n\t\t\tlet groups = this.$store.getters.getGroups;\n\t\t\tgroups = Array.isArray(groups) ? groups : [];\n\n\t\t\t// Map groups\n\t\t\tgroups = groups.map(group => {\n\t\t\t\tlet item = {};\n\t\t\t\titem.id = group.id.replace(' ', '_');\n\t\t\t\titem.key = item.id;\n\t\t\t\titem.utils = {}\n\n\t\t\t\t// router link to\n\t\t\t\titem.router = {\n\t\t\t\t\tname: 'group',\n\t\t\t\t\tparams: {selectedGroup: group.id}\n\t\t\t\t};\n\n\t\t\t\t// group name\n\t\t\t\titem.text = group.name;\n\t\t\t\titem.title = group.name;\n\n\t\t\t\t// users count for all groups\n\t\t\t\tif (group.usercount - group.disabled > 0 || group.usercount === -1) {\n\t\t\t\t\titem.utils.counter = group.usercount - group.disabled;\n\t\t\t\t}\n\n\t\t\t\tif (item.id !== 'admin' && item.id !== 'disabled' && this.settings.isAdmin) {\n\t\t\t\t\t// add delete button on real groups\n\t\t\t\t\titem.utils.actions = [{\n\t\t\t\t\t\ticon: 'icon-delete',\n\t\t\t\t\t\ttext: t('settings', 'Remove group'),\n\t\t\t\t\t\taction: function() {\n\t\t\t\t\t\t\tself.removeGroup(group.id)\n\t\t\t\t\t\t}\n\t\t\t\t\t}];\n\t\t\t\t};\n\t\t\t\treturn item;\n\t\t\t});\n\n\t\t\t// Every item is added on top of the array, so we're going backward\n\t\t\t// Groups, separator, disabled, admin, everyone\n\n\t\t\t// Add separator\n\t\t\tlet realGroups = groups.find((group) => {return group.id !== 'disabled' && group.id !== 'admin'});\n\t\t\trealGroups = typeof realGroups === 'undefined' ? [] : realGroups;\n\t\t\trealGroups = Array.isArray(realGroups) ? realGroups : [realGroups];\n\t\t\tif (realGroups.length > 0) {\n\t\t\t\tlet separator = {\n\t\t\t\t\tcaption: true,\n\t\t\t\t\ttext: t('settings', 'Groups')\n\t\t\t\t};\n\t\t\t\tgroups.unshift(separator);\n\t\t\t}\n\n\t\t\t// Adjust admin and disabled groups\n\t\t\tlet adminGroup = groups.find(group => group.id == 'admin');\n\t\t\tlet disabledGroup = groups.find(group => group.id == 'disabled');\n\n\t\t\t// filter out admin and disabled\n\t\t\tgroups = groups.filter(group => ['admin', 'disabled'].indexOf(group.id) === -1);\n\n\t\t\tif (adminGroup && adminGroup.text) {\n\t\t\t\tadminGroup.text = t('settings', 'Admins');\t// rename admin group\n\t\t\t\tadminGroup.icon = 'icon-user-admin';\t\t// set icon\n\t\t\t\tgroups.unshift(adminGroup);\t\t\t\t\t// add admin group if present\n\t\t\t}\n\t\t\tif (disabledGroup && disabledGroup.text) {\n\t\t\t\tdisabledGroup.text = t('settings', 'Disabled users');\t// rename disabled group\n\t\t\t\tdisabledGroup.icon = 'icon-disabled-users';\t\t\t\t// set icon\n\t\t\t\tif (disabledGroup.utils && (\n\t\t\t\t\t   disabledGroup.utils.counter > 0\t\t\t\t\t// add disabled if not empty \n\t\t\t\t\t|| disabledGroup.utils.counter === -1)\t\t\t\t// add disabled if ldap enabled \n\t\t\t\t) {\n\t\t\t\t\tgroups.unshift(disabledGroup);\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t// Add everyone group\n\t\t\tlet everyoneGroup = {\n\t\t\t\tid: 'everyone',\n\t\t\t\tkey: 'everyone',\n\t\t\t\ticon: 'icon-contacts-dark',\n\t\t\t\trouter: {name:'users'},\n\t\t\t\ttext: t('settings', 'Everyone'),\n\t\t\t};\n\t\t\t// users count\n\t\t\tif (this.userCount > 0) {\n\t\t\t\tVue.set(everyoneGroup, 'utils', {\n\t\t\t\t\tcounter: this.userCount\n\t\t\t\t});\n\t\t\t}\n\t\t\tgroups.unshift(everyoneGroup);\n\n\t\t\tlet addGroup = {\n\t\t\t\tid: 'addgroup',\n\t\t\t\tkey: 'addgroup',\n\t\t\t\ticon: 'icon-add',\n\t\t\t\ttext: t('settings', 'Add group'),\n\t\t\t\tclasses: this.loadingAddGroup ? 'icon-loading-small' : ''\n\t\t\t};\n\t\t\tif (this.showAddGroupEntry) {\n\t\t\t\tVue.set(addGroup, 'edit', {\n\t\t\t\t\ttext: t('settings', 'Add group'),\n\t\t\t\t\taction: this.createGroup,\n\t\t\t\t\treset: function() {\n\t\t\t\t\t\tself.showAddGroupEntry = false\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\taddGroup.classes = 'editing';\n\t\t\t} else {\n\t\t\t\tVue.set(addGroup, 'action', function() {\n\t\t\t\t\tself.showAddGroupEntry = true\n\t\t\t\t\t// focus input\n\t\t\t\t\tVue.nextTick(() => {\n\t\t\t\t\t\twindow.addgroup.querySelector('form > input[type=\"text\"]').focus()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}\n\t\t\tgroups.unshift(addGroup);\n\n\t\t\treturn groups;\n\t\t},\n\t}\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Users.vue?vue&type=template&id=39500066&\"\nimport script from \"./Users.vue?vue&type=script&lang=js&\"\nexport * from \"./Users.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports"],"sourceRoot":""}
\ No newline at end of file