diff options
author | Thomas Citharel <tcit@tcit.fr> | 2023-01-04 17:32:23 +0100 |
---|---|---|
committer | nextcloud-command <nextcloud-command@users.noreply.github.com> | 2023-01-04 17:40:40 +0000 |
commit | ab6e7d33f82880174490b507378c7bf4bd2998e6 (patch) | |
tree | 8fa659b7e66925d326bed9da4600cf2956ef7dba /dist/core-unified-search.js.map | |
parent | e235c6438c5013bf81ee34d283b8aea43305400f (diff) | |
download | nextcloud-server-ab6e7d33f82880174490b507378c7bf4bd2998e6.tar.gz nextcloud-server-ab6e7d33f82880174490b507378c7bf4bd2998e6.zip |
Remove jstz usage from server
Every proper browser has this kind of data now, with more up-to-date
data than what's inside this package, which hasn't been updated in 3
years.
https://github.com/pellepim/jstimezonedetect/issues/6
https://github.com/pellepim/jstimezonedetect/issues/9
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Diffstat (limited to 'dist/core-unified-search.js.map')
-rw-r--r-- | dist/core-unified-search.js.map | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/dist/core-unified-search.js.map b/dist/core-unified-search.js.map index fc7513fa27e..463c2dc604c 100644 --- a/dist/core-unified-search.js.map +++ b/dist/core-unified-search.js.map @@ -1 +1 @@ -{"version":3,"file":"core-unified-search.js?v=a29f43a62f99fc4f24b3","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/services/UnifiedSearchService.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/HeaderMenu.vue","webpack://nextcloud/./core/src/components/HeaderMenu.vue?3956","webpack://nextcloud/./core/src/components/HeaderMenu.vue?30e1","webpack://nextcloud/./core/src/components/HeaderMenu.vue?d296","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?e4b5","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?f7a7","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?32d3","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?f8e5","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?7f72","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?cc53","webpack:///nextcloud/core/src/views/UnifiedSearch.vue","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1b75","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1990","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?adc0","webpack:///nextcloud/core/src/unified-search.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=style&index=0&id=79c00176&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=style&index=0&id=288e1e92&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=style&index=0&id=3d447e9e&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2020, John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\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\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nexport const defaultLimit = loadState('unified-search', 'limit-default')\nexport const minSearchLength = loadState('unified-search', 'min-search-length', 1)\nexport const enableLiveSearch = loadState('unified-search', 'live-search', true)\n\nexport const regexFilterIn = /(^|\\s)in:([a-z_-]+)/ig\nexport const regexFilterNot = /(^|\\s)-in:([a-z_-]+)/ig\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Get the list of available search providers\n *\n * @return {Promise<Array>}\n */\nexport async function getTypes() {\n\ttry {\n\t\tconst { data } = await axios.get(generateOcsUrl('search/providers'), {\n\t\t\tparams: {\n\t\t\t\t// Sending which location we're currently at\n\t\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t\t},\n\t\t})\n\t\tif ('ocs' in data && 'data' in data.ocs && Array.isArray(data.ocs.data) && data.ocs.data.length > 0) {\n\t\t\t// Providers are sorted by the api based on their order key\n\t\t\treturn data.ocs.data\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n\treturn []\n}\n\n/**\n * Get the list of available search providers\n *\n * @param {object} options destructuring object\n * @param {string} options.type the type to search\n * @param {string} options.query the search\n * @param {number|string|undefined} options.cursor the offset for paginated searches\n * @return {object} {request: Promise, cancel: Promise}\n */\nexport function search({ type, query, cursor }) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\tconst request = async () => axios.get(generateOcsUrl('search/providers/{type}/search', { type }), {\n\t\tcancelToken: cancelToken.token,\n\t\tparams: {\n\t\t\tterm: query,\n\t\t\tcursor,\n\t\t\t// Sending which location we're currently at\n\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t},\n\t})\n\n\treturn {\n\t\trequest,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderMenu.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!./HeaderMenu.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<div :id=\"id\"\n\t\tv-click-outside=\"clickOutsideConfig\"\n\t\t:class=\"{ 'header-menu--opened': opened }\"\n\t\tclass=\"header-menu\">\n\t\t<a class=\"header-menu__trigger\"\n\t\t\thref=\"#\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t:aria-controls=\"`header-menu-${id}`\"\n\t\t\t:aria-expanded=\"opened.toString()\"\n\t\t\t@click.prevent=\"toggleMenu\">\n\t\t\t<slot name=\"trigger\" />\n\t\t</a>\n\t\t<div v-show=\"opened\" class=\"header-menu__carret\" />\n\t\t<div v-show=\"opened\"\n\t\t\t:id=\"`header-menu-${id}`\"\n\t\t\tclass=\"header-menu__wrapper\"\n\t\t\trole=\"menu\"\n\t\t\t@focusout=\"handleFocusOut\">\n\t\t\t<div class=\"header-menu__content\">\n\t\t\t\t<slot />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { directive as ClickOutside } from 'v-click-outside'\nimport excludeClickOutsideClasses from '@nextcloud/vue/dist/Mixins/excludeClickOutsideClasses'\n\nexport default {\n\tname: 'HeaderMenu',\n\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\n\tmixins: [\n\t\texcludeClickOutsideClasses,\n\t],\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\topened: this.open,\n\t\t\tclickOutsideConfig: {\n\t\t\t\thandler: this.closeMenu,\n\t\t\t\tmiddleware: this.clickOutsideMiddleware,\n\t\t\t},\n\t\t\tshortcutsDisabled: OCP.Accessibility.disableKeyboardShortcuts(),\n\t\t}\n\t},\n\n\twatch: {\n\t\topen(newVal) {\n\t\t\tthis.opened = newVal\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (this.opened) {\n\t\t\t\t\tthis.openMenu()\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeMenu()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\n\tmounted() {\n\t\tdocument.addEventListener('keydown', this.onKeyDown)\n\t},\n\tbeforeDestroy() {\n\t\tdocument.removeEventListener('keydown', this.onKeyDown)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Toggle the current menu open state\n\t\t */\n\t\ttoggleMenu() {\n\t\t\t// Toggling current state\n\t\t\tif (!this.opened) {\n\t\t\t\tthis.openMenu()\n\t\t\t} else {\n\t\t\t\tthis.closeMenu()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Close the current menu\n\t\t */\n\t\tcloseMenu() {\n\t\t\tif (!this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = false\n\t\t\tthis.$emit('close')\n\t\t\tthis.$emit('update:open', false)\n\t\t},\n\n\t\t/**\n\t\t * Open the current menu\n\t\t */\n\t\topenMenu() {\n\t\t\tif (this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = true\n\t\t\tthis.$emit('open')\n\t\t\tthis.$emit('update:open', true)\n\t\t},\n\n\t\tonKeyDown(event) {\n\t\t\tif (this.shortcutsDisabled) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If opened and escape pressed, close\n\t\t\tif (event.key === 'Escape' && this.opened) {\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\t/** user cancelled the menu by pressing escape */\n\t\t\t\tthis.$emit('cancel')\n\n\t\t\t\t/** we do NOT fire a close event to differentiate cancel and close */\n\t\t\t\tthis.opened = false\n\t\t\t\tthis.$emit('update:open', false)\n\t\t\t}\n\t\t},\n\n\t\thandleFocusOut(event) {\n\t\t\tif (!event.currentTarget.contains(event.relatedTarget)) {\n\t\t\t\tthis.closeMenu()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$externalMargin: 8px;\n\n.header-menu {\n\t&__trigger {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 50px;\n\t\theight: 44px;\n\t\tmargin: 2px 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .85;\n\t}\n\n\t&--opened &__trigger,\n\t&__trigger:hover,\n\t&__trigger:focus,\n\t&__trigger:active {\n\t\topacity: 1;\n\t}\n\n\t&__trigger:focus-visible {\n\t\toutline: none;\n\t}\n\n\t&__wrapper {\n\t\tposition: fixed;\n\t\tz-index: 2000;\n\t\ttop: 50px;\n\t\tright: 0;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0 $externalMargin;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t\tpadding: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tz-index: 2001; // Because __wrapper is 2000.\n\t\tleft: calc(50% - 10px);\n\t\tbottom: 0;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: ' ';\n\t\tpointer-events: none;\n\t\tborder: 10px solid transparent;\n\t\tborder-bottom-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\toverflow: auto;\n\t\twidth: 350px;\n\t\tmax-width: calc(100vw - 2 * $externalMargin);\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\n}\n\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderMenu.vue?vue&type=style&index=0&id=79c00176&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderMenu.vue?vue&type=style&index=0&id=79c00176&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderMenu.vue?vue&type=template&id=79c00176&scoped=true&\"\nimport script from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderMenu.vue?vue&type=style&index=0&id=79c00176&prod&lang=scss&scoped=true&\"\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 \"79c00176\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.clickOutsideConfig),expression:\"clickOutsideConfig\"}],staticClass:\"header-menu\",class:{ 'header-menu--opened': _vm.opened },attrs:{\"id\":_vm.id}},[_c('a',{staticClass:\"header-menu__trigger\",attrs:{\"href\":\"#\",\"aria-label\":_vm.ariaLabel,\"aria-controls\":`header-menu-${_vm.id}`,\"aria-expanded\":_vm.opened.toString()},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMenu.apply(null, arguments)}}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],staticClass:\"header-menu__carret\"}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],staticClass:\"header-menu__wrapper\",attrs:{\"id\":`header-menu-${_vm.id}`,\"role\":\"menu\"},on:{\"focusout\":_vm.handleFocusOut}},[_c('div',{staticClass:\"header-menu__content\"},[_vm._t(\"default\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"unified-search__result\",class:{\n\t\t'unified-search__result--focused': _vm.focused,\n\t},attrs:{\"href\":_vm.resourceUrl || '#'},on:{\"click\":_vm.reEmitEvent,\"focus\":_vm.reEmitEvent}},[_c('div',{staticClass:\"unified-search__result-icon\",class:{\n\t\t\t'unified-search__result-icon--rounded': _vm.rounded,\n\t\t\t'unified-search__result-icon--no-preview': !_vm.hasValidThumbnail && !_vm.loaded,\n\t\t\t'unified-search__result-icon--with-thumbnail': _vm.hasValidThumbnail && _vm.loaded,\n\t\t\t[_vm.icon]: !_vm.loaded && !_vm.isIconUrl,\n\t\t},style:({\n\t\t\tbackgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : '',\n\t\t})},[(_vm.hasValidThumbnail)?_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],attrs:{\"src\":_vm.thumbnailUrl,\"alt\":\"\"},on:{\"error\":_vm.onError,\"load\":_vm.onLoad}}):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"unified-search__result-content\"},[_c('span',{staticClass:\"unified-search__result-line-one\",attrs:{\"title\":_vm.title}},[_c('NcHighlight',{attrs:{\"text\":_vm.title,\"search\":_vm.query}})],1),_vm._v(\" \"),(_vm.subline)?_c('span',{staticClass:\"unified-search__result-line-two\",attrs:{\"title\":_vm.subline}},[_vm._v(_vm._s(_vm.subline))]):_vm._e()])])\n}\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!./SearchResult.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!./SearchResult.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<a :href=\"resourceUrl || '#'\"\n\t\tclass=\"unified-search__result\"\n\t\t:class=\"{\n\t\t\t'unified-search__result--focused': focused,\n\t\t}\"\n\t\t@click=\"reEmitEvent\"\n\t\t@focus=\"reEmitEvent\">\n\n\t\t<!-- Icon describing the result -->\n\t\t<div class=\"unified-search__result-icon\"\n\t\t\t:class=\"{\n\t\t\t\t'unified-search__result-icon--rounded': rounded,\n\t\t\t\t'unified-search__result-icon--no-preview': !hasValidThumbnail && !loaded,\n\t\t\t\t'unified-search__result-icon--with-thumbnail': hasValidThumbnail && loaded,\n\t\t\t\t[icon]: !loaded && !isIconUrl,\n\t\t\t}\"\n\t\t\t:style=\"{\n\t\t\t\tbackgroundImage: isIconUrl ? `url(${icon})` : '',\n\t\t\t}\">\n\n\t\t\t<img v-if=\"hasValidThumbnail\"\n\t\t\t\tv-show=\"loaded\"\n\t\t\t\t:src=\"thumbnailUrl\"\n\t\t\t\talt=\"\"\n\t\t\t\t@error=\"onError\"\n\t\t\t\t@load=\"onLoad\">\n\t\t</div>\n\n\t\t<!-- Title and sub-title -->\n\t\t<span class=\"unified-search__result-content\">\n\t\t\t<span class=\"unified-search__result-line-one\" :title=\"title\">\n\t\t\t\t<NcHighlight :text=\"title\" :search=\"query\" />\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"unified-search__result-line-two\" :title=\"subline\">{{ subline }}</span>\n\t\t</span>\n\t</a>\n</template>\n\n<script>\nimport NcHighlight from '@nextcloud/vue/dist/Components/NcHighlight'\n\nexport default {\n\tname: 'SearchResult',\n\n\tcomponents: {\n\t\tNcHighlight,\n\t},\n\n\tprops: {\n\t\tthumbnailUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tresourceUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\trounded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Only used for the first result as a visual feedback\n\t\t * so we can keep the search input focused but pressing\n\t\t * enter still opens the first result\n\t\t */\n\t\tfocused: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\thasValidThumbnail: this.thumbnailUrl && this.thumbnailUrl.trim() !== '',\n\t\t\tloaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisIconUrl() {\n\t\t\t// If we're facing an absolute url\n\t\t\tif (this.icon.startsWith('/')) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// Otherwise, let's check if this is a valid url\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-new\n\t\t\t\tnew URL(this.icon)\n\t\t\t} catch {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\twatch: {\n\t\t// Make sure to reset state on change even when vue recycle the component\n\t\tthumbnailUrl() {\n\t\t\tthis.hasValidThumbnail = this.thumbnailUrl && this.thumbnailUrl.trim() !== ''\n\t\t\tthis.loaded = false\n\t\t},\n\t},\n\n\tmethods: {\n\t\treEmitEvent(e) {\n\t\t\tthis.$emit(e.type, e)\n\t\t},\n\n\t\t/**\n\t\t * If the image fails to load, fallback to iconClass\n\t\t */\n\t\tonError() {\n\t\t\tthis.hasValidThumbnail = false\n\t\t},\n\n\t\tonLoad() {\n\t\t\tthis.loaded = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\n\tborder-radius: var(--border-radius-large) !important;\n\n\t// Load more entry,\n\t&:last-child {\n\t\tborder-bottom: none;\n\t}\n\n\t&--focused,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t* {\n\t\tcursor: pointer;\n\t}\n\n\t&-icon {\n\t\toverflow: hidden;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center center;\n\t\tbackground-size: 32px;\n\t\t&--rounded {\n\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t}\n\t\t&--no-preview {\n\t\t\tbackground-size: 32px;\n\t\t}\n\t\t&--with-thumbnail {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t&--with-thumbnail:not(&--rounded) {\n\t\t\t// compensate for border\n\t\t\tmax-width: $clickable-area - 2px;\n\t\t\tmax-height: $clickable-area - 2px;\n\t\t\tborder: 1px solid var(--color-border);\n\t\t}\n\n\t\timg {\n\t\t\t// Make sure to keep ratio\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\n\t\t\tobject-fit: cover;\n\t\t\tobject-position: center;\n\t\t}\n\t}\n\n\t&-icon,\n\t&-actions {\n\t\tflex: 0 0 $clickable-area;\n\t}\n\n\t&-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 100%;\n\t\tflex-wrap: wrap;\n\t\t// Set to minimum and gro from it\n\t\tmin-width: 0;\n\t\tpadding-left: $margin;\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\toverflow: hidden;\n\t\tflex: 1 1 100%;\n\t\tmargin: 1px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Use the same color as the `a`\n\t\tcolor: inherit;\n\t\tfont-size: inherit;\n\t}\n\t&-line-two {\n\t\topacity: .7;\n\t\tfont-size: var(--default-font-size);\n\t}\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResult.vue?vue&type=style&index=0&id=288e1e92&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResult.vue?vue&type=style&index=0&id=288e1e92&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResult.vue?vue&type=template&id=288e1e92&scoped=true&\"\nimport script from \"./SearchResult.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResult.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResult.vue?vue&type=style&index=0&id=288e1e92&prod&lang=scss&scoped=true&\"\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 \"288e1e92\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPlaceholders.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!./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"","<template>\n\t<ul>\n\t\t<!-- Placeholder animation -->\n\t\t<svg class=\"unified-search__result-placeholder-gradient\">\n\t\t\t<defs>\n\t\t\t\t<linearGradient id=\"unified-search__result-placeholder-gradient\">\n\t\t\t\t\t<stop offset=\"0%\" :stop-color=\"light\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${light}; ${light}; ${dark}; ${dark}; ${light}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t\t<stop offset=\"100%\" :stop-color=\"dark\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${dark}; ${light}; ${light}; ${dark}; ${dark}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\n\t\t<!-- Placeholders -->\n\t\t<li v-for=\"placeholder in [1, 2, 3]\" :key=\"placeholder\">\n\t\t\t<svg class=\"unified-search__result-placeholder\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tfill=\"url(#unified-search__result-placeholder-gradient)\">\n\t\t\t\t<rect class=\"unified-search__result-placeholder-icon\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-one\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-two\" :style=\"{width: `calc(${randWidth()}%)`}\" />\n\t\t\t</svg>\n\t\t</li>\n\t</ul>\n</template>\n\n<script>\nexport default {\n\tname: 'SearchResultPlaceholders',\n\n\tdata() {\n\t\treturn {\n\t\t\tlight: null,\n\t\t\tdark: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tconst styles = getComputedStyle(document.documentElement)\n\t\tthis.dark = styles.getPropertyValue('--color-placeholder-dark')\n\t\tthis.light = styles.getPropertyValue('--color-placeholder-light')\n\t},\n\n\tmethods: {\n\t\trandWidth() {\n\t\t\treturn Math.floor(Math.random() * 20) + 30\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result-placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.unified-search__result-placeholder {\n\twidth: calc(100% - 2 * #{$margin});\n\theight: $clickable-area;\n\tmargin: $margin;\n\n\t&-icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\trx: var(--border-radius);\n\t\try: var(--border-radius);\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\twidth: calc(100% - #{$margin + $clickable-area});\n\t\theight: 1em;\n\t\tx: $margin + $clickable-area;\n\t}\n\n\t&-line-one {\n\t\ty: 5px;\n\t}\n\n\t&-line-two {\n\t\ty: 25px;\n\t}\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResultPlaceholders.vue?vue&type=template&id=9ed03c40&scoped=true&\"\nimport script from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&prod&lang=scss&scoped=true&\"\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 \"9ed03c40\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('svg',{staticClass:\"unified-search__result-placeholder-gradient\"},[_c('defs',[_c('linearGradient',{attrs:{\"id\":\"unified-search__result-placeholder-gradient\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":_vm.light}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":`${_vm.light}; ${_vm.light}; ${_vm.dark}; ${_vm.dark}; ${_vm.light}`,\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})]),_vm._v(\" \"),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":_vm.dark}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":`${_vm.dark}; ${_vm.light}; ${_vm.light}; ${_vm.dark}; ${_vm.dark}`,\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})])],1)],1)]),_vm._v(\" \"),_vm._l(([1, 2, 3]),function(placeholder){return _c('li',{key:placeholder},[_c('svg',{staticClass:\"unified-search__result-placeholder\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"url(#unified-search__result-placeholder-gradient)\"}},[_c('rect',{staticClass:\"unified-search__result-placeholder-icon\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-one\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-two\",style:({width: `calc(${_vm.randWidth()}%)`})})])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<HeaderMenu id=\"unified-search\"\n\t\tclass=\"unified-search\"\n\t\texclude-click-outside-classes=\"popover\"\n\t\t:open.sync=\"open\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\">\n\t\t<!-- Header icon -->\n\t\t<template #trigger>\n\t\t\t<Magnify class=\"unified-search__trigger\"\n\t\t\t\t:size=\"22/* fit better next to other 20px icons */\"\n\t\t\t\tfill-color=\"var(--color-primary-text)\" />\n\t\t</template>\n\n\t\t<!-- Search form & filters wrapper -->\n\t\t<div class=\"unified-search__input-wrapper\">\n\t\t\t<label for=\"unified-search__input\">{{ ariaLabel }}</label>\n\t\t\t<div class=\"unified-search__input-row\">\n\t\t\t\t<form class=\"unified-search__form\"\n\t\t\t\t\trole=\"search\"\n\t\t\t\t\t:class=\"{'icon-loading-small': isLoading}\"\n\t\t\t\t\t@submit.prevent.stop=\"onInputEnter\"\n\t\t\t\t\t@reset.prevent.stop=\"onReset\">\n\t\t\t\t\t<!-- Search input -->\n\t\t\t\t\t<input ref=\"input\"\n\t\t\t\t\t\tid=\"unified-search__input\"\n\t\t\t\t\t\tv-model=\"query\"\n\t\t\t\t\t\tclass=\"unified-search__form-input\"\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\t:class=\"{'unified-search__form-input--with-reset': !!query}\"\n\t\t\t\t\t\t:placeholder=\"t('core', 'Search {types} …', { types: typesNames.join(', ') })\"\n\t\t\t\t\t\taria-describedby=\"unified-search-desc\"\n\t\t\t\t\t\t@input=\"onInputDebounced\"\n\t\t\t\t\t\t@keypress.enter.prevent.stop=\"onInputEnter\">\n\t\t\t\t\t<p id=\"unified-search-desc\" class=\"hidden-visually\">\n\t\t\t\t\t\t{{ t('core', 'Search starts once you start typing and results may be reached with the arrow keys') }}\n\t\t\t\t\t</p>\n\n\t\t\t\t\t<!-- Reset search button -->\n\t\t\t\t\t<input v-if=\"!!query && !isLoading\"\n\t\t\t\t\t\ttype=\"reset\"\n\t\t\t\t\t\tclass=\"unified-search__form-reset icon-close\"\n\t\t\t\t\t\t:aria-label=\"t('core','Reset search')\"\n\t\t\t\t\t\tvalue=\"\">\n\n\t\t\t\t\t<input v-if=\"!!query && !isLoading && !enableLiveSearch\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclass=\"unified-search__form-submit icon-confirm\"\n\t\t\t\t\t\t:aria-label=\"t('core','Start search')\"\n\t\t\t\t\t\tvalue=\"\">\n\t\t\t\t</form>\n\n\t\t\t\t<!-- Search filters -->\n\t\t\t\t<NcActions v-if=\"availableFilters.length > 1\"\n\t\t\t\t\tclass=\"unified-search__filters\"\n\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\tcontainer=\".unified-search__input-wrapper\">\n\t\t\t\t\t<!-- FIXME use element ref for container after https://github.com/nextcloud/nextcloud-vue/pull/3462 -->\n\t\t\t\t\t<NcActionButton v-for=\"type in availableFilters\"\n\t\t\t\t\t\t:key=\"type\"\n\t\t\t\t\t\ticon=\"icon-filter\"\n\t\t\t\t\t\t:title=\"t('core', 'Search for {name} only', { name: typesMap[type] })\"\n\t\t\t\t\t\t@click.stop=\"onClickFilter(`in:${type}`)\">\n\t\t\t\t\t\t{{ `in:${type}` }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<template v-if=\"!hasResults\">\n\t\t\t<!-- Loading placeholders -->\n\t\t\t<SearchResultPlaceholders v-if=\"isLoading\" />\n\n\t\t\t<NcEmptyContent v-else-if=\"isValidQuery\">\n\t\t\t\t<NcHighlight v-if=\"triggered\" :text=\"t('core', 'No results for {query}', { query })\" :search=\"query\" />\n\t\t\t\t<div v-else>\n\t\t\t\t\t{{ t('core', 'Press enter to start searching') }}\n\t\t\t\t</div>\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Magnify />\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\n\t\t\t<NcEmptyContent v-else-if=\"!isLoading || isShortQuery\">\n\t\t\t\t{{ t('core', 'Start typing to search') }}\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Magnify />\n\t\t\t\t</template>\n\t\t\t\t<template v-if=\"isShortQuery\" #desc>\n\t\t\t\t\t{{ n('core',\n\t\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t\tminSearchLength,\n\t\t\t\t\t\t{minSearchLength}) }}\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\t\t</template>\n\n\t\t<!-- Grouped search results -->\n\t\t<template v-else>\n\t\t\t<ul v-for=\"({list, type}, typesIndex) in orderedResults\"\n\t\t\t\t:key=\"type\"\n\t\t\t\tclass=\"unified-search__results\"\n\t\t\t\t:class=\"`unified-search__results-${type}`\"\n\t\t\t\t:aria-label=\"typesMap[type]\">\n\t\t\t\t<h2 class=\"unified-search__results-header\">\n\t\t\t\t\t{{ typesMap[type] }}\n\t\t\t\t</h2>\n\n\t\t\t\t<!-- Search results -->\n\t\t\t\t<li v-for=\"(result, index) in limitIfAny(list, type)\" :key=\"result.resourceUrl\">\n\t\t\t\t\t<SearchResult v-bind=\"result\"\n\t\t\t\t\t\t:query=\"query\"\n\t\t\t\t\t\t:focused=\"focused === 0 && typesIndex === 0 && index === 0\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\n\t\t\t\t<!-- Load more button -->\n\t\t\t\t<li>\n\t\t\t\t\t<SearchResult v-if=\"!reached[type]\"\n\t\t\t\t\t\tclass=\"unified-search__result-more\"\n\t\t\t\t\t\t:title=\"loading[type]\n\t\t\t\t\t\t\t? t('core', 'Loading more results …')\n\t\t\t\t\t\t\t: t('core', 'Load more results')\"\n\t\t\t\t\t\t:icon-class=\"loading[type] ? 'icon-loading-small' : ''\"\n\t\t\t\t\t\t@click.stop=\"loadMore(type)\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t</HeaderMenu>\n</template>\n\n<script>\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { minSearchLength, getTypes, search, defaultLimit, regexFilterIn, regexFilterNot, enableLiveSearch } from '../services/UnifiedSearchService'\nimport { showError } from '@nextcloud/dialogs'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport debounce from 'debounce'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'\nimport NcHighlight from '@nextcloud/vue/dist/Components/NcHighlight'\nimport Magnify from 'vue-material-design-icons/Magnify'\n\nimport HeaderMenu from '../components/HeaderMenu'\nimport SearchResult from '../components/UnifiedSearch/SearchResult'\nimport SearchResultPlaceholders from '../components/UnifiedSearch/SearchResultPlaceholders'\n\nconst REQUEST_FAILED = 0\nconst REQUEST_OK = 1\nconst REQUEST_CANCELED = 2\n\nexport default {\n\tname: 'UnifiedSearch',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcEmptyContent,\n\t\tHeaderMenu,\n\t\tNcHighlight,\n\t\tMagnify,\n\t\tSearchResult,\n\t\tSearchResultPlaceholders,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttypes: [],\n\n\t\t\t// Cursors per types\n\t\t\tcursors: {},\n\t\t\t// Various search limits per types\n\t\t\tlimits: {},\n\t\t\t// Loading types\n\t\t\tloading: {},\n\t\t\t// Reached search types\n\t\t\treached: {},\n\t\t\t// Pending cancellable requests\n\t\t\trequests: [],\n\t\t\t// List of all results\n\t\t\tresults: {},\n\n\t\t\tquery: '',\n\t\t\tfocused: null,\n\t\t\ttriggered: false,\n\n\t\t\tdefaultLimit,\n\t\t\tminSearchLength,\n\t\t\tenableLiveSearch,\n\n\t\t\topen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttypesIDs() {\n\t\t\treturn this.types.map(type => type.id)\n\t\t},\n\t\ttypesNames() {\n\t\t\treturn this.types.map(type => type.name)\n\t\t},\n\t\ttypesMap() {\n\t\t\treturn this.types.reduce((prev, curr) => {\n\t\t\t\tprev[curr.id] = curr.name\n\t\t\t\treturn prev\n\t\t\t}, {})\n\t\t},\n\n\t\tariaLabel() {\n\t\t\treturn t('core', 'Search')\n\t\t},\n\n\t\t/**\n\t\t * Is there any result to display\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasResults() {\n\t\t\treturn Object.keys(this.results).length !== 0\n\t\t},\n\n\t\t/**\n\t\t * Return ordered results\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\torderedResults() {\n\t\t\treturn this.typesIDs\n\t\t\t\t.filter(type => type in this.results)\n\t\t\t\t.map(type => ({\n\t\t\t\t\ttype,\n\t\t\t\t\tlist: this.results[type],\n\t\t\t\t}))\n\t\t},\n\n\t\t/**\n\t\t * Available filters\n\t\t * We only show filters that are available on the results\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tavailableFilters() {\n\t\t\treturn Object.keys(this.results)\n\t\t},\n\n\t\t/**\n\t\t * Applied filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersIn() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterIn.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[2])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Applied anti filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersNot() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterNot.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[2])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Is the current search too short\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisShortQuery() {\n\t\t\treturn this.query && this.query.trim().length < minSearchLength\n\t\t},\n\n\t\t/**\n\t\t * Is the current search valid\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && !this.isShortQuery\n\t\t},\n\n\t\t/**\n\t\t * Have we reached the end of all types searches\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisDoneSearching() {\n\t\t\treturn Object.values(this.reached).every(state => state === false)\n\t\t},\n\n\t\t/**\n\t\t * Is there any search in progress\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisLoading() {\n\t\t\treturn Object.values(this.loading).some(state => state === true)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tsubscribe('files:navigation:changed', this.resetForm)\n\t\tthis.types = await getTypes()\n\t\tthis.logger.debug('Unified Search initialized with the following providers', this.types)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('files:navigation:changed', this.resetForm)\n\t},\n\n\tmounted() {\n\t\tif (OCP.Accessibility.disableKeyboardShortcuts()) {\n\t\t\treturn\n\t\t}\n\n\t\tdocument.addEventListener('keydown', (event) => {\n\t\t\t// if not already opened, allows us to trigger default browser on second keydown\n\t\t\tif (event.ctrlKey && event.key === 'f' && !this.open) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.open = true\n\t\t\t\tthis.focusInput()\n\t\t\t}\n\n\t\t\t// https://www.w3.org/WAI/GL/wiki/Using_ARIA_menus\n\t\t\tif (this.open) {\n\t\t\t\t// If arrow down, focus next result\n\t\t\t\tif (event.key === 'ArrowDown') {\n\t\t\t\t\tthis.focusNext(event)\n\t\t\t\t}\n\n\t\t\t\t// If arrow up, focus prev result\n\t\t\t\tif (event.key === 'ArrowUp') {\n\t\t\t\t\tthis.focusPrev(event)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\tmethods: {\n\t\tasync onOpen() {\n\t\t\tthis.focusInput()\n\t\t\t// Update types list in the background\n\t\t\tthis.types = await getTypes()\n\t\t},\n\t\tonClose() {\n\t\t\temit('nextcloud:unified-search.close')\n\t\t},\n\n\t\tresetForm() {\n\t\t\tthis.$el.querySelector('form[role=\"search\"]').reset()\n\t\t},\n\n\t\t/**\n\t\t * Reset the search state\n\t\t */\n\t\tonReset() {\n\t\t\temit('nextcloud:unified-search.reset')\n\t\t\tthis.logger.debug('Search reset')\n\t\t\tthis.query = ''\n\t\t\tthis.resetState()\n\t\t\tthis.focusInput()\n\t\t},\n\t\tasync resetState() {\n\t\t\tthis.cursors = {}\n\t\t\tthis.limits = {}\n\t\t\tthis.reached = {}\n\t\t\tthis.results = {}\n\t\t\tthis.focused = null\n\t\t\tthis.triggered = false\n\t\t\tawait this.cancelPendingRequests()\n\t\t},\n\n\t\t/**\n\t\t * Cancel any ongoing searches\n\t\t */\n\t\tasync cancelPendingRequests() {\n\t\t\t// Cloning so we can keep processing other requests\n\t\t\tconst requests = this.requests.slice(0)\n\t\t\tthis.requests = []\n\n\t\t\t// Cancel all pending requests\n\t\t\tawait Promise.all(requests.map(cancel => cancel()))\n\t\t},\n\n\t\t/**\n\t\t * Focus the search input on next tick\n\t\t */\n\t\tfocusInput() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.input.focus()\n\t\t\t\tthis.$refs.input.select()\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * If we have results already, open first one\n\t\t * If not, trigger the search again\n\t\t */\n\t\tonInputEnter() {\n\t\t\tif (this.hasResults) {\n\t\t\t\tconst results = this.getResultsList()\n\t\t\t\tresults[0].click()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.onInput()\n\t\t},\n\n\t\t/**\n\t\t * Start searching on input\n\t\t */\n\t\tasync onInput() {\n\t\t\t// emit the search query\n\t\t\temit('nextcloud:unified-search.search', { query: this.query })\n\n\t\t\t// Do not search if not long enough\n\t\t\tif (this.query.trim() === '' || this.isShortQuery) {\n\t\t\t\tfor (const type of this.typesIDs) {\n\t\t\t\t\tthis.$delete(this.results, type)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlet types = this.typesIDs\n\t\t\tlet query = this.query\n\n\t\t\t// Filter out types\n\t\t\tif (this.usedFiltersNot.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersNot.indexOf(type) === -1)\n\t\t\t}\n\n\t\t\t// Only use those filters if any and check if they are valid\n\t\t\tif (this.usedFiltersIn.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersIn.indexOf(type) > -1)\n\t\t\t}\n\n\t\t\t// Remove any filters from the query\n\t\t\tquery = query.replace(regexFilterIn, '').replace(regexFilterNot, '')\n\n\t\t\t// Reset search if the query changed\n\t\t\tawait this.resetState()\n\t\t\tthis.triggered = true\n\n\t\t\tif (!types.length) {\n\t\t\t\t// no results since no types were selected\n\t\t\t\tthis.logger.error('No types to search in')\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$set(this.loading, 'all', true)\n\t\t\tthis.logger.debug(`Searching ${query} in`, types)\n\n\t\t\tPromise.all(types.map(async type => {\n\t\t\t\ttry {\n\t\t\t\t\t// Init cancellable request\n\t\t\t\t\tconst { request, cancel } = search({ type, query })\n\t\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t\t// Fetch results\n\t\t\t\t\tconst { data } = await request()\n\n\t\t\t\t\t// Process results\n\t\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\t\tthis.$set(this.results, type, data.ocs.data.entries)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$delete(this.results, type)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Save cursor if any\n\t\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t\t} else if (!data.ocs.data.isPaginated) {\n\t\t\t\t\t// If no cursor and no pagination, we save the default amount\n\t\t\t\t\t// provided by server's initial state `defaultLimit`\n\t\t\t\t\t\tthis.$set(this.limits, type, this.defaultLimit)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if we reached end of pagination\n\t\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t\t}\n\n\t\t\t\t\t// If none already focused, focus the first rendered result\n\t\t\t\t\tif (this.focused === null) {\n\t\t\t\t\t\tthis.focused = 0\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_OK\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.$delete(this.results, type)\n\n\t\t\t\t\t// If this is not a cancelled throw\n\t\t\t\t\tif (error.response && error.response.status) {\n\t\t\t\t\t\tthis.logger.error(`Error searching for ${this.typesMap[type]}`, error)\n\t\t\t\t\t\tshowError(this.t('core', 'An error occurred while searching for {type}', { type: this.typesMap[type] }))\n\t\t\t\t\t\treturn REQUEST_FAILED\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_CANCELED\n\t\t\t\t}\n\t\t\t})).then(results => {\n\t\t\t\t// Do not declare loading finished if the request have been cancelled\n\t\t\t\t// This means another search was triggered and we're therefore still loading\n\t\t\t\tif (results.some(result => result === REQUEST_CANCELED)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// We finished all searches\n\t\t\t\tthis.loading = {}\n\t\t\t})\n\t\t},\n\t\tonInputDebounced: enableLiveSearch\n\t\t\t? debounce(function(e) {\n\t\t\t\tthis.onInput(e)\n\t\t\t}, 500)\n\t\t\t: function() {\n\t\t\t\tthis.triggered = false\n\t\t\t},\n\n\t\t/**\n\t\t * Load more results for the provided type\n\t\t *\n\t\t * @param {string} type type\n\t\t */\n\t\tasync loadMore(type) {\n\t\t\t// If already loading, ignore\n\t\t\tif (this.loading[type]) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.cursors[type]) {\n\t\t\t\t// Init cancellable request\n\t\t\t\tconst { request, cancel } = search({ type, query: this.query, cursor: this.cursors[type] })\n\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t// Fetch results\n\t\t\t\tconst { data } = await request()\n\n\t\t\t\t// Save cursor if any\n\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t}\n\n\t\t\t\t// Process results\n\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\tthis.results[type].push(...data.ocs.data.entries)\n\t\t\t\t}\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t} else\n\n\t\t\t// If no cursor, we might have all the results already,\n\t\t\t// let's fake pagination and show the next xxx entries\n\t\t\tif (this.limits[type] && this.limits[type] >= 0) {\n\t\t\t\tthis.limits[type] += this.defaultLimit\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (this.limits[type] >= this.results[type].length) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Focus result after render\n\t\t\tif (this.focused !== null) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Return a subset of the array if the search provider\n\t\t * doesn't supports pagination\n\t\t *\n\t\t * @param {Array} list the results\n\t\t * @param {string} type the type\n\t\t * @return {Array}\n\t\t */\n\t\tlimitIfAny(list, type) {\n\t\t\tif (type in this.limits) {\n\t\t\t\treturn list.slice(0, this.limits[type])\n\t\t\t}\n\t\t\treturn list\n\t\t},\n\n\t\tgetResultsList() {\n\t\t\treturn this.$el.querySelectorAll('.unified-search__results .unified-search__result')\n\t\t},\n\n\t\t/**\n\t\t * Focus the first result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusFirst(event) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results.length > 0) {\n\t\t\t\tif (event) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\tthis.focused = 0\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the next result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusNext(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the last, focus the next one\n\t\t\tif (results && results.length > 0 && this.focused + 1 < results.length) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused++\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the previous result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusPrev(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the first, focus the previous one\n\t\t\tif (results && results.length > 0 && this.focused > 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused--\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Focus the specified result index if it exists\n\t\t *\n\t\t * @param {number} index the result index\n\t\t */\n\t\tfocusIndex(index) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results[index]) {\n\t\t\t\tresults[index].focus()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set the current focused element based on the target\n\t\t *\n\t\t * @param {Event} event the focus event\n\t\t */\n\t\tsetFocusedIndex(event) {\n\t\t\tconst entry = event.target\n\t\t\tconst results = this.getResultsList()\n\t\t\tconst index = [...results].findIndex(search => search === entry)\n\t\t\tif (index > -1) {\n\t\t\t\t// let's not use focusIndex as the entry is already focused\n\t\t\t\tthis.focused = index\n\t\t\t}\n\t\t},\n\n\t\tonClickFilter(filter) {\n\t\t\tthis.query = `${this.query} ${filter}`\n\t\t\t\t.replace(/ {2}/g, ' ')\n\t\t\t\t.trim()\n\t\t\tthis.onInput()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$margin: 10px;\n$input-height: 34px;\n$input-padding: 6px;\n\n.unified-search {\n\t&__trigger {\n\t\tfilter: var(--background-image-invert-if-bright);\n\t}\n\n\t&__input-wrapper {\n\t\tposition: sticky;\n\t\t// above search results\n\t\tz-index: 2;\n\t\ttop: 0;\n\t\tdisplay: inline-flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tlabel[for=\"unified-search__input\"] {\n\t\t\talign-self: flex-start;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 19px;\n\t\t\tmargin-left: 13px;\n\t\t}\n\t}\n\n\t&__form-input {\n\t\tmargin: 0 !important;\n\t}\n\n\t&__input-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\talign-items: center;\n\t}\n\n\t&__filters {\n\t\tmargin: $margin 0 $margin math.div($margin, 2);\n\t\tul {\n\t\t\tdisplay: inline-flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\t}\n\n\t&__form {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmargin: $margin 0;\n\n\t\t// Loading spinner\n\t\t&::after {\n\t\t\tright: $input-padding;\n\t\t\tleft: auto;\n\t\t}\n\n\t\t&-input,\n\t\t&-reset {\n\t\t\tmargin: math.div($input-padding, 2);\n\t\t}\n\n\t\t&-input {\n\t\t\twidth: 100%;\n\t\t\theight: $input-height;\n\t\t\tpadding: $input-padding;\n\n\t\t\t&,\n\t\t\t&[placeholder],\n\t\t\t&::placeholder {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t// Hide webkit clear search\n\t\t\t&::-webkit-search-decoration,\n\t\t\t&::-webkit-search-cancel-button,\n\t\t\t&::-webkit-search-results-button,\n\t\t\t&::-webkit-search-results-decoration {\n\t\t\t\t-webkit-appearance: none;\n\t\t\t}\n\n\t\t\t// Ellipsis earlier if reset button is here\n\t\t\t.icon-loading-small &,\n\t\t\t&--with-reset {\n\t\t\t\tpadding-right: $input-height;\n\t\t\t}\n\t\t}\n\n\t\t&-reset, &-submit {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 4px;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\n\t\t\tmin-height: 30px;\n\t\t\tpadding: 0;\n\t\t\topacity: .5;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tmargin-right: 0;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t&-submit {\n\t\t\tright: 28px;\n\t\t}\n\t}\n\n\t&__results {\n\t\t&-header {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-bottom: $margin - 4px;\n\t\t\tmargin-left: 13px;\n\t\t\tcolor: var(--color-primary-element);\n\t\t\tfont-size: 19px;\n\t\t\tfont-weight: bold;\n\t\t}\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t}\n\n\t.unified-search__result-more::v-deep {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.empty-content {\n\t\tmargin: 10vh 0;\n\n\t\t::v-deep .empty-content__title {\n\t\t\tfont-weight: normal;\n font-size: var(--default-font-size);\n\t\t\tpadding: 0 15px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.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!./UnifiedSearch.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=style&index=0&id=3d447e9e&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=style&index=0&id=3d447e9e&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearch.vue?vue&type=template&id=3d447e9e&scoped=true&\"\nimport script from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nexport * from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UnifiedSearch.vue?vue&type=style&index=0&id=3d447e9e&prod&lang=scss&scoped=true&\"\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 \"3d447e9e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('HeaderMenu',{staticClass:\"unified-search\",attrs:{\"id\":\"unified-search\",\"exclude-click-outside-classes\":\"popover\",\"open\":_vm.open,\"aria-label\":_vm.ariaLabel},on:{\"update:open\":function($event){_vm.open=$event},\"open\":_vm.onOpen,\"close\":_vm.onClose},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Magnify',{staticClass:\"unified-search__trigger\",attrs:{\"size\":22/* fit better next to other 20px icons */,\"fill-color\":\"var(--color-primary-text)\"}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-wrapper\"},[_c('label',{attrs:{\"for\":\"unified-search__input\"}},[_vm._v(_vm._s(_vm.ariaLabel))]),_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-row\"},[_c('form',{staticClass:\"unified-search__form\",class:{'icon-loading-small': _vm.isLoading},attrs:{\"role\":\"search\"},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)},\"reset\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onReset.apply(null, arguments)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],ref:\"input\",staticClass:\"unified-search__form-input\",class:{'unified-search__form-input--with-reset': !!_vm.query},attrs:{\"id\":\"unified-search__input\",\"type\":\"search\",\"placeholder\":_vm.t('core', 'Search {types} …', { types: _vm.typesNames.join(', ') }),\"aria-describedby\":\"unified-search-desc\"},domProps:{\"value\":(_vm.query)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.query=$event.target.value},_vm.onInputDebounced],\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)}}}),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":\"unified-search-desc\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search starts once you start typing and results may be reached with the arrow keys'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!!_vm.query && !_vm.isLoading)?_c('input',{staticClass:\"unified-search__form-reset icon-close\",attrs:{\"type\":\"reset\",\"aria-label\":_vm.t('core','Reset search'),\"value\":\"\"}}):_vm._e(),_vm._v(\" \"),(!!_vm.query && !_vm.isLoading && !_vm.enableLiveSearch)?_c('input',{staticClass:\"unified-search__form-submit icon-confirm\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('core','Start search'),\"value\":\"\"}}):_vm._e()]),_vm._v(\" \"),(_vm.availableFilters.length > 1)?_c('NcActions',{staticClass:\"unified-search__filters\",attrs:{\"placement\":\"bottom\",\"container\":\".unified-search__input-wrapper\"}},_vm._l((_vm.availableFilters),function(type){return _c('NcActionButton',{key:type,attrs:{\"icon\":\"icon-filter\",\"title\":_vm.t('core', 'Search for {name} only', { name: _vm.typesMap[type] })},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClickFilter(`in:${type}`)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(`in:${type}`)+\"\\n\\t\\t\\t\\t\")])}),1):_vm._e()],1)]),_vm._v(\" \"),(!_vm.hasResults)?[(_vm.isLoading)?_c('SearchResultPlaceholders'):(_vm.isValidQuery)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true}],null,false,931131664)},[(_vm.triggered)?_c('NcHighlight',{attrs:{\"text\":_vm.t('core', 'No results for {query}', { query: _vm.query }),\"search\":_vm.query}}):_c('div',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Press enter to start searching'))+\"\\n\\t\\t\\t\")])],1):(!_vm.isLoading || _vm.isShortQuery)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true},(_vm.isShortQuery)?{key:\"desc\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('core',\n\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t_vm.minSearchLength,\n\t\t\t\t\t{minSearchLength: _vm.minSearchLength}))+\"\\n\\t\\t\\t\")]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Start typing to search'))+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._l((_vm.orderedResults),function({list, type},typesIndex){return _c('ul',{key:type,staticClass:\"unified-search__results\",class:`unified-search__results-${type}`,attrs:{\"aria-label\":_vm.typesMap[type]}},[_c('h2',{staticClass:\"unified-search__results-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.typesMap[type])+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.limitIfAny(list, type)),function(result,index){return _c('li',{key:result.resourceUrl},[_c('SearchResult',_vm._b({attrs:{\"query\":_vm.query,\"focused\":_vm.focused === 0 && typesIndex === 0 && index === 0},on:{\"focus\":_vm.setFocusedIndex}},'SearchResult',result,false))],1)}),_vm._v(\" \"),_c('li',[(!_vm.reached[type])?_c('SearchResult',{staticClass:\"unified-search__result-more\",attrs:{\"title\":_vm.loading[type]\n\t\t\t\t\t\t? _vm.t('core', 'Loading more results …')\n\t\t\t\t\t\t: _vm.t('core', 'Load more results'),\"icon-class\":_vm.loading[type] ? 'icon-loading-small' : ''},on:{\"click\":function($event){$event.stopPropagation();return _vm.loadMore(type)},\"focus\":_vm.setFocusedIndex}}):_vm._e()],1)],2)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\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\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport UnifiedSearch from './views/UnifiedSearch.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst logger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default new Vue({\n\tel: '#unified-search',\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'UnifiedSearchRoot',\n\trender: h => h(UnifiedSearch),\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".header-menu__trigger[data-v-79c00176]{display:flex;align-items:center;justify-content:center;width:50px;height:44px;margin:2px 0;padding:0;cursor:pointer;opacity:.85}.header-menu--opened .header-menu__trigger[data-v-79c00176],.header-menu__trigger[data-v-79c00176]:hover,.header-menu__trigger[data-v-79c00176]:focus,.header-menu__trigger[data-v-79c00176]:active{opacity:1}.header-menu__trigger[data-v-79c00176]:focus-visible{outline:none}.header-menu__wrapper[data-v-79c00176]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0 8px;border-radius:0 0 var(--border-radius) var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow));padding:8px;border-radius:var(--border-radius-large)}.header-menu__carret[data-v-79c00176]{position:absolute;z-index:2001;left:calc(50% - 10px);bottom:0;width:0;height:0;content:\\\" \\\";pointer-events:none;border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-79c00176]{overflow:auto;width:350px;max-width:calc(100vw - 16px);min-height:66px;max-height:calc(100vh - 100px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/HeaderMenu.vue\"],\"names\":[],\"mappings\":\"AAIC,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,YAAA,CACA,SAAA,CACA,cAAA,CACA,WAAA,CAGD,oMAIC,SAAA,CAGD,qDACC,YAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,YAAA,CACA,2DAAA,CACA,6CAAA,CACA,qDAAA,CACA,WAAA,CACA,wCAAA,CAGD,sCACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,+BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,4BAAA,CACA,eAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n$externalMargin: 8px;\\n\\n.header-menu {\\n\\t&__trigger {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 50px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 2px 0;\\n\\t\\tpadding: 0;\\n\\t\\tcursor: pointer;\\n\\t\\topacity: .85;\\n\\t}\\n\\n\\t&--opened &__trigger,\\n\\t&__trigger:hover,\\n\\t&__trigger:focus,\\n\\t&__trigger:active {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t&__trigger:focus-visible {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tposition: fixed;\\n\\t\\tz-index: 2000;\\n\\t\\ttop: 50px;\\n\\t\\tright: 0;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tmargin: 0 $externalMargin;\\n\\t\\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\\n\\t\\tpadding: 8px;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&__carret {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 2001; // Because __wrapper is 2000.\\n\\t\\tleft: calc(50% - 10px);\\n\\t\\tbottom: 0;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tcontent: ' ';\\n\\t\\tpointer-events: none;\\n\\t\\tborder: 10px solid transparent;\\n\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t}\\n\\n\\t&__content {\\n\\t\\toverflow: auto;\\n\\t\\twidth: 350px;\\n\\t\\tmax-width: calc(100vw - 2 * $externalMargin);\\n\\t\\tmin-height: calc(44px * 1.5);\\n\\t\\tmax-height: calc(100vh - 50px * 2);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".unified-search__result[data-v-288e1e92]{display:flex;align-items:center;height:44px;padding:10px;border-bottom:1px solid var(--color-border);border-radius:var(--border-radius-large) !important}.unified-search__result[data-v-288e1e92]:last-child{border-bottom:none}.unified-search__result--focused[data-v-288e1e92],.unified-search__result[data-v-288e1e92]:active,.unified-search__result[data-v-288e1e92]:hover,.unified-search__result[data-v-288e1e92]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-288e1e92]{cursor:pointer}.unified-search__result-icon[data-v-288e1e92]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.unified-search__result-icon--rounded[data-v-288e1e92]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-288e1e92]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]:not(.unified-search__result-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.unified-search__result-icon img[data-v-288e1e92]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-288e1e92],.unified-search__result-actions[data-v-288e1e92]{flex:0 0 44px}.unified-search__result-content[data-v-288e1e92]{display:flex;align-items:center;flex:1 1 100%;flex-wrap:wrap;min-width:0;padding-left:10px}.unified-search__result-line-one[data-v-288e1e92],.unified-search__result-line-two[data-v-288e1e92]{overflow:hidden;flex:1 1 100%;margin:1px 0;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:inherit}.unified-search__result-line-two[data-v-288e1e92]{opacity:.7;font-size:var(--default-font-size)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResult.vue\"],\"names\":[],\"mappings\":\"AAMA,yCACC,YAAA,CACA,kBAAA,CACA,WANgB,CAOhB,YANQ,CAOR,2CAAA,CACA,mDAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA7Be,CA8Bf,WA9Be,CA+Bf,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CACA,uDACC,kBAAA,CAED,0DACC,oBAAA,CAED,8DACC,qBAAA,CAED,yGAEC,cAAA,CACA,eAAA,CACA,oCAAA,CAGD,kDAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA,CAIF,+FAEC,aAAA,CAGD,iDACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,WAAA,CACA,iBAxEO,CA2ER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n\\n$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: $clickable-area;\\n\\tpadding: $margin;\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\tborder-radius: var(--border-radius-large) !important;\\n\\n\\t// Load more entry,\\n\\t&:last-child {\\n\\t\\tborder-bottom: none;\\n\\t}\\n\\n\\t&--focused,\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\n\\t* {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: 32px;\\n\\t\\t&--rounded {\\n\\t\\t\\tborder-radius: math.div($clickable-area, 2);\\n\\t\\t}\\n\\t\\t&--no-preview {\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t}\\n\\t\\t&--with-thumbnail {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t&--with-thumbnail:not(&--rounded) {\\n\\t\\t\\t// compensate for border\\n\\t\\t\\tmax-width: $clickable-area - 2px;\\n\\t\\t\\tmax-height: $clickable-area - 2px;\\n\\t\\t\\tborder: 1px solid var(--color-border);\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\t// Make sure to keep ratio\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\n\\t\\t\\tobject-fit: cover;\\n\\t\\t\\tobject-position: center;\\n\\t\\t}\\n\\t}\\n\\n\\t&-icon,\\n\\t&-actions {\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t}\\n\\n\\t&-content {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tflex-wrap: wrap;\\n\\t\\t// Set to minimum and gro from it\\n\\t\\tmin-width: 0;\\n\\t\\tpadding-left: $margin;\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\toverflow: hidden;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tmargin: 1px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t// Use the same color as the `a`\\n\\t\\tcolor: inherit;\\n\\t\\tfont-size: inherit;\\n\\t}\\n\\t&-line-two {\\n\\t\\topacity: .7;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".unified-search__result-placeholder-gradient[data-v-9ed03c40]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-9ed03c40]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-9ed03c40]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-9ed03c40],.unified-search__result-placeholder-line-two[data-v-9ed03c40]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-9ed03c40]{y:5px}.unified-search__result-placeholder-line-two[data-v-9ed03c40]{y:25px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue\"],\"names\":[],\"mappings\":\"AAIA,8DACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,qDACC,2BAAA,CACA,WAZgB,CAahB,WAZQ,CAcR,0DACC,UAhBe,CAiBf,WAjBe,CAkBf,uBAAA,CACA,uBAAA,CAGD,4HAEC,uBAAA,CACA,UAAA,CACA,MAAA,CAGD,8DACC,KAAA,CAGD,8DACC,MAAA\",\"sourcesContent\":[\"\\n$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result-placeholder-gradient {\\n\\tposition: fixed;\\n\\theight: 0;\\n\\twidth: 0;\\n\\tz-index: -1;\\n}\\n\\n.unified-search__result-placeholder {\\n\\twidth: calc(100% - 2 * #{$margin});\\n\\theight: $clickable-area;\\n\\tmargin: $margin;\\n\\n\\t&-icon {\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\trx: var(--border-radius);\\n\\t\\try: var(--border-radius);\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\twidth: calc(100% - #{$margin + $clickable-area});\\n\\t\\theight: 1em;\\n\\t\\tx: $margin + $clickable-area;\\n\\t}\\n\\n\\t&-line-one {\\n\\t\\ty: 5px;\\n\\t}\\n\\n\\t&-line-two {\\n\\t\\ty: 25px;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".unified-search__trigger[data-v-3d447e9e]{filter:var(--background-image-invert-if-bright)}.unified-search__input-wrapper[data-v-3d447e9e]{position:sticky;z-index:2;top:0;display:inline-flex;flex-direction:column;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__input-wrapper label[for=unified-search__input][data-v-3d447e9e]{align-self:flex-start;font-weight:bold;font-size:19px;margin-left:13px}.unified-search__form-input[data-v-3d447e9e]{margin:0 !important}.unified-search__input-row[data-v-3d447e9e]{display:flex;width:100%;align-items:center}.unified-search__filters[data-v-3d447e9e]{margin:10px 0 10px 5px}.unified-search__filters ul[data-v-3d447e9e]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-3d447e9e]{position:relative;width:100%;margin:10px 0}.unified-search__form[data-v-3d447e9e]::after{right:6px;left:auto}.unified-search__form-input[data-v-3d447e9e],.unified-search__form-reset[data-v-3d447e9e]{margin:3px}.unified-search__form-input[data-v-3d447e9e]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-3d447e9e],.unified-search__form-input[placeholder][data-v-3d447e9e],.unified-search__form-input[data-v-3d447e9e]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-3d447e9e]::-webkit-search-decoration,.unified-search__form-input[data-v-3d447e9e]::-webkit-search-cancel-button,.unified-search__form-input[data-v-3d447e9e]::-webkit-search-results-button,.unified-search__form-input[data-v-3d447e9e]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-3d447e9e],.unified-search__form-input--with-reset[data-v-3d447e9e]{padding-right:34px}.unified-search__form-reset[data-v-3d447e9e],.unified-search__form-submit[data-v-3d447e9e]{position:absolute;top:0;right:4px;width:28px;height:28px;min-height:30px;padding:0;opacity:.5;border:none;background-color:rgba(0,0,0,0);margin-right:0}.unified-search__form-reset[data-v-3d447e9e]:hover,.unified-search__form-reset[data-v-3d447e9e]:focus,.unified-search__form-reset[data-v-3d447e9e]:active,.unified-search__form-submit[data-v-3d447e9e]:hover,.unified-search__form-submit[data-v-3d447e9e]:focus,.unified-search__form-submit[data-v-3d447e9e]:active{opacity:1}.unified-search__form-submit[data-v-3d447e9e]{right:28px}.unified-search__results[data-v-3d447e9e]{display:flex;flex-direction:column;gap:4px}.unified-search__results-header[data-v-3d447e9e]{display:block;margin:10px;margin-bottom:6px;margin-left:13px;color:var(--color-primary-element);font-size:19px;font-weight:bold}.unified-search .unified-search__result-more[data-v-3d447e9e]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-3d447e9e]{margin:10vh 0}.unified-search .empty-content[data-v-3d447e9e] .empty-content__title{font-weight:normal;font-size:var(--default-font-size);padding:0 15px;text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnifiedSearch.vue\"],\"names\":[],\"mappings\":\"AAQC,0CACC,+CAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,qBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAEA,iFACC,qBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CAIF,6CACC,mBAAA,CAGD,4CACC,YAAA,CACA,UAAA,CACA,kBAAA,CAGD,0CACC,sBAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,aAAA,CAGA,8CACC,SAnDa,CAoDb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA/DY,CAgEZ,WA/Da,CAiEb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBArFW,CAyFb,2FACC,iBAAA,CACA,KAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,8BAAA,CACA,cAAA,CAEA,uTAGC,SAAA,CAIF,8CACC,UAAA,CAIF,0CAUC,YAAA,CACA,qBAAA,CACA,OAAA,CAXA,iDACC,aAAA,CACA,WAtHM,CAuHN,iBAAA,CACA,gBAAA,CACA,kCAAA,CACA,cAAA,CACA,gBAAA,CAOF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,sEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n\\n$margin: 10px;\\n$input-height: 34px;\\n$input-padding: 6px;\\n\\n.unified-search {\\n\\t&__trigger {\\n\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\t}\\n\\n\\t&__input-wrapper {\\n\\t\\tposition: sticky;\\n\\t\\t// above search results\\n\\t\\tz-index: 2;\\n\\t\\ttop: 0;\\n\\t\\tdisplay: inline-flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tlabel[for=\\\"unified-search__input\\\"] {\\n\\t\\t\\talign-self: flex-start;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 19px;\\n\\t\\t\\tmargin-left: 13px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__form-input {\\n\\t\\tmargin: 0 !important;\\n\\t}\\n\\n\\t&__input-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tmargin: $margin 0 $margin math.div($margin, 2);\\n\\t\\tul {\\n\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t}\\n\\t}\\n\\n\\t&__form {\\n\\t\\tposition: relative;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: $margin 0;\\n\\n\\t\\t// Loading spinner\\n\\t\\t&::after {\\n\\t\\t\\tright: $input-padding;\\n\\t\\t\\tleft: auto;\\n\\t\\t}\\n\\n\\t\\t&-input,\\n\\t\\t&-reset {\\n\\t\\t\\tmargin: math.div($input-padding, 2);\\n\\t\\t}\\n\\n\\t\\t&-input {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: $input-height;\\n\\t\\t\\tpadding: $input-padding;\\n\\n\\t\\t\\t&,\\n\\t\\t\\t&[placeholder],\\n\\t\\t\\t&::placeholder {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Hide webkit clear search\\n\\t\\t\\t&::-webkit-search-decoration,\\n\\t\\t\\t&::-webkit-search-cancel-button,\\n\\t\\t\\t&::-webkit-search-results-button,\\n\\t\\t\\t&::-webkit-search-results-decoration {\\n\\t\\t\\t\\t-webkit-appearance: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Ellipsis earlier if reset button is here\\n\\t\\t\\t.icon-loading-small &,\\n\\t\\t\\t&--with-reset {\\n\\t\\t\\t\\tpadding-right: $input-height;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-reset, &-submit {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 4px;\\n\\t\\t\\twidth: $input-height - $input-padding;\\n\\t\\t\\theight: $input-height - $input-padding;\\n\\t\\t\\tmin-height: 30px;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\topacity: .5;\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\tmargin-right: 0;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-submit {\\n\\t\\t\\tright: 28px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__results {\\n\\t\\t&-header {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmargin: $margin;\\n\\t\\t\\tmargin-bottom: $margin - 4px;\\n\\t\\t\\tmargin-left: 13px;\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\tfont-size: 19px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 4px;\\n\\t}\\n\\n\\t.unified-search__result-more::v-deep {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t.empty-content {\\n\\t\\tmargin: 10vh 0;\\n\\n\\t\\t::v-deep .empty-content__title {\\n\\t\\t\\tfont-weight: normal;\\n font-size: var(--default-font-size);\\n\\t\\t\\tpadding: 0 15px;\\n\\t\\t\\ttext-align: center;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9671;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t9671: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(11025); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","defaultLimit","loadState","minSearchLength","enableLiveSearch","regexFilterIn","regexFilterNot","getTypes","axios","generateOcsUrl","params","from","window","location","pathname","replace","search","data","ocs","Array","isArray","length","console","error","type","query","cursor","cancelToken","request","token","term","cancel","name","directives","ClickOutside","mixins","excludeClickOutsideClasses","props","id","required","ariaLabel","default","open","opened","clickOutsideConfig","handler","middleware","shortcutsDisabled","watch","mounted","document","beforeDestroy","methods","toggleMenu","closeMenu","openMenu","onKeyDown","event","handleFocusOut","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_c","_self","rawName","value","expression","staticClass","class","attrs","toString","on","$event","preventDefault","apply","arguments","_t","_v","components","NcHighlight","thumbnailUrl","title","subline","resourceUrl","icon","rounded","focused","hasValidThumbnail","loaded","computed","isIconUrl","reEmitEvent","onError","onLoad","style","backgroundImage","_e","_s","light","dark","randWidth","_l","placeholder","key","width","NcActionButton","NcActions","NcEmptyContent","HeaderMenu","Magnify","SearchResult","SearchResultPlaceholders","types","cursors","limits","loading","reached","requests","results","triggered","typesIDs","typesNames","typesMap","prev","hasResults","orderedResults","filter","map","list","availableFilters","usedFiltersIn","filters","usedFiltersNot","isShortQuery","isValidQuery","isDoneSearching","isLoading","created","subscribe","unsubscribe","onOpen","onClose","emit","resetForm","onReset","resetState","cancelPendingRequests","Promise","focusInput","onInputEnter","onInput","showError","onInputDebounced","debounce","loadMore","limitIfAny","getResultsList","focusFirst","focusNext","focusPrev","focusIndex","setFocusedIndex","onClickFilter","trim","scopedSlots","_u","fn","proxy","stopPropagation","ref","t","join","domProps","target","composing","indexOf","_k","keyCode","typesIndex","result","index","_b","n","__webpack_nonce__","btoa","getRequestToken","logger","getLoggerBuilder","setApp","detectUser","build","Vue","el","render","h","UnifiedSearch","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","__webpack_modules__","call","m","amdD","Error","amdO","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"core-unified-search.js?v=008249ebfd8c9c653892","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/core/src/services/UnifiedSearchService.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/HeaderMenu.vue","webpack://nextcloud/./core/src/components/HeaderMenu.vue?3956","webpack://nextcloud/./core/src/components/HeaderMenu.vue?30e1","webpack://nextcloud/./core/src/components/HeaderMenu.vue?d296","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?e4b5","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?f7a7","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?32d3","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=script&lang=js&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?f8e5","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?7f72","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?cc53","webpack:///nextcloud/core/src/views/UnifiedSearch.vue","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=script&lang=js&","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1b75","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1990","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?adc0","webpack:///nextcloud/core/src/unified-search.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=style&index=0&id=79c00176&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=style&index=0&id=288e1e92&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&prod&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=style&index=0&id=3d447e9e&prod&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright 2020, John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author Daniel Calviño Sánchez <danxuliu@gmail.com>\n * @author Joas Schilling <coding@schilljs.com>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\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\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\n\nexport const defaultLimit = loadState('unified-search', 'limit-default')\nexport const minSearchLength = loadState('unified-search', 'min-search-length', 1)\nexport const enableLiveSearch = loadState('unified-search', 'live-search', true)\n\nexport const regexFilterIn = /(^|\\s)in:([a-z_-]+)/ig\nexport const regexFilterNot = /(^|\\s)-in:([a-z_-]+)/ig\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Get the list of available search providers\n *\n * @return {Promise<Array>}\n */\nexport async function getTypes() {\n\ttry {\n\t\tconst { data } = await axios.get(generateOcsUrl('search/providers'), {\n\t\t\tparams: {\n\t\t\t\t// Sending which location we're currently at\n\t\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t\t},\n\t\t})\n\t\tif ('ocs' in data && 'data' in data.ocs && Array.isArray(data.ocs.data) && data.ocs.data.length > 0) {\n\t\t\t// Providers are sorted by the api based on their order key\n\t\t\treturn data.ocs.data\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(error)\n\t}\n\treturn []\n}\n\n/**\n * Get the list of available search providers\n *\n * @param {object} options destructuring object\n * @param {string} options.type the type to search\n * @param {string} options.query the search\n * @param {number|string|undefined} options.cursor the offset for paginated searches\n * @return {object} {request: Promise, cancel: Promise}\n */\nexport function search({ type, query, cursor }) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\tconst request = async () => axios.get(generateOcsUrl('search/providers/{type}/search', { type }), {\n\t\tcancelToken: cancelToken.token,\n\t\tparams: {\n\t\t\tterm: query,\n\t\t\tcursor,\n\t\t\t// Sending which location we're currently at\n\t\t\tfrom: window.location.pathname.replace('/index.php', '') + window.location.search,\n\t\t},\n\t})\n\n\treturn {\n\t\trequest,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderMenu.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!./HeaderMenu.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<div :id=\"id\"\n\t\tv-click-outside=\"clickOutsideConfig\"\n\t\t:class=\"{ 'header-menu--opened': opened }\"\n\t\tclass=\"header-menu\">\n\t\t<a class=\"header-menu__trigger\"\n\t\t\thref=\"#\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\t:aria-controls=\"`header-menu-${id}`\"\n\t\t\t:aria-expanded=\"opened.toString()\"\n\t\t\t@click.prevent=\"toggleMenu\">\n\t\t\t<slot name=\"trigger\" />\n\t\t</a>\n\t\t<div v-show=\"opened\" class=\"header-menu__carret\" />\n\t\t<div v-show=\"opened\"\n\t\t\t:id=\"`header-menu-${id}`\"\n\t\t\tclass=\"header-menu__wrapper\"\n\t\t\trole=\"menu\"\n\t\t\t@focusout=\"handleFocusOut\">\n\t\t\t<div class=\"header-menu__content\">\n\t\t\t\t<slot />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { directive as ClickOutside } from 'v-click-outside'\nimport excludeClickOutsideClasses from '@nextcloud/vue/dist/Mixins/excludeClickOutsideClasses'\n\nexport default {\n\tname: 'HeaderMenu',\n\n\tdirectives: {\n\t\tClickOutside,\n\t},\n\n\tmixins: [\n\t\texcludeClickOutsideClasses,\n\t],\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\topened: this.open,\n\t\t\tclickOutsideConfig: {\n\t\t\t\thandler: this.closeMenu,\n\t\t\t\tmiddleware: this.clickOutsideMiddleware,\n\t\t\t},\n\t\t\tshortcutsDisabled: OCP.Accessibility.disableKeyboardShortcuts(),\n\t\t}\n\t},\n\n\twatch: {\n\t\topen(newVal) {\n\t\t\tthis.opened = newVal\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tif (this.opened) {\n\t\t\t\t\tthis.openMenu()\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeMenu()\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\n\tmounted() {\n\t\tdocument.addEventListener('keydown', this.onKeyDown)\n\t},\n\tbeforeDestroy() {\n\t\tdocument.removeEventListener('keydown', this.onKeyDown)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Toggle the current menu open state\n\t\t */\n\t\ttoggleMenu() {\n\t\t\t// Toggling current state\n\t\t\tif (!this.opened) {\n\t\t\t\tthis.openMenu()\n\t\t\t} else {\n\t\t\t\tthis.closeMenu()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Close the current menu\n\t\t */\n\t\tcloseMenu() {\n\t\t\tif (!this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = false\n\t\t\tthis.$emit('close')\n\t\t\tthis.$emit('update:open', false)\n\t\t},\n\n\t\t/**\n\t\t * Open the current menu\n\t\t */\n\t\topenMenu() {\n\t\t\tif (this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = true\n\t\t\tthis.$emit('open')\n\t\t\tthis.$emit('update:open', true)\n\t\t},\n\n\t\tonKeyDown(event) {\n\t\t\tif (this.shortcutsDisabled) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If opened and escape pressed, close\n\t\t\tif (event.key === 'Escape' && this.opened) {\n\t\t\t\tevent.preventDefault()\n\n\t\t\t\t/** user cancelled the menu by pressing escape */\n\t\t\t\tthis.$emit('cancel')\n\n\t\t\t\t/** we do NOT fire a close event to differentiate cancel and close */\n\t\t\t\tthis.opened = false\n\t\t\t\tthis.$emit('update:open', false)\n\t\t\t}\n\t\t},\n\n\t\thandleFocusOut(event) {\n\t\t\tif (!event.currentTarget.contains(event.relatedTarget)) {\n\t\t\t\tthis.closeMenu()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$externalMargin: 8px;\n\n.header-menu {\n\t&__trigger {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 50px;\n\t\theight: 44px;\n\t\tmargin: 2px 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .85;\n\t}\n\n\t&--opened &__trigger,\n\t&__trigger:hover,\n\t&__trigger:focus,\n\t&__trigger:active {\n\t\topacity: 1;\n\t}\n\n\t&__trigger:focus-visible {\n\t\toutline: none;\n\t}\n\n\t&__wrapper {\n\t\tposition: fixed;\n\t\tz-index: 2000;\n\t\ttop: 50px;\n\t\tright: 0;\n\t\tbox-sizing: border-box;\n\t\tmargin: 0 $externalMargin;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t\tpadding: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tz-index: 2001; // Because __wrapper is 2000.\n\t\tleft: calc(50% - 10px);\n\t\tbottom: 0;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tcontent: ' ';\n\t\tpointer-events: none;\n\t\tborder: 10px solid transparent;\n\t\tborder-bottom-color: var(--color-main-background);\n\t}\n\n\t&__content {\n\t\toverflow: auto;\n\t\twidth: 350px;\n\t\tmax-width: calc(100vw - 2 * $externalMargin);\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\n}\n\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderMenu.vue?vue&type=style&index=0&id=79c00176&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HeaderMenu.vue?vue&type=style&index=0&id=79c00176&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./HeaderMenu.vue?vue&type=template&id=79c00176&scoped=true&\"\nimport script from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./HeaderMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./HeaderMenu.vue?vue&type=style&index=0&id=79c00176&prod&lang=scss&scoped=true&\"\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 \"79c00176\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.clickOutsideConfig),expression:\"clickOutsideConfig\"}],staticClass:\"header-menu\",class:{ 'header-menu--opened': _vm.opened },attrs:{\"id\":_vm.id}},[_c('a',{staticClass:\"header-menu__trigger\",attrs:{\"href\":\"#\",\"aria-label\":_vm.ariaLabel,\"aria-controls\":`header-menu-${_vm.id}`,\"aria-expanded\":_vm.opened.toString()},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMenu.apply(null, arguments)}}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],staticClass:\"header-menu__carret\"}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.opened),expression:\"opened\"}],staticClass:\"header-menu__wrapper\",attrs:{\"id\":`header-menu-${_vm.id}`,\"role\":\"menu\"},on:{\"focusout\":_vm.handleFocusOut}},[_c('div',{staticClass:\"header-menu__content\"},[_vm._t(\"default\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('a',{staticClass:\"unified-search__result\",class:{\n\t\t'unified-search__result--focused': _vm.focused,\n\t},attrs:{\"href\":_vm.resourceUrl || '#'},on:{\"click\":_vm.reEmitEvent,\"focus\":_vm.reEmitEvent}},[_c('div',{staticClass:\"unified-search__result-icon\",class:{\n\t\t\t'unified-search__result-icon--rounded': _vm.rounded,\n\t\t\t'unified-search__result-icon--no-preview': !_vm.hasValidThumbnail && !_vm.loaded,\n\t\t\t'unified-search__result-icon--with-thumbnail': _vm.hasValidThumbnail && _vm.loaded,\n\t\t\t[_vm.icon]: !_vm.loaded && !_vm.isIconUrl,\n\t\t},style:({\n\t\t\tbackgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : '',\n\t\t})},[(_vm.hasValidThumbnail)?_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loaded),expression:\"loaded\"}],attrs:{\"src\":_vm.thumbnailUrl,\"alt\":\"\"},on:{\"error\":_vm.onError,\"load\":_vm.onLoad}}):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"unified-search__result-content\"},[_c('span',{staticClass:\"unified-search__result-line-one\",attrs:{\"title\":_vm.title}},[_c('NcHighlight',{attrs:{\"text\":_vm.title,\"search\":_vm.query}})],1),_vm._v(\" \"),(_vm.subline)?_c('span',{staticClass:\"unified-search__result-line-two\",attrs:{\"title\":_vm.subline}},[_vm._v(_vm._s(_vm.subline))]):_vm._e()])])\n}\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!./SearchResult.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!./SearchResult.vue?vue&type=script&lang=js&\""," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<a :href=\"resourceUrl || '#'\"\n\t\tclass=\"unified-search__result\"\n\t\t:class=\"{\n\t\t\t'unified-search__result--focused': focused,\n\t\t}\"\n\t\t@click=\"reEmitEvent\"\n\t\t@focus=\"reEmitEvent\">\n\n\t\t<!-- Icon describing the result -->\n\t\t<div class=\"unified-search__result-icon\"\n\t\t\t:class=\"{\n\t\t\t\t'unified-search__result-icon--rounded': rounded,\n\t\t\t\t'unified-search__result-icon--no-preview': !hasValidThumbnail && !loaded,\n\t\t\t\t'unified-search__result-icon--with-thumbnail': hasValidThumbnail && loaded,\n\t\t\t\t[icon]: !loaded && !isIconUrl,\n\t\t\t}\"\n\t\t\t:style=\"{\n\t\t\t\tbackgroundImage: isIconUrl ? `url(${icon})` : '',\n\t\t\t}\">\n\n\t\t\t<img v-if=\"hasValidThumbnail\"\n\t\t\t\tv-show=\"loaded\"\n\t\t\t\t:src=\"thumbnailUrl\"\n\t\t\t\talt=\"\"\n\t\t\t\t@error=\"onError\"\n\t\t\t\t@load=\"onLoad\">\n\t\t</div>\n\n\t\t<!-- Title and sub-title -->\n\t\t<span class=\"unified-search__result-content\">\n\t\t\t<span class=\"unified-search__result-line-one\" :title=\"title\">\n\t\t\t\t<NcHighlight :text=\"title\" :search=\"query\" />\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"unified-search__result-line-two\" :title=\"subline\">{{ subline }}</span>\n\t\t</span>\n\t</a>\n</template>\n\n<script>\nimport NcHighlight from '@nextcloud/vue/dist/Components/NcHighlight'\n\nexport default {\n\tname: 'SearchResult',\n\n\tcomponents: {\n\t\tNcHighlight,\n\t},\n\n\tprops: {\n\t\tthumbnailUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tresourceUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\trounded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Only used for the first result as a visual feedback\n\t\t * so we can keep the search input focused but pressing\n\t\t * enter still opens the first result\n\t\t */\n\t\tfocused: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\thasValidThumbnail: this.thumbnailUrl && this.thumbnailUrl.trim() !== '',\n\t\t\tloaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisIconUrl() {\n\t\t\t// If we're facing an absolute url\n\t\t\tif (this.icon.startsWith('/')) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\t// Otherwise, let's check if this is a valid url\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-new\n\t\t\t\tnew URL(this.icon)\n\t\t\t} catch {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t},\n\n\twatch: {\n\t\t// Make sure to reset state on change even when vue recycle the component\n\t\tthumbnailUrl() {\n\t\t\tthis.hasValidThumbnail = this.thumbnailUrl && this.thumbnailUrl.trim() !== ''\n\t\t\tthis.loaded = false\n\t\t},\n\t},\n\n\tmethods: {\n\t\treEmitEvent(e) {\n\t\t\tthis.$emit(e.type, e)\n\t\t},\n\n\t\t/**\n\t\t * If the image fails to load, fallback to iconClass\n\t\t */\n\t\tonError() {\n\t\t\tthis.hasValidThumbnail = false\n\t\t},\n\n\t\tonLoad() {\n\t\t\tthis.loaded = true\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\n\tborder-radius: var(--border-radius-large) !important;\n\n\t// Load more entry,\n\t&:last-child {\n\t\tborder-bottom: none;\n\t}\n\n\t&--focused,\n\t&:active,\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t* {\n\t\tcursor: pointer;\n\t}\n\n\t&-icon {\n\t\toverflow: hidden;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center center;\n\t\tbackground-size: 32px;\n\t\t&--rounded {\n\t\t\tborder-radius: math.div($clickable-area, 2);\n\t\t}\n\t\t&--no-preview {\n\t\t\tbackground-size: 32px;\n\t\t}\n\t\t&--with-thumbnail {\n\t\t\tbackground-size: cover;\n\t\t}\n\t\t&--with-thumbnail:not(&--rounded) {\n\t\t\t// compensate for border\n\t\t\tmax-width: $clickable-area - 2px;\n\t\t\tmax-height: $clickable-area - 2px;\n\t\t\tborder: 1px solid var(--color-border);\n\t\t}\n\n\t\timg {\n\t\t\t// Make sure to keep ratio\n\t\t\twidth: 100%;\n\t\t\theight: 100%;\n\n\t\t\tobject-fit: cover;\n\t\t\tobject-position: center;\n\t\t}\n\t}\n\n\t&-icon,\n\t&-actions {\n\t\tflex: 0 0 $clickable-area;\n\t}\n\n\t&-content {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex: 1 1 100%;\n\t\tflex-wrap: wrap;\n\t\t// Set to minimum and gro from it\n\t\tmin-width: 0;\n\t\tpadding-left: $margin;\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\toverflow: hidden;\n\t\tflex: 1 1 100%;\n\t\tmargin: 1px 0;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Use the same color as the `a`\n\t\tcolor: inherit;\n\t\tfont-size: inherit;\n\t}\n\t&-line-two {\n\t\topacity: .7;\n\t\tfont-size: var(--default-font-size);\n\t}\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResult.vue?vue&type=style&index=0&id=288e1e92&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResult.vue?vue&type=style&index=0&id=288e1e92&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResult.vue?vue&type=template&id=288e1e92&scoped=true&\"\nimport script from \"./SearchResult.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResult.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResult.vue?vue&type=style&index=0&id=288e1e92&prod&lang=scss&scoped=true&\"\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 \"288e1e92\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPlaceholders.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!./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"","<template>\n\t<ul>\n\t\t<!-- Placeholder animation -->\n\t\t<svg class=\"unified-search__result-placeholder-gradient\">\n\t\t\t<defs>\n\t\t\t\t<linearGradient id=\"unified-search__result-placeholder-gradient\">\n\t\t\t\t\t<stop offset=\"0%\" :stop-color=\"light\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${light}; ${light}; ${dark}; ${dark}; ${light}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t\t<stop offset=\"100%\" :stop-color=\"dark\">\n\t\t\t\t\t\t<animate attributeName=\"stop-color\"\n\t\t\t\t\t\t\t:values=\"`${dark}; ${light}; ${light}; ${dark}; ${dark}`\"\n\t\t\t\t\t\t\tdur=\"2s\"\n\t\t\t\t\t\t\trepeatCount=\"indefinite\" />\n\t\t\t\t\t</stop>\n\t\t\t\t</linearGradient>\n\t\t\t</defs>\n\t\t</svg>\n\n\t\t<!-- Placeholders -->\n\t\t<li v-for=\"placeholder in [1, 2, 3]\" :key=\"placeholder\">\n\t\t\t<svg class=\"unified-search__result-placeholder\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tfill=\"url(#unified-search__result-placeholder-gradient)\">\n\t\t\t\t<rect class=\"unified-search__result-placeholder-icon\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-one\" />\n\t\t\t\t<rect class=\"unified-search__result-placeholder-line-two\" :style=\"{width: `calc(${randWidth()}%)`}\" />\n\t\t\t</svg>\n\t\t</li>\n\t</ul>\n</template>\n\n<script>\nexport default {\n\tname: 'SearchResultPlaceholders',\n\n\tdata() {\n\t\treturn {\n\t\t\tlight: null,\n\t\t\tdark: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tconst styles = getComputedStyle(document.documentElement)\n\t\tthis.dark = styles.getPropertyValue('--color-placeholder-dark')\n\t\tthis.light = styles.getPropertyValue('--color-placeholder-light')\n\t},\n\n\tmethods: {\n\t\trandWidth() {\n\t\t\treturn Math.floor(Math.random() * 20) + 30\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$clickable-area: 44px;\n$margin: 10px;\n\n.unified-search__result-placeholder-gradient {\n\tposition: fixed;\n\theight: 0;\n\twidth: 0;\n\tz-index: -1;\n}\n\n.unified-search__result-placeholder {\n\twidth: calc(100% - 2 * #{$margin});\n\theight: $clickable-area;\n\tmargin: $margin;\n\n\t&-icon {\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\trx: var(--border-radius);\n\t\try: var(--border-radius);\n\t}\n\n\t&-line-one,\n\t&-line-two {\n\t\twidth: calc(100% - #{$margin + $clickable-area});\n\t\theight: 1em;\n\t\tx: $margin + $clickable-area;\n\t}\n\n\t&-line-one {\n\t\ty: 5px;\n\t}\n\n\t&-line-two {\n\t\ty: 25px;\n\t}\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchResultPlaceholders.vue?vue&type=template&id=9ed03c40&scoped=true&\"\nimport script from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nexport * from \"./SearchResultPlaceholders.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SearchResultPlaceholders.vue?vue&type=style&index=0&id=9ed03c40&prod&lang=scss&scoped=true&\"\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 \"9ed03c40\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',[_c('svg',{staticClass:\"unified-search__result-placeholder-gradient\"},[_c('defs',[_c('linearGradient',{attrs:{\"id\":\"unified-search__result-placeholder-gradient\"}},[_c('stop',{attrs:{\"offset\":\"0%\",\"stop-color\":_vm.light}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":`${_vm.light}; ${_vm.light}; ${_vm.dark}; ${_vm.dark}; ${_vm.light}`,\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})]),_vm._v(\" \"),_c('stop',{attrs:{\"offset\":\"100%\",\"stop-color\":_vm.dark}},[_c('animate',{attrs:{\"attributeName\":\"stop-color\",\"values\":`${_vm.dark}; ${_vm.light}; ${_vm.light}; ${_vm.dark}; ${_vm.dark}`,\"dur\":\"2s\",\"repeatCount\":\"indefinite\"}})])],1)],1)]),_vm._v(\" \"),_vm._l(([1, 2, 3]),function(placeholder){return _c('li',{key:placeholder},[_c('svg',{staticClass:\"unified-search__result-placeholder\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"fill\":\"url(#unified-search__result-placeholder-gradient)\"}},[_c('rect',{staticClass:\"unified-search__result-placeholder-icon\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-one\"}),_vm._v(\" \"),_c('rect',{staticClass:\"unified-search__result-placeholder-line-two\",style:({width: `calc(${_vm.randWidth()}%)`})})])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }"," <!--\n - @copyright Copyright (c) 2020 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<template>\n\t<HeaderMenu id=\"unified-search\"\n\t\tclass=\"unified-search\"\n\t\texclude-click-outside-classes=\"popover\"\n\t\t:open.sync=\"open\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t@open=\"onOpen\"\n\t\t@close=\"onClose\">\n\t\t<!-- Header icon -->\n\t\t<template #trigger>\n\t\t\t<Magnify class=\"unified-search__trigger\"\n\t\t\t\t:size=\"22/* fit better next to other 20px icons */\"\n\t\t\t\tfill-color=\"var(--color-primary-text)\" />\n\t\t</template>\n\n\t\t<!-- Search form & filters wrapper -->\n\t\t<div class=\"unified-search__input-wrapper\">\n\t\t\t<label for=\"unified-search__input\">{{ ariaLabel }}</label>\n\t\t\t<div class=\"unified-search__input-row\">\n\t\t\t\t<form class=\"unified-search__form\"\n\t\t\t\t\trole=\"search\"\n\t\t\t\t\t:class=\"{'icon-loading-small': isLoading}\"\n\t\t\t\t\t@submit.prevent.stop=\"onInputEnter\"\n\t\t\t\t\t@reset.prevent.stop=\"onReset\">\n\t\t\t\t\t<!-- Search input -->\n\t\t\t\t\t<input ref=\"input\"\n\t\t\t\t\t\tid=\"unified-search__input\"\n\t\t\t\t\t\tv-model=\"query\"\n\t\t\t\t\t\tclass=\"unified-search__form-input\"\n\t\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t\t:class=\"{'unified-search__form-input--with-reset': !!query}\"\n\t\t\t\t\t\t:placeholder=\"t('core', 'Search {types} …', { types: typesNames.join(', ') })\"\n\t\t\t\t\t\taria-describedby=\"unified-search-desc\"\n\t\t\t\t\t\t@input=\"onInputDebounced\"\n\t\t\t\t\t\t@keypress.enter.prevent.stop=\"onInputEnter\">\n\t\t\t\t\t<p id=\"unified-search-desc\" class=\"hidden-visually\">\n\t\t\t\t\t\t{{ t('core', 'Search starts once you start typing and results may be reached with the arrow keys') }}\n\t\t\t\t\t</p>\n\n\t\t\t\t\t<!-- Reset search button -->\n\t\t\t\t\t<input v-if=\"!!query && !isLoading\"\n\t\t\t\t\t\ttype=\"reset\"\n\t\t\t\t\t\tclass=\"unified-search__form-reset icon-close\"\n\t\t\t\t\t\t:aria-label=\"t('core','Reset search')\"\n\t\t\t\t\t\tvalue=\"\">\n\n\t\t\t\t\t<input v-if=\"!!query && !isLoading && !enableLiveSearch\"\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tclass=\"unified-search__form-submit icon-confirm\"\n\t\t\t\t\t\t:aria-label=\"t('core','Start search')\"\n\t\t\t\t\t\tvalue=\"\">\n\t\t\t\t</form>\n\n\t\t\t\t<!-- Search filters -->\n\t\t\t\t<NcActions v-if=\"availableFilters.length > 1\"\n\t\t\t\t\tclass=\"unified-search__filters\"\n\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\tcontainer=\".unified-search__input-wrapper\">\n\t\t\t\t\t<!-- FIXME use element ref for container after https://github.com/nextcloud/nextcloud-vue/pull/3462 -->\n\t\t\t\t\t<NcActionButton v-for=\"type in availableFilters\"\n\t\t\t\t\t\t:key=\"type\"\n\t\t\t\t\t\ticon=\"icon-filter\"\n\t\t\t\t\t\t:title=\"t('core', 'Search for {name} only', { name: typesMap[type] })\"\n\t\t\t\t\t\t@click.stop=\"onClickFilter(`in:${type}`)\">\n\t\t\t\t\t\t{{ `in:${type}` }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<template v-if=\"!hasResults\">\n\t\t\t<!-- Loading placeholders -->\n\t\t\t<SearchResultPlaceholders v-if=\"isLoading\" />\n\n\t\t\t<NcEmptyContent v-else-if=\"isValidQuery\">\n\t\t\t\t<NcHighlight v-if=\"triggered\" :text=\"t('core', 'No results for {query}', { query })\" :search=\"query\" />\n\t\t\t\t<div v-else>\n\t\t\t\t\t{{ t('core', 'Press enter to start searching') }}\n\t\t\t\t</div>\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Magnify />\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\n\t\t\t<NcEmptyContent v-else-if=\"!isLoading || isShortQuery\">\n\t\t\t\t{{ t('core', 'Start typing to search') }}\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Magnify />\n\t\t\t\t</template>\n\t\t\t\t<template v-if=\"isShortQuery\" #desc>\n\t\t\t\t\t{{ n('core',\n\t\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t\tminSearchLength,\n\t\t\t\t\t\t{minSearchLength}) }}\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\t\t</template>\n\n\t\t<!-- Grouped search results -->\n\t\t<template v-else>\n\t\t\t<ul v-for=\"({list, type}, typesIndex) in orderedResults\"\n\t\t\t\t:key=\"type\"\n\t\t\t\tclass=\"unified-search__results\"\n\t\t\t\t:class=\"`unified-search__results-${type}`\"\n\t\t\t\t:aria-label=\"typesMap[type]\">\n\t\t\t\t<h2 class=\"unified-search__results-header\">\n\t\t\t\t\t{{ typesMap[type] }}\n\t\t\t\t</h2>\n\n\t\t\t\t<!-- Search results -->\n\t\t\t\t<li v-for=\"(result, index) in limitIfAny(list, type)\" :key=\"result.resourceUrl\">\n\t\t\t\t\t<SearchResult v-bind=\"result\"\n\t\t\t\t\t\t:query=\"query\"\n\t\t\t\t\t\t:focused=\"focused === 0 && typesIndex === 0 && index === 0\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\n\t\t\t\t<!-- Load more button -->\n\t\t\t\t<li>\n\t\t\t\t\t<SearchResult v-if=\"!reached[type]\"\n\t\t\t\t\t\tclass=\"unified-search__result-more\"\n\t\t\t\t\t\t:title=\"loading[type]\n\t\t\t\t\t\t\t? t('core', 'Loading more results …')\n\t\t\t\t\t\t\t: t('core', 'Load more results')\"\n\t\t\t\t\t\t:icon-class=\"loading[type] ? 'icon-loading-small' : ''\"\n\t\t\t\t\t\t@click.stop=\"loadMore(type)\"\n\t\t\t\t\t\t@focus=\"setFocusedIndex\" />\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</template>\n\t</HeaderMenu>\n</template>\n\n<script>\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { minSearchLength, getTypes, search, defaultLimit, regexFilterIn, regexFilterNot, enableLiveSearch } from '../services/UnifiedSearchService'\nimport { showError } from '@nextcloud/dialogs'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport debounce from 'debounce'\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'\nimport NcHighlight from '@nextcloud/vue/dist/Components/NcHighlight'\nimport Magnify from 'vue-material-design-icons/Magnify'\n\nimport HeaderMenu from '../components/HeaderMenu'\nimport SearchResult from '../components/UnifiedSearch/SearchResult'\nimport SearchResultPlaceholders from '../components/UnifiedSearch/SearchResultPlaceholders'\n\nconst REQUEST_FAILED = 0\nconst REQUEST_OK = 1\nconst REQUEST_CANCELED = 2\n\nexport default {\n\tname: 'UnifiedSearch',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcEmptyContent,\n\t\tHeaderMenu,\n\t\tNcHighlight,\n\t\tMagnify,\n\t\tSearchResult,\n\t\tSearchResultPlaceholders,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttypes: [],\n\n\t\t\t// Cursors per types\n\t\t\tcursors: {},\n\t\t\t// Various search limits per types\n\t\t\tlimits: {},\n\t\t\t// Loading types\n\t\t\tloading: {},\n\t\t\t// Reached search types\n\t\t\treached: {},\n\t\t\t// Pending cancellable requests\n\t\t\trequests: [],\n\t\t\t// List of all results\n\t\t\tresults: {},\n\n\t\t\tquery: '',\n\t\t\tfocused: null,\n\t\t\ttriggered: false,\n\n\t\t\tdefaultLimit,\n\t\t\tminSearchLength,\n\t\t\tenableLiveSearch,\n\n\t\t\topen: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\ttypesIDs() {\n\t\t\treturn this.types.map(type => type.id)\n\t\t},\n\t\ttypesNames() {\n\t\t\treturn this.types.map(type => type.name)\n\t\t},\n\t\ttypesMap() {\n\t\t\treturn this.types.reduce((prev, curr) => {\n\t\t\t\tprev[curr.id] = curr.name\n\t\t\t\treturn prev\n\t\t\t}, {})\n\t\t},\n\n\t\tariaLabel() {\n\t\t\treturn t('core', 'Search')\n\t\t},\n\n\t\t/**\n\t\t * Is there any result to display\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\thasResults() {\n\t\t\treturn Object.keys(this.results).length !== 0\n\t\t},\n\n\t\t/**\n\t\t * Return ordered results\n\t\t *\n\t\t * @return {Array}\n\t\t */\n\t\torderedResults() {\n\t\t\treturn this.typesIDs\n\t\t\t\t.filter(type => type in this.results)\n\t\t\t\t.map(type => ({\n\t\t\t\t\ttype,\n\t\t\t\t\tlist: this.results[type],\n\t\t\t\t}))\n\t\t},\n\n\t\t/**\n\t\t * Available filters\n\t\t * We only show filters that are available on the results\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tavailableFilters() {\n\t\t\treturn Object.keys(this.results)\n\t\t},\n\n\t\t/**\n\t\t * Applied filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersIn() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterIn.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[2])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Applied anti filters\n\t\t *\n\t\t * @return {string[]}\n\t\t */\n\t\tusedFiltersNot() {\n\t\t\tlet match\n\t\t\tconst filters = []\n\t\t\twhile ((match = regexFilterNot.exec(this.query)) !== null) {\n\t\t\t\tfilters.push(match[2])\n\t\t\t}\n\t\t\treturn filters\n\t\t},\n\n\t\t/**\n\t\t * Is the current search too short\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisShortQuery() {\n\t\t\treturn this.query && this.query.trim().length < minSearchLength\n\t\t},\n\n\t\t/**\n\t\t * Is the current search valid\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisValidQuery() {\n\t\t\treturn this.query && this.query.trim() !== '' && !this.isShortQuery\n\t\t},\n\n\t\t/**\n\t\t * Have we reached the end of all types searches\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisDoneSearching() {\n\t\t\treturn Object.values(this.reached).every(state => state === false)\n\t\t},\n\n\t\t/**\n\t\t * Is there any search in progress\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisLoading() {\n\t\t\treturn Object.values(this.loading).some(state => state === true)\n\t\t},\n\t},\n\n\tasync created() {\n\t\tsubscribe('files:navigation:changed', this.resetForm)\n\t\tthis.types = await getTypes()\n\t\tthis.logger.debug('Unified Search initialized with the following providers', this.types)\n\t},\n\n\tbeforeDestroy() {\n\t\tunsubscribe('files:navigation:changed', this.resetForm)\n\t},\n\n\tmounted() {\n\t\tif (OCP.Accessibility.disableKeyboardShortcuts()) {\n\t\t\treturn\n\t\t}\n\n\t\tdocument.addEventListener('keydown', (event) => {\n\t\t\t// if not already opened, allows us to trigger default browser on second keydown\n\t\t\tif (event.ctrlKey && event.key === 'f' && !this.open) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.open = true\n\t\t\t\tthis.focusInput()\n\t\t\t}\n\n\t\t\t// https://www.w3.org/WAI/GL/wiki/Using_ARIA_menus\n\t\t\tif (this.open) {\n\t\t\t\t// If arrow down, focus next result\n\t\t\t\tif (event.key === 'ArrowDown') {\n\t\t\t\t\tthis.focusNext(event)\n\t\t\t\t}\n\n\t\t\t\t// If arrow up, focus prev result\n\t\t\t\tif (event.key === 'ArrowUp') {\n\t\t\t\t\tthis.focusPrev(event)\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t},\n\n\tmethods: {\n\t\tasync onOpen() {\n\t\t\tthis.focusInput()\n\t\t\t// Update types list in the background\n\t\t\tthis.types = await getTypes()\n\t\t},\n\t\tonClose() {\n\t\t\temit('nextcloud:unified-search.close')\n\t\t},\n\n\t\tresetForm() {\n\t\t\tthis.$el.querySelector('form[role=\"search\"]').reset()\n\t\t},\n\n\t\t/**\n\t\t * Reset the search state\n\t\t */\n\t\tonReset() {\n\t\t\temit('nextcloud:unified-search.reset')\n\t\t\tthis.logger.debug('Search reset')\n\t\t\tthis.query = ''\n\t\t\tthis.resetState()\n\t\t\tthis.focusInput()\n\t\t},\n\t\tasync resetState() {\n\t\t\tthis.cursors = {}\n\t\t\tthis.limits = {}\n\t\t\tthis.reached = {}\n\t\t\tthis.results = {}\n\t\t\tthis.focused = null\n\t\t\tthis.triggered = false\n\t\t\tawait this.cancelPendingRequests()\n\t\t},\n\n\t\t/**\n\t\t * Cancel any ongoing searches\n\t\t */\n\t\tasync cancelPendingRequests() {\n\t\t\t// Cloning so we can keep processing other requests\n\t\t\tconst requests = this.requests.slice(0)\n\t\t\tthis.requests = []\n\n\t\t\t// Cancel all pending requests\n\t\t\tawait Promise.all(requests.map(cancel => cancel()))\n\t\t},\n\n\t\t/**\n\t\t * Focus the search input on next tick\n\t\t */\n\t\tfocusInput() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs.input.focus()\n\t\t\t\tthis.$refs.input.select()\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * If we have results already, open first one\n\t\t * If not, trigger the search again\n\t\t */\n\t\tonInputEnter() {\n\t\t\tif (this.hasResults) {\n\t\t\t\tconst results = this.getResultsList()\n\t\t\t\tresults[0].click()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.onInput()\n\t\t},\n\n\t\t/**\n\t\t * Start searching on input\n\t\t */\n\t\tasync onInput() {\n\t\t\t// emit the search query\n\t\t\temit('nextcloud:unified-search.search', { query: this.query })\n\n\t\t\t// Do not search if not long enough\n\t\t\tif (this.query.trim() === '' || this.isShortQuery) {\n\t\t\t\tfor (const type of this.typesIDs) {\n\t\t\t\t\tthis.$delete(this.results, type)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlet types = this.typesIDs\n\t\t\tlet query = this.query\n\n\t\t\t// Filter out types\n\t\t\tif (this.usedFiltersNot.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersNot.indexOf(type) === -1)\n\t\t\t}\n\n\t\t\t// Only use those filters if any and check if they are valid\n\t\t\tif (this.usedFiltersIn.length > 0) {\n\t\t\t\ttypes = this.typesIDs.filter(type => this.usedFiltersIn.indexOf(type) > -1)\n\t\t\t}\n\n\t\t\t// Remove any filters from the query\n\t\t\tquery = query.replace(regexFilterIn, '').replace(regexFilterNot, '')\n\n\t\t\t// Reset search if the query changed\n\t\t\tawait this.resetState()\n\t\t\tthis.triggered = true\n\n\t\t\tif (!types.length) {\n\t\t\t\t// no results since no types were selected\n\t\t\t\tthis.logger.error('No types to search in')\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$set(this.loading, 'all', true)\n\t\t\tthis.logger.debug(`Searching ${query} in`, types)\n\n\t\t\tPromise.all(types.map(async type => {\n\t\t\t\ttry {\n\t\t\t\t\t// Init cancellable request\n\t\t\t\t\tconst { request, cancel } = search({ type, query })\n\t\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t\t// Fetch results\n\t\t\t\t\tconst { data } = await request()\n\n\t\t\t\t\t// Process results\n\t\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\t\tthis.$set(this.results, type, data.ocs.data.entries)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.$delete(this.results, type)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Save cursor if any\n\t\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t\t} else if (!data.ocs.data.isPaginated) {\n\t\t\t\t\t// If no cursor and no pagination, we save the default amount\n\t\t\t\t\t// provided by server's initial state `defaultLimit`\n\t\t\t\t\t\tthis.$set(this.limits, type, this.defaultLimit)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check if we reached end of pagination\n\t\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t\t}\n\n\t\t\t\t\t// If none already focused, focus the first rendered result\n\t\t\t\t\tif (this.focused === null) {\n\t\t\t\t\t\tthis.focused = 0\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_OK\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthis.$delete(this.results, type)\n\n\t\t\t\t\t// If this is not a cancelled throw\n\t\t\t\t\tif (error.response && error.response.status) {\n\t\t\t\t\t\tthis.logger.error(`Error searching for ${this.typesMap[type]}`, error)\n\t\t\t\t\t\tshowError(this.t('core', 'An error occurred while searching for {type}', { type: this.typesMap[type] }))\n\t\t\t\t\t\treturn REQUEST_FAILED\n\t\t\t\t\t}\n\t\t\t\t\treturn REQUEST_CANCELED\n\t\t\t\t}\n\t\t\t})).then(results => {\n\t\t\t\t// Do not declare loading finished if the request have been cancelled\n\t\t\t\t// This means another search was triggered and we're therefore still loading\n\t\t\t\tif (results.some(result => result === REQUEST_CANCELED)) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// We finished all searches\n\t\t\t\tthis.loading = {}\n\t\t\t})\n\t\t},\n\t\tonInputDebounced: enableLiveSearch\n\t\t\t? debounce(function(e) {\n\t\t\t\tthis.onInput(e)\n\t\t\t}, 500)\n\t\t\t: function() {\n\t\t\t\tthis.triggered = false\n\t\t\t},\n\n\t\t/**\n\t\t * Load more results for the provided type\n\t\t *\n\t\t * @param {string} type type\n\t\t */\n\t\tasync loadMore(type) {\n\t\t\t// If already loading, ignore\n\t\t\tif (this.loading[type]) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.cursors[type]) {\n\t\t\t\t// Init cancellable request\n\t\t\t\tconst { request, cancel } = search({ type, query: this.query, cursor: this.cursors[type] })\n\t\t\t\tthis.requests.push(cancel)\n\n\t\t\t\t// Fetch results\n\t\t\t\tconst { data } = await request()\n\n\t\t\t\t// Save cursor if any\n\t\t\t\tif (data.ocs.data.cursor) {\n\t\t\t\t\tthis.$set(this.cursors, type, data.ocs.data.cursor)\n\t\t\t\t}\n\n\t\t\t\t// Process results\n\t\t\t\tif (data.ocs.data.entries.length > 0) {\n\t\t\t\t\tthis.results[type].push(...data.ocs.data.entries)\n\t\t\t\t}\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (data.ocs.data.entries.length < this.defaultLimit) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t} else\n\n\t\t\t// If no cursor, we might have all the results already,\n\t\t\t// let's fake pagination and show the next xxx entries\n\t\t\tif (this.limits[type] && this.limits[type] >= 0) {\n\t\t\t\tthis.limits[type] += this.defaultLimit\n\n\t\t\t\t// Check if we reached end of pagination\n\t\t\t\tif (this.limits[type] >= this.results[type].length) {\n\t\t\t\t\tthis.$set(this.reached, type, true)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Focus result after render\n\t\t\tif (this.focused !== null) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Return a subset of the array if the search provider\n\t\t * doesn't supports pagination\n\t\t *\n\t\t * @param {Array} list the results\n\t\t * @param {string} type the type\n\t\t * @return {Array}\n\t\t */\n\t\tlimitIfAny(list, type) {\n\t\t\tif (type in this.limits) {\n\t\t\t\treturn list.slice(0, this.limits[type])\n\t\t\t}\n\t\t\treturn list\n\t\t},\n\n\t\tgetResultsList() {\n\t\t\treturn this.$el.querySelectorAll('.unified-search__results .unified-search__result')\n\t\t},\n\n\t\t/**\n\t\t * Focus the first result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusFirst(event) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results.length > 0) {\n\t\t\t\tif (event) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t}\n\t\t\t\tthis.focused = 0\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the next result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusNext(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the last, focus the next one\n\t\t\tif (results && results.length > 0 && this.focused + 1 < results.length) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused++\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Focus the previous result if any\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tfocusPrev(event) {\n\t\t\tif (this.focused === null) {\n\t\t\t\tthis.focusFirst(event)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst results = this.getResultsList()\n\t\t\t// If we're not focusing the first, focus the previous one\n\t\t\tif (results && results.length > 0 && this.focused > 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.focused--\n\t\t\t\tthis.focusIndex(this.focused)\n\t\t\t}\n\n\t\t},\n\n\t\t/**\n\t\t * Focus the specified result index if it exists\n\t\t *\n\t\t * @param {number} index the result index\n\t\t */\n\t\tfocusIndex(index) {\n\t\t\tconst results = this.getResultsList()\n\t\t\tif (results && results[index]) {\n\t\t\t\tresults[index].focus()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Set the current focused element based on the target\n\t\t *\n\t\t * @param {Event} event the focus event\n\t\t */\n\t\tsetFocusedIndex(event) {\n\t\t\tconst entry = event.target\n\t\t\tconst results = this.getResultsList()\n\t\t\tconst index = [...results].findIndex(search => search === entry)\n\t\t\tif (index > -1) {\n\t\t\t\t// let's not use focusIndex as the entry is already focused\n\t\t\t\tthis.focused = index\n\t\t\t}\n\t\t},\n\n\t\tonClickFilter(filter) {\n\t\t\tthis.query = `${this.query} ${filter}`\n\t\t\t\t.replace(/ {2}/g, ' ')\n\t\t\t\t.trim()\n\t\t\tthis.onInput()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$margin: 10px;\n$input-height: 34px;\n$input-padding: 6px;\n\n.unified-search {\n\t&__trigger {\n\t\tfilter: var(--background-image-invert-if-bright);\n\t}\n\n\t&__input-wrapper {\n\t\tposition: sticky;\n\t\t// above search results\n\t\tz-index: 2;\n\t\ttop: 0;\n\t\tdisplay: inline-flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\n\t\tlabel[for=\"unified-search__input\"] {\n\t\t\talign-self: flex-start;\n\t\t\tfont-weight: bold;\n\t\t\tfont-size: 19px;\n\t\t\tmargin-left: 13px;\n\t\t}\n\t}\n\n\t&__form-input {\n\t\tmargin: 0 !important;\n\t}\n\n\t&__input-row {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\talign-items: center;\n\t}\n\n\t&__filters {\n\t\tmargin: $margin 0 $margin math.div($margin, 2);\n\t\tul {\n\t\t\tdisplay: inline-flex;\n\t\t\tjustify-content: space-between;\n\t\t}\n\t}\n\n\t&__form {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmargin: $margin 0;\n\n\t\t// Loading spinner\n\t\t&::after {\n\t\t\tright: $input-padding;\n\t\t\tleft: auto;\n\t\t}\n\n\t\t&-input,\n\t\t&-reset {\n\t\t\tmargin: math.div($input-padding, 2);\n\t\t}\n\n\t\t&-input {\n\t\t\twidth: 100%;\n\t\t\theight: $input-height;\n\t\t\tpadding: $input-padding;\n\n\t\t\t&,\n\t\t\t&[placeholder],\n\t\t\t&::placeholder {\n\t\t\t\toverflow: hidden;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t}\n\n\t\t\t// Hide webkit clear search\n\t\t\t&::-webkit-search-decoration,\n\t\t\t&::-webkit-search-cancel-button,\n\t\t\t&::-webkit-search-results-button,\n\t\t\t&::-webkit-search-results-decoration {\n\t\t\t\t-webkit-appearance: none;\n\t\t\t}\n\n\t\t\t// Ellipsis earlier if reset button is here\n\t\t\t.icon-loading-small &,\n\t\t\t&--with-reset {\n\t\t\t\tpadding-right: $input-height;\n\t\t\t}\n\t\t}\n\n\t\t&-reset, &-submit {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 4px;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\n\t\t\tmin-height: 30px;\n\t\t\tpadding: 0;\n\t\t\topacity: .5;\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t\tmargin-right: 0;\n\n\t\t\t&:hover,\n\t\t\t&:focus,\n\t\t\t&:active {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t}\n\n\t\t&-submit {\n\t\t\tright: 28px;\n\t\t}\n\t}\n\n\t&__results {\n\t\t&-header {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-bottom: $margin - 4px;\n\t\t\tmargin-left: 13px;\n\t\t\tcolor: var(--color-primary-element);\n\t\t\tfont-size: 19px;\n\t\t\tfont-weight: bold;\n\t\t}\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t}\n\n\t.unified-search__result-more::v-deep {\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t.empty-content {\n\t\tmargin: 10vh 0;\n\n\t\t::v-deep .empty-content__title {\n\t\t\tfont-weight: normal;\n font-size: var(--default-font-size);\n\t\t\tpadding: 0 15px;\n\t\t\ttext-align: center;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.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!./UnifiedSearch.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=style&index=0&id=3d447e9e&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=style&index=0&id=3d447e9e&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearch.vue?vue&type=template&id=3d447e9e&scoped=true&\"\nimport script from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nexport * from \"./UnifiedSearch.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UnifiedSearch.vue?vue&type=style&index=0&id=3d447e9e&prod&lang=scss&scoped=true&\"\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 \"3d447e9e\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('HeaderMenu',{staticClass:\"unified-search\",attrs:{\"id\":\"unified-search\",\"exclude-click-outside-classes\":\"popover\",\"open\":_vm.open,\"aria-label\":_vm.ariaLabel},on:{\"update:open\":function($event){_vm.open=$event},\"open\":_vm.onOpen,\"close\":_vm.onClose},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('Magnify',{staticClass:\"unified-search__trigger\",attrs:{\"size\":22/* fit better next to other 20px icons */,\"fill-color\":\"var(--color-primary-text)\"}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-wrapper\"},[_c('label',{attrs:{\"for\":\"unified-search__input\"}},[_vm._v(_vm._s(_vm.ariaLabel))]),_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-row\"},[_c('form',{staticClass:\"unified-search__form\",class:{'icon-loading-small': _vm.isLoading},attrs:{\"role\":\"search\"},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)},\"reset\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onReset.apply(null, arguments)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],ref:\"input\",staticClass:\"unified-search__form-input\",class:{'unified-search__form-input--with-reset': !!_vm.query},attrs:{\"id\":\"unified-search__input\",\"type\":\"search\",\"placeholder\":_vm.t('core', 'Search {types} …', { types: _vm.typesNames.join(', ') }),\"aria-describedby\":\"unified-search-desc\"},domProps:{\"value\":(_vm.query)},on:{\"input\":[function($event){if($event.target.composing)return;_vm.query=$event.target.value},_vm.onInputDebounced],\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();$event.stopPropagation();return _vm.onInputEnter.apply(null, arguments)}}}),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"id\":\"unified-search-desc\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search starts once you start typing and results may be reached with the arrow keys'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),(!!_vm.query && !_vm.isLoading)?_c('input',{staticClass:\"unified-search__form-reset icon-close\",attrs:{\"type\":\"reset\",\"aria-label\":_vm.t('core','Reset search'),\"value\":\"\"}}):_vm._e(),_vm._v(\" \"),(!!_vm.query && !_vm.isLoading && !_vm.enableLiveSearch)?_c('input',{staticClass:\"unified-search__form-submit icon-confirm\",attrs:{\"type\":\"submit\",\"aria-label\":_vm.t('core','Start search'),\"value\":\"\"}}):_vm._e()]),_vm._v(\" \"),(_vm.availableFilters.length > 1)?_c('NcActions',{staticClass:\"unified-search__filters\",attrs:{\"placement\":\"bottom\",\"container\":\".unified-search__input-wrapper\"}},_vm._l((_vm.availableFilters),function(type){return _c('NcActionButton',{key:type,attrs:{\"icon\":\"icon-filter\",\"title\":_vm.t('core', 'Search for {name} only', { name: _vm.typesMap[type] })},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClickFilter(`in:${type}`)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(`in:${type}`)+\"\\n\\t\\t\\t\\t\")])}),1):_vm._e()],1)]),_vm._v(\" \"),(!_vm.hasResults)?[(_vm.isLoading)?_c('SearchResultPlaceholders'):(_vm.isValidQuery)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true}],null,false,931131664)},[(_vm.triggered)?_c('NcHighlight',{attrs:{\"text\":_vm.t('core', 'No results for {query}', { query: _vm.query }),\"search\":_vm.query}}):_c('div',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Press enter to start searching'))+\"\\n\\t\\t\\t\")])],1):(!_vm.isLoading || _vm.isShortQuery)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('Magnify')]},proxy:true},(_vm.isShortQuery)?{key:\"desc\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.n('core',\n\t\t\t\t\t'Please enter {minSearchLength} character or more to search',\n\t\t\t\t\t'Please enter {minSearchLength} characters or more to search',\n\t\t\t\t\t_vm.minSearchLength,\n\t\t\t\t\t{minSearchLength: _vm.minSearchLength}))+\"\\n\\t\\t\\t\")]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Start typing to search'))+\"\\n\\t\\t\\t\")]):_vm._e()]:_vm._l((_vm.orderedResults),function({list, type},typesIndex){return _c('ul',{key:type,staticClass:\"unified-search__results\",class:`unified-search__results-${type}`,attrs:{\"aria-label\":_vm.typesMap[type]}},[_c('h2',{staticClass:\"unified-search__results-header\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.typesMap[type])+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.limitIfAny(list, type)),function(result,index){return _c('li',{key:result.resourceUrl},[_c('SearchResult',_vm._b({attrs:{\"query\":_vm.query,\"focused\":_vm.focused === 0 && typesIndex === 0 && index === 0},on:{\"focus\":_vm.setFocusedIndex}},'SearchResult',result,false))],1)}),_vm._v(\" \"),_c('li',[(!_vm.reached[type])?_c('SearchResult',{staticClass:\"unified-search__result-more\",attrs:{\"title\":_vm.loading[type]\n\t\t\t\t\t\t? _vm.t('core', 'Loading more results …')\n\t\t\t\t\t\t: _vm.t('core', 'Load more results'),\"icon-class\":_vm.loading[type] ? 'icon-loading-small' : ''},on:{\"click\":function($event){$event.stopPropagation();return _vm.loadMore(type)},\"focus\":_vm.setFocusedIndex}}):_vm._e()],1)],2)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\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\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { getRequestToken } from '@nextcloud/auth'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport Vue from 'vue'\n\nimport UnifiedSearch from './views/UnifiedSearch.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nconst logger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default new Vue({\n\tel: '#unified-search',\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'UnifiedSearchRoot',\n\trender: h => h(UnifiedSearch),\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".header-menu__trigger[data-v-79c00176]{display:flex;align-items:center;justify-content:center;width:50px;height:44px;margin:2px 0;padding:0;cursor:pointer;opacity:.85}.header-menu--opened .header-menu__trigger[data-v-79c00176],.header-menu__trigger[data-v-79c00176]:hover,.header-menu__trigger[data-v-79c00176]:focus,.header-menu__trigger[data-v-79c00176]:active{opacity:1}.header-menu__trigger[data-v-79c00176]:focus-visible{outline:none}.header-menu__wrapper[data-v-79c00176]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0 8px;border-radius:0 0 var(--border-radius) var(--border-radius);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow));padding:8px;border-radius:var(--border-radius-large)}.header-menu__carret[data-v-79c00176]{position:absolute;z-index:2001;left:calc(50% - 10px);bottom:0;width:0;height:0;content:\\\" \\\";pointer-events:none;border:10px solid rgba(0,0,0,0);border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-79c00176]{overflow:auto;width:350px;max-width:calc(100vw - 16px);min-height:66px;max-height:calc(100vh - 100px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/HeaderMenu.vue\"],\"names\":[],\"mappings\":\"AAIC,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,YAAA,CACA,SAAA,CACA,cAAA,CACA,WAAA,CAGD,oMAIC,SAAA,CAGD,qDACC,YAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,YAAA,CACA,2DAAA,CACA,6CAAA,CACA,qDAAA,CACA,WAAA,CACA,wCAAA,CAGD,sCACC,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,+BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,4BAAA,CACA,eAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n$externalMargin: 8px;\\n\\n.header-menu {\\n\\t&__trigger {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 50px;\\n\\t\\theight: 44px;\\n\\t\\tmargin: 2px 0;\\n\\t\\tpadding: 0;\\n\\t\\tcursor: pointer;\\n\\t\\topacity: .85;\\n\\t}\\n\\n\\t&--opened &__trigger,\\n\\t&__trigger:hover,\\n\\t&__trigger:focus,\\n\\t&__trigger:active {\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t&__trigger:focus-visible {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tposition: fixed;\\n\\t\\tz-index: 2000;\\n\\t\\ttop: 50px;\\n\\t\\tright: 0;\\n\\t\\tbox-sizing: border-box;\\n\\t\\tmargin: 0 $externalMargin;\\n\\t\\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\\n\\t\\tpadding: 8px;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&__carret {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 2001; // Because __wrapper is 2000.\\n\\t\\tleft: calc(50% - 10px);\\n\\t\\tbottom: 0;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tcontent: ' ';\\n\\t\\tpointer-events: none;\\n\\t\\tborder: 10px solid transparent;\\n\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t}\\n\\n\\t&__content {\\n\\t\\toverflow: auto;\\n\\t\\twidth: 350px;\\n\\t\\tmax-width: calc(100vw - 2 * $externalMargin);\\n\\t\\tmin-height: calc(44px * 1.5);\\n\\t\\tmax-height: calc(100vh - 50px * 2);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".unified-search__result[data-v-288e1e92]{display:flex;align-items:center;height:44px;padding:10px;border-bottom:1px solid var(--color-border);border-radius:var(--border-radius-large) !important}.unified-search__result[data-v-288e1e92]:last-child{border-bottom:none}.unified-search__result--focused[data-v-288e1e92],.unified-search__result[data-v-288e1e92]:active,.unified-search__result[data-v-288e1e92]:hover,.unified-search__result[data-v-288e1e92]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-288e1e92]{cursor:pointer}.unified-search__result-icon[data-v-288e1e92]{overflow:hidden;width:44px;height:44px;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.unified-search__result-icon--rounded[data-v-288e1e92]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-288e1e92]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-288e1e92]:not(.unified-search__result-icon--rounded){max-width:42px;max-height:42px;border:1px solid var(--color-border)}.unified-search__result-icon img[data-v-288e1e92]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-288e1e92],.unified-search__result-actions[data-v-288e1e92]{flex:0 0 44px}.unified-search__result-content[data-v-288e1e92]{display:flex;align-items:center;flex:1 1 100%;flex-wrap:wrap;min-width:0;padding-left:10px}.unified-search__result-line-one[data-v-288e1e92],.unified-search__result-line-two[data-v-288e1e92]{overflow:hidden;flex:1 1 100%;margin:1px 0;white-space:nowrap;text-overflow:ellipsis;color:inherit;font-size:inherit}.unified-search__result-line-two[data-v-288e1e92]{opacity:.7;font-size:var(--default-font-size)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResult.vue\"],\"names\":[],\"mappings\":\"AAMA,yCACC,YAAA,CACA,kBAAA,CACA,WANgB,CAOhB,YANQ,CAOR,2CAAA,CACA,mDAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA7Be,CA8Bf,WA9Be,CA+Bf,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CACA,uDACC,kBAAA,CAED,0DACC,oBAAA,CAED,8DACC,qBAAA,CAED,yGAEC,cAAA,CACA,eAAA,CACA,oCAAA,CAGD,kDAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA,CAIF,+FAEC,aAAA,CAGD,iDACC,YAAA,CACA,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,WAAA,CACA,iBAxEO,CA2ER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n\\n$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\theight: $clickable-area;\\n\\tpadding: $margin;\\n\\tborder-bottom: 1px solid var(--color-border);\\n\\tborder-radius: var(--border-radius-large) !important;\\n\\n\\t// Load more entry,\\n\\t&:last-child {\\n\\t\\tborder-bottom: none;\\n\\t}\\n\\n\\t&--focused,\\n\\t&:active,\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t}\\n\\n\\t* {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: 32px;\\n\\t\\t&--rounded {\\n\\t\\t\\tborder-radius: math.div($clickable-area, 2);\\n\\t\\t}\\n\\t\\t&--no-preview {\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t}\\n\\t\\t&--with-thumbnail {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t\\t&--with-thumbnail:not(&--rounded) {\\n\\t\\t\\t// compensate for border\\n\\t\\t\\tmax-width: $clickable-area - 2px;\\n\\t\\t\\tmax-height: $clickable-area - 2px;\\n\\t\\t\\tborder: 1px solid var(--color-border);\\n\\t\\t}\\n\\n\\t\\timg {\\n\\t\\t\\t// Make sure to keep ratio\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\n\\t\\t\\tobject-fit: cover;\\n\\t\\t\\tobject-position: center;\\n\\t\\t}\\n\\t}\\n\\n\\t&-icon,\\n\\t&-actions {\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t}\\n\\n\\t&-content {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tflex-wrap: wrap;\\n\\t\\t// Set to minimum and gro from it\\n\\t\\tmin-width: 0;\\n\\t\\tpadding-left: $margin;\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\toverflow: hidden;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tmargin: 1px 0;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t// Use the same color as the `a`\\n\\t\\tcolor: inherit;\\n\\t\\tfont-size: inherit;\\n\\t}\\n\\t&-line-two {\\n\\t\\topacity: .7;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".unified-search__result-placeholder-gradient[data-v-9ed03c40]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-9ed03c40]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-9ed03c40]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-9ed03c40],.unified-search__result-placeholder-line-two[data-v-9ed03c40]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-9ed03c40]{y:5px}.unified-search__result-placeholder-line-two[data-v-9ed03c40]{y:25px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue\"],\"names\":[],\"mappings\":\"AAIA,8DACC,cAAA,CACA,QAAA,CACA,OAAA,CACA,UAAA,CAGD,qDACC,2BAAA,CACA,WAZgB,CAahB,WAZQ,CAcR,0DACC,UAhBe,CAiBf,WAjBe,CAkBf,uBAAA,CACA,uBAAA,CAGD,4HAEC,uBAAA,CACA,UAAA,CACA,MAAA,CAGD,8DACC,KAAA,CAGD,8DACC,MAAA\",\"sourcesContent\":[\"\\n$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result-placeholder-gradient {\\n\\tposition: fixed;\\n\\theight: 0;\\n\\twidth: 0;\\n\\tz-index: -1;\\n}\\n\\n.unified-search__result-placeholder {\\n\\twidth: calc(100% - 2 * #{$margin});\\n\\theight: $clickable-area;\\n\\tmargin: $margin;\\n\\n\\t&-icon {\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\trx: var(--border-radius);\\n\\t\\try: var(--border-radius);\\n\\t}\\n\\n\\t&-line-one,\\n\\t&-line-two {\\n\\t\\twidth: calc(100% - #{$margin + $clickable-area});\\n\\t\\theight: 1em;\\n\\t\\tx: $margin + $clickable-area;\\n\\t}\\n\\n\\t&-line-one {\\n\\t\\ty: 5px;\\n\\t}\\n\\n\\t&-line-two {\\n\\t\\ty: 25px;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".unified-search__trigger[data-v-3d447e9e]{filter:var(--background-image-invert-if-bright)}.unified-search__input-wrapper[data-v-3d447e9e]{position:sticky;z-index:2;top:0;display:inline-flex;flex-direction:column;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__input-wrapper label[for=unified-search__input][data-v-3d447e9e]{align-self:flex-start;font-weight:bold;font-size:19px;margin-left:13px}.unified-search__form-input[data-v-3d447e9e]{margin:0 !important}.unified-search__input-row[data-v-3d447e9e]{display:flex;width:100%;align-items:center}.unified-search__filters[data-v-3d447e9e]{margin:10px 0 10px 5px}.unified-search__filters ul[data-v-3d447e9e]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-3d447e9e]{position:relative;width:100%;margin:10px 0}.unified-search__form[data-v-3d447e9e]::after{right:6px;left:auto}.unified-search__form-input[data-v-3d447e9e],.unified-search__form-reset[data-v-3d447e9e]{margin:3px}.unified-search__form-input[data-v-3d447e9e]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-3d447e9e],.unified-search__form-input[placeholder][data-v-3d447e9e],.unified-search__form-input[data-v-3d447e9e]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-3d447e9e]::-webkit-search-decoration,.unified-search__form-input[data-v-3d447e9e]::-webkit-search-cancel-button,.unified-search__form-input[data-v-3d447e9e]::-webkit-search-results-button,.unified-search__form-input[data-v-3d447e9e]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-3d447e9e],.unified-search__form-input--with-reset[data-v-3d447e9e]{padding-right:34px}.unified-search__form-reset[data-v-3d447e9e],.unified-search__form-submit[data-v-3d447e9e]{position:absolute;top:0;right:4px;width:28px;height:28px;min-height:30px;padding:0;opacity:.5;border:none;background-color:rgba(0,0,0,0);margin-right:0}.unified-search__form-reset[data-v-3d447e9e]:hover,.unified-search__form-reset[data-v-3d447e9e]:focus,.unified-search__form-reset[data-v-3d447e9e]:active,.unified-search__form-submit[data-v-3d447e9e]:hover,.unified-search__form-submit[data-v-3d447e9e]:focus,.unified-search__form-submit[data-v-3d447e9e]:active{opacity:1}.unified-search__form-submit[data-v-3d447e9e]{right:28px}.unified-search__results[data-v-3d447e9e]{display:flex;flex-direction:column;gap:4px}.unified-search__results-header[data-v-3d447e9e]{display:block;margin:10px;margin-bottom:6px;margin-left:13px;color:var(--color-primary-element);font-size:19px;font-weight:bold}.unified-search .unified-search__result-more[data-v-3d447e9e]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-3d447e9e]{margin:10vh 0}.unified-search .empty-content[data-v-3d447e9e] .empty-content__title{font-weight:normal;font-size:var(--default-font-size);padding:0 15px;text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnifiedSearch.vue\"],\"names\":[],\"mappings\":\"AAQC,0CACC,+CAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,qBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAEA,iFACC,qBAAA,CACA,gBAAA,CACA,cAAA,CACA,gBAAA,CAIF,6CACC,mBAAA,CAGD,4CACC,YAAA,CACA,UAAA,CACA,kBAAA,CAGD,0CACC,sBAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,aAAA,CAGA,8CACC,SAnDa,CAoDb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA/DY,CAgEZ,WA/Da,CAiEb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBArFW,CAyFb,2FACC,iBAAA,CACA,KAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,8BAAA,CACA,cAAA,CAEA,uTAGC,SAAA,CAIF,8CACC,UAAA,CAIF,0CAUC,YAAA,CACA,qBAAA,CACA,OAAA,CAXA,iDACC,aAAA,CACA,WAtHM,CAuHN,iBAAA,CACA,gBAAA,CACA,kCAAA,CACA,cAAA,CACA,gBAAA,CAOF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,sEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n\\n$margin: 10px;\\n$input-height: 34px;\\n$input-padding: 6px;\\n\\n.unified-search {\\n\\t&__trigger {\\n\\t\\tfilter: var(--background-image-invert-if-bright);\\n\\t}\\n\\n\\t&__input-wrapper {\\n\\t\\tposition: sticky;\\n\\t\\t// above search results\\n\\t\\tz-index: 2;\\n\\t\\ttop: 0;\\n\\t\\tdisplay: inline-flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tlabel[for=\\\"unified-search__input\\\"] {\\n\\t\\t\\talign-self: flex-start;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tfont-size: 19px;\\n\\t\\t\\tmargin-left: 13px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__form-input {\\n\\t\\tmargin: 0 !important;\\n\\t}\\n\\n\\t&__input-row {\\n\\t\\tdisplay: flex;\\n\\t\\twidth: 100%;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tmargin: $margin 0 $margin math.div($margin, 2);\\n\\t\\tul {\\n\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\tjustify-content: space-between;\\n\\t\\t}\\n\\t}\\n\\n\\t&__form {\\n\\t\\tposition: relative;\\n\\t\\twidth: 100%;\\n\\t\\tmargin: $margin 0;\\n\\n\\t\\t// Loading spinner\\n\\t\\t&::after {\\n\\t\\t\\tright: $input-padding;\\n\\t\\t\\tleft: auto;\\n\\t\\t}\\n\\n\\t\\t&-input,\\n\\t\\t&-reset {\\n\\t\\t\\tmargin: math.div($input-padding, 2);\\n\\t\\t}\\n\\n\\t\\t&-input {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: $input-height;\\n\\t\\t\\tpadding: $input-padding;\\n\\n\\t\\t\\t&,\\n\\t\\t\\t&[placeholder],\\n\\t\\t\\t&::placeholder {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Hide webkit clear search\\n\\t\\t\\t&::-webkit-search-decoration,\\n\\t\\t\\t&::-webkit-search-cancel-button,\\n\\t\\t\\t&::-webkit-search-results-button,\\n\\t\\t\\t&::-webkit-search-results-decoration {\\n\\t\\t\\t\\t-webkit-appearance: none;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Ellipsis earlier if reset button is here\\n\\t\\t\\t.icon-loading-small &,\\n\\t\\t\\t&--with-reset {\\n\\t\\t\\t\\tpadding-right: $input-height;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-reset, &-submit {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 4px;\\n\\t\\t\\twidth: $input-height - $input-padding;\\n\\t\\t\\theight: $input-height - $input-padding;\\n\\t\\t\\tmin-height: 30px;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\topacity: .5;\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\tmargin-right: 0;\\n\\n\\t\\t\\t&:hover,\\n\\t\\t\\t&:focus,\\n\\t\\t\\t&:active {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&-submit {\\n\\t\\t\\tright: 28px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__results {\\n\\t\\t&-header {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmargin: $margin;\\n\\t\\t\\tmargin-bottom: $margin - 4px;\\n\\t\\t\\tmargin-left: 13px;\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\tfont-size: 19px;\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 4px;\\n\\t}\\n\\n\\t.unified-search__result-more::v-deep {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t.empty-content {\\n\\t\\tmargin: 10vh 0;\\n\\n\\t\\t::v-deep .empty-content__title {\\n\\t\\t\\tfont-weight: normal;\\n font-size: var(--default-font-size);\\n\\t\\t\\tpadding: 0 15px;\\n\\t\\t\\ttext-align: center;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 9671;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t9671: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(11025); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","defaultLimit","loadState","minSearchLength","enableLiveSearch","regexFilterIn","regexFilterNot","getTypes","axios","generateOcsUrl","params","from","window","location","pathname","replace","search","data","ocs","Array","isArray","length","console","error","type","query","cursor","cancelToken","request","token","term","cancel","name","directives","ClickOutside","mixins","excludeClickOutsideClasses","props","id","required","ariaLabel","default","open","opened","clickOutsideConfig","handler","middleware","shortcutsDisabled","watch","mounted","document","beforeDestroy","methods","toggleMenu","closeMenu","openMenu","onKeyDown","event","handleFocusOut","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_c","_self","rawName","value","expression","staticClass","class","attrs","toString","on","$event","preventDefault","apply","arguments","_t","_v","components","NcHighlight","thumbnailUrl","title","subline","resourceUrl","icon","rounded","focused","hasValidThumbnail","loaded","computed","isIconUrl","reEmitEvent","onError","onLoad","style","backgroundImage","_e","_s","light","dark","randWidth","_l","placeholder","key","width","NcActionButton","NcActions","NcEmptyContent","HeaderMenu","Magnify","SearchResult","SearchResultPlaceholders","types","cursors","limits","loading","reached","requests","results","triggered","typesIDs","typesNames","typesMap","prev","hasResults","orderedResults","filter","map","list","availableFilters","usedFiltersIn","filters","usedFiltersNot","isShortQuery","isValidQuery","isDoneSearching","isLoading","created","subscribe","unsubscribe","onOpen","onClose","emit","resetForm","onReset","resetState","cancelPendingRequests","Promise","focusInput","onInputEnter","onInput","showError","onInputDebounced","debounce","loadMore","limitIfAny","getResultsList","focusFirst","focusNext","focusPrev","focusIndex","setFocusedIndex","onClickFilter","trim","scopedSlots","_u","fn","proxy","stopPropagation","ref","t","join","domProps","target","composing","indexOf","_k","keyCode","typesIndex","result","index","_b","n","__webpack_nonce__","btoa","getRequestToken","logger","getLoggerBuilder","setApp","detectUser","build","Vue","el","render","h","UnifiedSearch","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file |