1 |
- {"version":3,"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?23e1","webpack://nextcloud/./core/src/components/HeaderMenu.vue?30e1","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=template&id=68d8bb9f&scoped=true&","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?32d3","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?e389","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=template&id=9dc2a344&scoped=true&","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?7f72","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?663e","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=template&id=7a4ff614&scoped=true&","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?1990","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?802c","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=template&id=59134936&scoped=true&","webpack:///nextcloud/core/src/unified-search.js","webpack:///nextcloud/core/src/components/HeaderMenu.vue?vue&type=style&index=0&id=68d8bb9f&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=style&index=0&id=9dc2a344&lang=scss&scoped=true&","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResultPlaceholders.vue?vue&type=style&index=0&id=7a4ff614&lang=scss&scoped=true&","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=style&index=0&id=59134936&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/startup"],"names":["deferred","defaultLimit","loadState","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","options","component","_vm","this","_h","$createElement","_c","_self","directives","name","rawName","value","expression","staticClass","class","opened","attrs","id","ariaLabel","on","$event","preventDefault","toggleMenu","apply","arguments","_t","_v","_obj","focused","resourceUrl","reEmitEvent","rounded","hasValidThumbnail","loaded","icon","isIconUrl","style","backgroundImage","thumbnailUrl","onError","onLoad","_e","title","subline","_s","light","dark","_l","placeholder","key","width","randWidth","open","onOpen","onClose","scopedSlots","_u","fn","proxy","isLoading","stopPropagation","onInputEnter","onReset","ref","t","types","typesNames","join","domProps","target","composing","onInputDebounced","indexOf","_k","keyCode","availableFilters","typesMap","onClickFilter","hasResults","typesIndex","list","limitIfAny","result","index","_b","setFocusedIndex","reached","loading","loadMore","isShortQuery","n","minSearchLength","__webpack_nonce__","btoa","getRequestToken","logger","getLoggerBuilder","setApp","detectUser","build","Vue","methods","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","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","forEach","bind","__webpack_exports__"],"mappings":"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","file":"core-unified-search.js?v=76b5713044cfc8504627","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 GPL-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 = 2\nexport const regexFilterIn = /[^-]in:([a-z_-]+)/ig\nexport const regexFilterNot = /-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\n\t\t: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\"\n\t\t\taria-haspopup=\"menu\"\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\"\n\t\t\t:id=\"`header-menu-${id}`\"\n\t\t\tclass=\"header-menu__wrapper\"\n\t\t\trole=\"menu\">\n\t\t\t<div class=\"header-menu__carret\" />\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}\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\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\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.notifications:not(:empty) ~ #unified-search {\n\torder: -1;\n\t.header-menu__carret {\n\t\tright: 175px;\n\t}\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: 100%;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tcursor: pointer;\n\t\topacity: .6;\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&__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;\n\t\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\n\t\tbackground-color: var(--color-main-background);\n\n\t\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\n\t}\n\n\t&__carret {\n\t\tposition: absolute;\n\t\tright: 128px;\n\t\tbottom: 100%;\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: 100vw;\n\t\tmin-height: calc(44px * 1.5);\n\t\tmax-height: calc(100vh - 50px * 2);\n\t}\n}\n\n</style>\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content 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=68d8bb9f&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./HeaderMenu.vue?vue&type=template&id=68d8bb9f&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=68d8bb9f&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 \"68d8bb9f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{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,\"aria-haspopup\":\"menu\"},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__wrapper\",attrs:{\"id\":(\"header-menu-\" + _vm.id),\"role\":\"menu\"}},[_c('div',{staticClass:\"header-menu__carret\"}),_vm._v(\" \"),_c('div',{staticClass:\"header-menu__content\"},[_vm._t(\"default\")],2)])])}\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\t\t\trole=\"img\">\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<h3 class=\"unified-search__result-line-one\" :title=\"title\">\n\t\t\t\t<Highlight :text=\"title\" :search=\"query\" />\n\t\t\t</h3>\n\t\t\t<h4 v-if=\"subline\" class=\"unified-search__result-line-two\" :title=\"subline\">{{ subline }}</h4>\n\t\t</span>\n\t</a>\n</template>\n\n<script>\nimport Highlight from '@nextcloud/vue/dist/Components/Highlight'\n\nexport default {\n\tname: 'SearchResult',\n\n\tcomponents: {\n\t\tHighlight,\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\theight: $clickable-area;\n\tpadding: $margin;\n\tborder-bottom: 1px solid var(--color-border);\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","import { render, staticRenderFns } from \"./SearchResult.vue?vue&type=template&id=9dc2a344&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=9dc2a344&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 \"9dc2a344\",\n null\n \n)\n\nexport default component.exports","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content 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=9dc2a344&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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:( _obj = {\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}, _obj[_vm.icon] = !_vm.loaded && !_vm.isIconUrl, _obj ),style:({\n\t\t\tbackgroundImage: _vm.isIconUrl ? (\"url(\" + _vm.icon + \")\") : '',\n\t\t}),attrs:{\"role\":\"img\"}},[(_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('h3',{staticClass:\"unified-search__result-line-one\",attrs:{\"title\":_vm.title}},[_c('Highlight',{attrs:{\"text\":_vm.title,\"search\":_vm.query}})],1),_vm._v(\" \"),(_vm.subline)?_c('h4',{staticClass:\"unified-search__result-line-two\",attrs:{\"title\":_vm.subline}},[_vm._v(_vm._s(_vm.subline))]):_vm._e()])])}\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!./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\n\t\t\t\tclass=\"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","import { render, staticRenderFns } from \"./SearchResultPlaceholders.vue?vue&type=template&id=7a4ff614&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=7a4ff614&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 \"7a4ff614\",\n null\n \n)\n\nexport default component.exports","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content 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=7a4ff614&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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)}\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=\"20\"\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<form class=\"unified-search__form\"\n\t\t\t\trole=\"search\"\n\t\t\t\t:class=\"{'icon-loading-small': isLoading}\"\n\t\t\t\t@submit.prevent.stop=\"onInputEnter\"\n\t\t\t\t@reset.prevent.stop=\"onReset\">\n\t\t\t\t<!-- Search input -->\n\t\t\t\t<input ref=\"input\"\n\t\t\t\t\tv-model=\"query\"\n\t\t\t\t\tclass=\"unified-search__form-input\"\n\t\t\t\t\ttype=\"search\"\n\t\t\t\t\t:class=\"{'unified-search__form-input--with-reset': !!query}\"\n\t\t\t\t\t:placeholder=\"t('core', 'Search {types} …', { types: typesNames.join(', ') })\"\n\t\t\t\t\t@input=\"onInputDebounced\"\n\t\t\t\t\t@keypress.enter.prevent.stop=\"onInputEnter\">\n\n\t\t\t\t<!-- Reset search button -->\n\t\t\t\t<input v-if=\"!!query && !isLoading\"\n\t\t\t\t\ttype=\"reset\"\n\t\t\t\t\tclass=\"unified-search__form-reset icon-close\"\n\t\t\t\t\t:aria-label=\"t('core','Reset search')\"\n\t\t\t\t\tvalue=\"\">\n\t\t\t</form>\n\n\t\t\t<!-- Search filters -->\n\t\t\t<Actions v-if=\"availableFilters.length > 1\" class=\"unified-search__filters\" placement=\"bottom\">\n\t\t\t\t<ActionButton v-for=\"type in availableFilters\"\n\t\t\t\t\t:key=\"type\"\n\t\t\t\t\ticon=\"icon-filter\"\n\t\t\t\t\t:title=\"t('core', 'Search for {name} only', { name: typesMap[type] })\"\n\t\t\t\t\t@click=\"onClickFilter(`in:${type}`)\">\n\t\t\t\t\t{{ `in:${type}` }}\n\t\t\t\t</ActionButton>\n\t\t\t</Actions>\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<EmptyContent v-else-if=\"isValidQuery\" icon=\"icon-search\">\n\t\t\t\t<Highlight :text=\"t('core', 'No results for {query}', { query })\" :search=\"query\" />\n\t\t\t</EmptyContent>\n\n\t\t\t<EmptyContent v-else-if=\"!isLoading || isShortQuery\" icon=\"icon-search\">\n\t\t\t\t{{ t('core', 'Start typing to search') }}\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</EmptyContent>\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<!-- 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.prevent=\"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 } from '@nextcloud/event-bus'\nimport { minSearchLength, getTypes, search, defaultLimit, regexFilterIn, regexFilterNot } from '../services/UnifiedSearchService'\nimport { showError } from '@nextcloud/dialogs'\n\nimport ActionButton from '@nextcloud/vue/dist/Components/ActionButton'\nimport Actions from '@nextcloud/vue/dist/Components/Actions'\nimport debounce from 'debounce'\nimport EmptyContent from '@nextcloud/vue/dist/Components/EmptyContent'\nimport Highlight from '@nextcloud/vue/dist/Components/Highlight'\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\tActionButton,\n\t\tActions,\n\t\tEmptyContent,\n\t\tHeaderMenu,\n\t\tHighlight,\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\n\t\t\tdefaultLimit,\n\t\t\tminSearchLength,\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[1])\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[1])\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\tthis.types = await getTypes()\n\t\tthis.logger.debug('Unified Search initialized with the following providers', this.types)\n\t},\n\n\tmounted() {\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\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\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\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.$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: debounce(function(e) {\n\t\t\tthis.onInput(e)\n\t\t}, 200),\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\twidth: 20px;\n\t\theight: 20px;\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\talign-items: center;\n\t\twidth: 100%;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t&__filters {\n\t\tmargin: math.div($margin, 2) $margin;\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;\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 {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tright: 0;\n\t\t\twidth: $input-height - $input-padding;\n\t\t\theight: $input-height - $input-padding;\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\t}\n\n\t&__filters {\n\t\tmargin-right: math.div($margin, 2);\n\t}\n\n\t&__results {\n\t\t&::before {\n\t\t\tdisplay: block;\n\t\t\tmargin: $margin;\n\t\t\tmargin-left: $margin + $input-padding;\n\t\t\tcontent: attr(aria-label);\n\t\t\tcolor: var(--color-primary-element);\n\t\t}\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&\"","import { render, staticRenderFns } from \"./UnifiedSearch.vue?vue&type=template&id=59134936&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=59134936&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 \"59134936\",\n null\n \n)\n\nexport default component.exports","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content 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=59134936&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;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\":20,\"fill-color\":\"var(--color-primary-text)\"}})]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"unified-search__input-wrapper\"},[_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:{\"type\":\"search\",\"placeholder\":_vm.t('core', 'Search {types} …', { types: _vm.typesNames.join(', ') })},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(\" \"),(!!_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.availableFilters.length > 1)?_c('Actions',{staticClass:\"unified-search__filters\",attrs:{\"placement\":\"bottom\"}},_vm._l((_vm.availableFilters),function(type){return _c('ActionButton',{key:type,attrs:{\"icon\":\"icon-filter\",\"title\":_vm.t('core', 'Search for {name} only', { name: _vm.typesMap[type] })},on:{\"click\":function($event){return _vm.onClickFilter((\"in:\" + type))}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s((\"in:\" + type))+\"\\n\\t\\t\\t\")])}),1):_vm._e()],1),_vm._v(\" \"),(!_vm.hasResults)?[(_vm.isLoading)?_c('SearchResultPlaceholders'):(_vm.isValidQuery)?_c('EmptyContent',{attrs:{\"icon\":\"icon-search\"}},[_c('Highlight',{attrs:{\"text\":_vm.t('core', 'No results for {query}', { query: _vm.query }),\"search\":_vm.query}})],1):(!_vm.isLoading || _vm.isShortQuery)?_c('EmptyContent',{attrs:{\"icon\":\"icon-search\"},scopedSlots:_vm._u([(_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(ref,typesIndex){\n\t\t\t\t\tvar list = ref.list;\n\t\t\t\t\tvar type = ref.type;\nreturn _c('ul',{key:type,staticClass:\"unified-search__results\",class:(\"unified-search__results-\" + type),attrs:{\"aria-label\":_vm.typesMap[type]}},[_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.preventDefault();return _vm.loadMore(type)},\"focus\":_vm.setFocusedIndex}}):_vm._e()],1)],2)})],2)}\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 GPL-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/cssWithMappingToString.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, \".notifications:not(:empty)~#unified-search[data-v-68d8bb9f]{order:-1}.notifications:not(:empty)~#unified-search .header-menu__carret[data-v-68d8bb9f]{right:175px}.header-menu__trigger[data-v-68d8bb9f]{display:flex;align-items:center;justify-content:center;width:50px;height:100%;margin:0;padding:0;cursor:pointer;opacity:.6}.header-menu--opened .header-menu__trigger[data-v-68d8bb9f],.header-menu__trigger[data-v-68d8bb9f]:hover,.header-menu__trigger[data-v-68d8bb9f]:focus,.header-menu__trigger[data-v-68d8bb9f]:active{opacity:1}.header-menu__wrapper[data-v-68d8bb9f]{position:fixed;z-index:2000;top:50px;right:0;box-sizing:border-box;margin:0;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))}.header-menu__carret[data-v-68d8bb9f]{position:absolute;right:128px;bottom:100%;width:0;height:0;content:\\\" \\\";pointer-events:none;border:10px solid transparent;border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-68d8bb9f]{overflow:auto;width:350px;max-width:100vw;min-height:66px;max-height:calc(100vh - 100px)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/HeaderMenu.vue\"],\"names\":[],\"mappings\":\"AAqKA,4DACC,QAAA,CACA,iFACC,WAAA,CAID,uCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,cAAA,CACA,UAAA,CAGD,oMAIC,SAAA,CAGD,uCACC,cAAA,CACA,YAAA,CACA,QAAA,CACA,OAAA,CACA,qBAAA,CACA,QAAA,CACA,2DAAA,CACA,6CAAA,CAEA,qDAAA,CAGD,sCACC,iBAAA,CACA,WAAA,CACA,WAAA,CACA,OAAA,CACA,QAAA,CACA,WAAA,CACA,mBAAA,CACA,6BAAA,CACA,gDAAA,CAGD,uCACC,aAAA,CACA,WAAA,CACA,eAAA,CACA,eAAA,CACA,8BAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.notifications:not(:empty) ~ #unified-search {\\n\\torder: -1;\\n\\t.header-menu__carret {\\n\\t\\tright: 175px;\\n\\t}\\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: 100%;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tcursor: pointer;\\n\\t\\topacity: .6;\\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&__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;\\n\\t\\tborder-radius: 0 0 var(--border-radius) var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\n\\t\\tfilter: drop-shadow(0 1px 5px var(--color-box-shadow));\\n\\t}\\n\\n\\t&__carret {\\n\\t\\tposition: absolute;\\n\\t\\tright: 128px;\\n\\t\\tbottom: 100%;\\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: 100vw;\\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/cssWithMappingToString.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-9dc2a344]{display:flex;height:44px;padding:10px;border-bottom:1px solid var(--color-border)}.unified-search__result[data-v-9dc2a344]:last-child{border-bottom:none}.unified-search__result--focused[data-v-9dc2a344],.unified-search__result[data-v-9dc2a344]:active,.unified-search__result[data-v-9dc2a344]:hover,.unified-search__result[data-v-9dc2a344]:focus{background-color:var(--color-background-hover)}.unified-search__result *[data-v-9dc2a344]{cursor:pointer}.unified-search__result-icon[data-v-9dc2a344]{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-9dc2a344]{border-radius:22px}.unified-search__result-icon--no-preview[data-v-9dc2a344]{background-size:32px}.unified-search__result-icon--with-thumbnail[data-v-9dc2a344]{background-size:cover}.unified-search__result-icon--with-thumbnail[data-v-9dc2a344]: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-9dc2a344]{width:100%;height:100%;object-fit:cover;object-position:center}.unified-search__result-icon[data-v-9dc2a344],.unified-search__result-actions[data-v-9dc2a344]{flex:0 0 44px}.unified-search__result-content[data-v-9dc2a344]{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-9dc2a344],.unified-search__result-line-two[data-v-9dc2a344]{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-9dc2a344]{opacity:.7;font-size:var(--default-font-size)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResult.vue\"],\"names\":[],\"mappings\":\"AA0KA,yCACC,YAAA,CACA,WALgB,CAMhB,YALQ,CAMR,2CAAA,CAGA,oDACC,kBAAA,CAGD,gMAIC,8CAAA,CAGD,2CACC,cAAA,CAGD,8CACC,eAAA,CACA,UA3Be,CA4Bf,WA5Be,CA6Bf,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,iBAtEO,CAyER,oGAEC,eAAA,CACA,aAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,aAAA,CACA,iBAAA,CAED,kDACC,UAAA,CACA,kCAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@use \\\"sass:math\\\";\\n\\n$clickable-area: 44px;\\n$margin: 10px;\\n\\n.unified-search__result {\\n\\tdisplay: flex;\\n\\theight: $clickable-area;\\n\\tpadding: $margin;\\n\\tborder-bottom: 1px solid var(--color-border);\\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/cssWithMappingToString.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-7a4ff614]{position:fixed;height:0;width:0;z-index:-1}.unified-search__result-placeholder[data-v-7a4ff614]{width:calc(100% - 2 * 10px);height:44px;margin:10px}.unified-search__result-placeholder-icon[data-v-7a4ff614]{width:44px;height:44px;rx:var(--border-radius);ry:var(--border-radius)}.unified-search__result-placeholder-line-one[data-v-7a4ff614],.unified-search__result-placeholder-line-two[data-v-7a4ff614]{width:calc(100% - 54px);height:1em;x:54px}.unified-search__result-placeholder-line-one[data-v-7a4ff614]{y:5px}.unified-search__result-placeholder-line-two[data-v-7a4ff614]{y:25px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResultPlaceholders.vue\"],\"names\":[],\"mappings\":\"AAgEA,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\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\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/cssWithMappingToString.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-59134936]{width:20px;height:20px}.unified-search__input-wrapper[data-v-59134936]{position:sticky;z-index:2;top:0;display:inline-flex;align-items:center;width:100%;background-color:var(--color-main-background)}.unified-search__filters[data-v-59134936]{margin:5px 10px}.unified-search__filters ul[data-v-59134936]{display:inline-flex;justify-content:space-between}.unified-search__form[data-v-59134936]{position:relative;width:100%;margin:10px}.unified-search__form[data-v-59134936]::after{right:6px;left:auto}.unified-search__form-input[data-v-59134936],.unified-search__form-reset[data-v-59134936]{margin:3px}.unified-search__form-input[data-v-59134936]{width:100%;height:34px;padding:6px}.unified-search__form-input[data-v-59134936],.unified-search__form-input[placeholder][data-v-59134936],.unified-search__form-input[data-v-59134936]::placeholder{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.unified-search__form-input[data-v-59134936]::-webkit-search-decoration,.unified-search__form-input[data-v-59134936]::-webkit-search-cancel-button,.unified-search__form-input[data-v-59134936]::-webkit-search-results-button,.unified-search__form-input[data-v-59134936]::-webkit-search-results-decoration{-webkit-appearance:none}.icon-loading-small .unified-search__form-input[data-v-59134936],.unified-search__form-input--with-reset[data-v-59134936]{padding-right:34px}.unified-search__form-reset[data-v-59134936]{position:absolute;top:0;right:0;width:28px;height:28px;padding:0;opacity:.5;border:none;background-color:transparent;margin-right:0}.unified-search__form-reset[data-v-59134936]:hover,.unified-search__form-reset[data-v-59134936]:focus,.unified-search__form-reset[data-v-59134936]:active{opacity:1}.unified-search__filters[data-v-59134936]{margin-right:5px}.unified-search__results[data-v-59134936]::before{display:block;margin:10px;margin-left:16px;content:attr(aria-label);color:var(--color-primary-element)}.unified-search .unified-search__result-more[data-v-59134936]{color:var(--color-text-maxcontrast)}.unified-search .empty-content[data-v-59134936]{margin:10vh 0}.unified-search .empty-content[data-v-59134936] .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\":\"AAspBC,0CACC,UAAA,CACA,WAAA,CAGD,gDACC,eAAA,CAEA,SAAA,CACA,KAAA,CACA,mBAAA,CACA,kBAAA,CACA,UAAA,CACA,6CAAA,CAGD,0CACC,eAAA,CACA,6CACC,mBAAA,CACA,6BAAA,CAIF,uCACC,iBAAA,CACA,UAAA,CACA,WAhCO,CAmCP,8CACC,SAlCa,CAmCb,SAAA,CAGD,0FAEC,UAAA,CAGD,6CACC,UAAA,CACA,WA9CY,CA+CZ,WA9Ca,CAgDb,iKAGC,eAAA,CACA,kBAAA,CACA,sBAAA,CAID,+SAIC,uBAAA,CAID,0HAEC,kBApEW,CAwEb,6CACC,iBAAA,CACA,KAAA,CACA,OAAA,CACA,UAAA,CACA,WAAA,CACA,SAAA,CACA,UAAA,CACA,WAAA,CACA,4BAAA,CACA,cAAA,CAEA,0JAGC,SAAA,CAKH,0CACC,gBAAA,CAIA,kDACC,aAAA,CACA,WApGM,CAqGN,gBAAA,CACA,wBAAA,CACA,kCAAA,CAIF,8DACC,mCAAA,CAGD,gDACC,aAAA,CAEA,uEACC,kBAAA,CACS,kCAAA,CACT,cAAA,CACA,iBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\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\\twidth: 20px;\\n\\t\\theight: 20px;\\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\\talign-items: center;\\n\\t\\twidth: 100%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tmargin: math.div($margin, 2) $margin;\\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;\\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 {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tright: 0;\\n\\t\\t\\twidth: $input-height - $input-padding;\\n\\t\\t\\theight: $input-height - $input-padding;\\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\\t}\\n\\n\\t&__filters {\\n\\t\\tmargin-right: math.div($margin, 2);\\n\\t}\\n\\n\\t&__results {\\n\\t\\t&::before {\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\tmargin: $margin;\\n\\t\\t\\tmargin-left: $margin + $input-padding;\\n\\t\\t\\tcontent: attr(aria-label);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t}\\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 = 671;","// no baseURI\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\t671: 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\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\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[chunkIds[i]] = 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));","// 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, [874], function() { return __webpack_require__(19566); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"sourceRoot":""}
|