From 37d052a1d49d07383e98660355498395d15cf8eb Mon Sep 17 00:00:00 2001 From: Peter Ringelmann Date: Wed, 8 Jul 2026 15:39:40 +0200 Subject: [PATCH 1/8] feat(core): add unified search loading controller Signed-off-by: Peter Ringelmann --- core/src/services/UnifiedSearchController.ts | 55 +++++++++++++++ core/src/services/UnifiedSearchService.js | 14 ++-- .../services/UnifiedSearchController.spec.ts | 70 +++++++++++++++++++ 3 files changed, 132 insertions(+), 7 deletions(-) create mode 100644 core/src/services/UnifiedSearchController.ts create mode 100644 core/src/tests/services/UnifiedSearchController.spec.ts diff --git a/core/src/services/UnifiedSearchController.ts b/core/src/services/UnifiedSearchController.ts new file mode 100644 index 0000000000000..96475efe5737a --- /dev/null +++ b/core/src/services/UnifiedSearchController.ts @@ -0,0 +1,55 @@ +type SearchItemStatus = 'loading' | 'loaded' | 'failed' | 'blocked' + +import { search as unifiedSearch } from './UnifiedSearchService.js' + +type CategorySearchItem = { + status: SearchItemStatus + entries: unknown[] + cursor: string | null + hasMore: boolean +} + +export class UnifiedSearchController { + private searchItems: Record = {} + private requestId: number = 0 + constructor() {} + + search(query: string, categories: string[]): void { + this.requestId++ + const dispatchId = this.requestId + + categories.forEach((category) => { + this.searchItems[category] = { + status: 'loading', + entries: [], + cursor: null, + hasMore: false, + } + const { request } = unifiedSearch({ + type: category, + query, + cursor: null, + }) + + request().then((response) => { + if (this.requestId !== dispatchId) { + // A new search has been started, ignore this result + return + } + + const { entries, cursor, hasMore } = response.data.ocs.data + + this.searchItems[category] = { + status: 'loaded', + entries, + cursor, + hasMore, + } + }) + }) + } + + getSnapshot(): Record { + return { ...this.searchItems } + } +} diff --git a/core/src/services/UnifiedSearchService.js b/core/src/services/UnifiedSearchService.js index 7cb59bbba3a46..dd42c479f88b1 100644 --- a/core/src/services/UnifiedSearchService.js +++ b/core/src/services/UnifiedSearchService.js @@ -43,13 +43,13 @@ export async function getProviders() { * * @param {object} options destructuring object * @param {string} options.type the type to search - * @param {string} options.query the search - * @param {number|string|undefined} options.cursor the offset for paginated searches - * @param {string} options.since the search - * @param {string} options.until the search - * @param {string} options.limit the search - * @param {string} options.person the search - * @param {object} options.extraQueries additional queries to filter search results + * @param {string} options.query the search term + * @param {number|string|null} [options.cursor] the offset for paginated searches + * @param {string} [options.since] start of the date-range filter + * @param {string} [options.until] end of the date-range filter + * @param {string} [options.limit] maximum number of results + * @param {string} [options.person] filter results by person + * @param {object} [options.extraQueries] additional queries to filter search results * @return {object} {request: Promise, cancel: Promise} */ export function search({ type, query, cursor, since, until, limit, person, extraQueries = {} }) { diff --git a/core/src/tests/services/UnifiedSearchController.spec.ts b/core/src/tests/services/UnifiedSearchController.spec.ts new file mode 100644 index 0000000000000..cf52411668310 --- /dev/null +++ b/core/src/tests/services/UnifiedSearchController.spec.ts @@ -0,0 +1,70 @@ +/** + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { UnifiedSearchController } from '../../services/UnifiedSearchController.ts' + +const service = vi.hoisted(() => ({ + search: vi.fn(), + getProviders: vi.fn(), + getContacts: vi.fn(), +})) +vi.mock('../../services/UnifiedSearchService.js', () => service) + +/** + * Deferred stand-in for a provider's `search()` return value. Resolve it to + * make that provider arrive on demand. + */ +function deferredProvider() { + const { promise, resolve, reject } = Promise.withResolvers<{ entries: unknown[] }>() + return { + cancel: vi.fn(), + request: async () => { + const { entries } = await promise + return { data: { ocs: { data: { entries } } } } + }, + resolve: (entries: unknown[] = []) => resolve({ entries }), + reject, + } +} + +beforeEach(() => { + vi.useFakeTimers() +}) + +afterEach(() => { + vi.clearAllMocks() + vi.useRealTimers() +}) + +describe('UnifiedSearchController', () => { + it('sets loading state on all categories when a search is started', async () => { + service.search.mockImplementation(() => deferredProvider()) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['category1', 'category2']) + + expect(searchController.getSnapshot()).toEqual({ + category1: { status: 'loading', entries: [], cursor: null, hasMore: false }, + category2: { status: 'loading', entries: [], cursor: null, hasMore: false }, + }) + }) + + it('returns the results for a single category', async () => { + const results = deferredProvider() + service.search.mockReturnValueOnce(results) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['category1']) + + results.resolve(['Some result']) + + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot()).toEqual({ + category1: { status: 'loaded', entries: ['Some result'], cursor: undefined, hasMore: undefined }, + }) + }) +}) + From 00077e0dc090a6ce21ccdd8ebc9aef1b5d5ba9fc Mon Sep 17 00:00:00 2001 From: Peter Ringelmann Date: Wed, 8 Jul 2026 16:55:33 +0200 Subject: [PATCH 2/8] feat(core): order search results by priority with blocking and reveal Signed-off-by: Peter Ringelmann --- core/src/services/UnifiedSearchController.ts | 35 ++++- .../services/UnifiedSearchController.spec.ts | 125 +++++++++++++++++- 2 files changed, 153 insertions(+), 7 deletions(-) diff --git a/core/src/services/UnifiedSearchController.ts b/core/src/services/UnifiedSearchController.ts index 96475efe5737a..ddd1ae4ff6f6d 100644 --- a/core/src/services/UnifiedSearchController.ts +++ b/core/src/services/UnifiedSearchController.ts @@ -38,17 +38,50 @@ export class UnifiedSearchController { } const { entries, cursor, hasMore } = response.data.ocs.data - this.searchItems[category] = { status: 'loaded', entries, cursor, hasMore, } + + this.reconcileCategoryStatuses(categories) + }).catch(() => { + if (this.requestId !== dispatchId) { + return + } + this.searchItems[category] = { + status: 'failed', + entries: [], + cursor: null, + hasMore: false, + } + this.reconcileCategoryStatuses(categories) }) }) } + reconcileCategoryStatuses(categories: string[]): void { + categories.forEach((category) => { + if (['loading', 'failed'].includes(this.searchItems[category].status)) { + return + } + this.searchItems[category].status = this.categoryShouldBlock(category, categories) ? 'blocked' : 'loaded' + }) + } + + categoryShouldBlock(category: string, categories: string[]): boolean { + const categoryItem = this.searchItems[category] + if (!categoryItem) { + return false + } + + return categories.slice(0, categories.indexOf(category)).some((c) => { + const item = this.searchItems[c] + return item && ['loading', 'blocked'].includes(item.status) + }) + } + getSnapshot(): Record { return { ...this.searchItems } } diff --git a/core/src/tests/services/UnifiedSearchController.spec.ts b/core/src/tests/services/UnifiedSearchController.spec.ts index cf52411668310..11c7b1183f13b 100644 --- a/core/src/tests/services/UnifiedSearchController.spec.ts +++ b/core/src/tests/services/UnifiedSearchController.spec.ts @@ -29,6 +29,17 @@ function deferredProvider() { } } +/** + * Register one deferred provider per category type on the mocked service. + * Returns the map so a test can resolve/reject a specific category on demand, + * e.g. `providers.deck.resolve(['a result'])`. + */ +function mockProviders(types: string[]) { + const providers = Object.fromEntries(types.map((type) => [type, deferredProvider()])) + service.search.mockImplementation(({ type }: { type: string }) => providers[type]) + return providers +} + beforeEach(() => { vi.useFakeTimers() }) @@ -43,11 +54,11 @@ describe('UnifiedSearchController', () => { service.search.mockImplementation(() => deferredProvider()) const searchController = new UnifiedSearchController() - searchController.search('query', ['category1', 'category2']) + searchController.search('query', ['files', 'talk']) expect(searchController.getSnapshot()).toEqual({ - category1: { status: 'loading', entries: [], cursor: null, hasMore: false }, - category2: { status: 'loading', entries: [], cursor: null, hasMore: false }, + files: { status: 'loading', entries: [], cursor: null, hasMore: false }, + talk: { status: 'loading', entries: [], cursor: null, hasMore: false }, }) }) @@ -56,15 +67,117 @@ describe('UnifiedSearchController', () => { service.search.mockReturnValueOnce(results) const searchController = new UnifiedSearchController() - searchController.search('query', ['category1']) + searchController.search('query', ['files']) results.resolve(['Some result']) await vi.advanceTimersByTimeAsync(0) expect(searchController.getSnapshot()).toEqual({ - category1: { status: 'loaded', entries: ['Some result'], cursor: undefined, hasMore: undefined }, + files: { status: 'loaded', entries: ['Some result'], cursor: undefined, hasMore: undefined }, + }) + }) + + it('marks category as blocked if it arrived out of order', async () => { + const providers = mockProviders(['files', 'talk', 'deck']) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk', 'deck']) + + providers.deck.resolve(['Deck result']) + + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot()).toEqual({ + files: { status: 'loading', entries: [], cursor: null, hasMore: false }, + talk: { status: 'loading', entries: [], cursor: null, hasMore: false }, + deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, }) }) -}) + it('marks category as loaded if it is unblocked (i.e., previous categories are loaded)', async () => { + const providers = mockProviders(['files', 'talk', 'deck']) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk', 'deck']) + + providers.deck.resolve(['Deck result']) + + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot()).toEqual({ + files: { status: 'loading', entries: [], cursor: null, hasMore: false }, + talk: { status: 'loading', entries: [], cursor: null, hasMore: false }, + deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + }) + + providers.files.resolve(['Files result']) + providers.talk.resolve(['Talk result']) + + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot()).toEqual({ + files: { status: 'loaded', entries: ['Files result'], cursor: undefined, hasMore: undefined }, + talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, + deck: { status: 'loaded', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + }) + }) + + it('does not change the status of a category that has failed', async () => { + const providers = mockProviders(['files', 'talk', 'deck']) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk', 'deck']) + + providers.talk.resolve(['Talk result']) + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot()).toEqual({ + files: { status: 'loading', entries: [], cursor: null, hasMore: false }, + talk: { status: 'blocked', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, + deck: { status: 'loading', entries: [], cursor: null, hasMore: false }, + }) + + // Ensure that we also reconcile status on failure. + // This is important because a category that has failed may have been blocking + // other categories, and if it fails, those categories should be unblocked. + providers.files.reject(['Files result']) + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot()).toEqual({ + files: { status: 'failed', entries: [], cursor: null, hasMore: false }, + talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, + deck: { status: 'loading', entries: [], cursor: null, hasMore: false }, + }) + }) + + it('ignores a stale response from a superseded search', async () => { + const first = mockProviders(['files', 'talk']) + + const searchController = new UnifiedSearchController() + searchController.search('first', ['files', 'talk']) + + // A newer search supersedes the first before it resolves. + const second = mockProviders(['files', 'talk']) + searchController.search('second', ['files', 'talk']) + + // The stale (first) responses arrive late and must be ignored. + first.files.resolve(['Stale files']) + first.talk.resolve(['Stale talk']) + await vi.advanceTimersByTimeAsync(0) + + // State still reflects the second search: both categories pending. + expect(searchController.getSnapshot()).toEqual({ + files: { status: 'loading', entries: [], cursor: null, hasMore: false }, + talk: { status: 'loading', entries: [], cursor: null, hasMore: false }, + }) + + // The live (second) search still resolves normally. + second.files.resolve(['Live files']) + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot().files).toEqual({ + status: 'loaded', entries: ['Live files'], cursor: undefined, hasMore: undefined, + }) + }) +}) From 59214baffb5d2e7540ab865ed91d28fceff421f1 Mon Sep 17 00:00:00 2001 From: Peter Ringelmann Date: Wed, 8 Jul 2026 18:15:09 +0200 Subject: [PATCH 3/8] feat(core): reveal blocked search results on a timer Signed-off-by: Peter Ringelmann --- core/src/services/UnifiedSearchController.ts | 30 ++++- .../services/UnifiedSearchController.spec.ts | 123 ++++++++++++++++-- 2 files changed, 138 insertions(+), 15 deletions(-) diff --git a/core/src/services/UnifiedSearchController.ts b/core/src/services/UnifiedSearchController.ts index ddd1ae4ff6f6d..a92418814117c 100644 --- a/core/src/services/UnifiedSearchController.ts +++ b/core/src/services/UnifiedSearchController.ts @@ -1,6 +1,8 @@ +import { search as unifiedSearch } from './UnifiedSearchService.js' + type SearchItemStatus = 'loading' | 'loaded' | 'failed' | 'blocked' -import { search as unifiedSearch } from './UnifiedSearchService.js' +export const REVEAL_INTERVAL = 1500 // milliseconds type CategorySearchItem = { status: SearchItemStatus @@ -12,12 +14,14 @@ type CategorySearchItem = { export class UnifiedSearchController { private searchItems: Record = {} private requestId: number = 0 - constructor() {} + private revealTimer: ReturnType | null = null search(query: string, categories: string[]): void { this.requestId++ const dispatchId = this.requestId + this.startRevealTimer() + categories.forEach((category) => { this.searchItems[category] = { status: 'loading', @@ -70,6 +74,14 @@ export class UnifiedSearchController { }) } + unblockAllCategories(categories: string[]): void { + categories.forEach((category) => { + if (this.searchItems[category].status === 'blocked') { + this.searchItems[category].status = 'loaded' + } + }) + } + categoryShouldBlock(category: string, categories: string[]): boolean { const categoryItem = this.searchItems[category] if (!categoryItem) { @@ -82,6 +94,20 @@ export class UnifiedSearchController { }) } + startRevealTimer(): void { + if (this.revealTimer) { + clearTimeout(this.revealTimer) + } + this.revealTimer = setTimeout(() => { + const categories = Object.keys(this.searchItems) + const hasPendingCategories = categories.some((category) => ['loading', 'blocked'].includes(this.searchItems[category].status)) + this.unblockAllCategories(categories) + if (hasPendingCategories) { + this.startRevealTimer() + } + }, REVEAL_INTERVAL) + } + getSnapshot(): Record { return { ...this.searchItems } } diff --git a/core/src/tests/services/UnifiedSearchController.spec.ts b/core/src/tests/services/UnifiedSearchController.spec.ts index 11c7b1183f13b..98b85998d13a3 100644 --- a/core/src/tests/services/UnifiedSearchController.spec.ts +++ b/core/src/tests/services/UnifiedSearchController.spec.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { UnifiedSearchController } from '../../services/UnifiedSearchController.ts' +import { REVEAL_INTERVAL, UnifiedSearchController } from '../../services/UnifiedSearchController.ts' const service = vi.hoisted(() => ({ search: vi.fn(), @@ -40,6 +40,12 @@ function mockProviders(types: string[]) { return providers } +/** + * The initial per-category state before any provider has resolved. Identical + * for every pending category, so tests assert against this shared shape. + */ +const loading = { status: 'loading', entries: [], cursor: null, hasMore: false } + beforeEach(() => { vi.useFakeTimers() }) @@ -57,8 +63,8 @@ describe('UnifiedSearchController', () => { searchController.search('query', ['files', 'talk']) expect(searchController.getSnapshot()).toEqual({ - files: { status: 'loading', entries: [], cursor: null, hasMore: false }, - talk: { status: 'loading', entries: [], cursor: null, hasMore: false }, + files: loading, + talk: loading, }) }) @@ -89,8 +95,8 @@ describe('UnifiedSearchController', () => { await vi.advanceTimersByTimeAsync(0) expect(searchController.getSnapshot()).toEqual({ - files: { status: 'loading', entries: [], cursor: null, hasMore: false }, - talk: { status: 'loading', entries: [], cursor: null, hasMore: false }, + files: loading, + talk: loading, deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, }) }) @@ -106,8 +112,8 @@ describe('UnifiedSearchController', () => { await vi.advanceTimersByTimeAsync(0) expect(searchController.getSnapshot()).toEqual({ - files: { status: 'loading', entries: [], cursor: null, hasMore: false }, - talk: { status: 'loading', entries: [], cursor: null, hasMore: false }, + files: loading, + talk: loading, deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, }) @@ -133,9 +139,9 @@ describe('UnifiedSearchController', () => { await vi.advanceTimersByTimeAsync(0) expect(searchController.getSnapshot()).toEqual({ - files: { status: 'loading', entries: [], cursor: null, hasMore: false }, + files: loading, talk: { status: 'blocked', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, - deck: { status: 'loading', entries: [], cursor: null, hasMore: false }, + deck: loading, }) // Ensure that we also reconcile status on failure. @@ -147,7 +153,7 @@ describe('UnifiedSearchController', () => { expect(searchController.getSnapshot()).toEqual({ files: { status: 'failed', entries: [], cursor: null, hasMore: false }, talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, - deck: { status: 'loading', entries: [], cursor: null, hasMore: false }, + deck: loading, }) }) @@ -168,8 +174,8 @@ describe('UnifiedSearchController', () => { // State still reflects the second search: both categories pending. expect(searchController.getSnapshot()).toEqual({ - files: { status: 'loading', entries: [], cursor: null, hasMore: false }, - talk: { status: 'loading', entries: [], cursor: null, hasMore: false }, + files: loading, + talk: loading, }) // The live (second) search still resolves normally. @@ -177,7 +183,98 @@ describe('UnifiedSearchController', () => { await vi.advanceTimersByTimeAsync(0) expect(searchController.getSnapshot().files).toEqual({ - status: 'loaded', entries: ['Live files'], cursor: undefined, hasMore: undefined, + status: 'loaded', + entries: ['Live files'], + cursor: undefined, + hasMore: undefined, }) }) + + it('marks blocked categories as loaded after a certain amount of time has elapsed', async () => { + const providers = mockProviders(['files', 'talk', 'deck']) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk', 'deck']) + + providers.deck.resolve(['Deck result']) + + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot()).toEqual({ + files: loading, + talk: loading, + deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + }) + + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + + expect(searchController.getSnapshot()).toEqual({ + files: loading, + talk: loading, + deck: { status: 'loaded', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + }) + }) + + it('keeps flushing on later timer cycles while categories are still loading', async () => { + const providers = mockProviders(['files', 'talk', 'deck']) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk', 'deck']) + + // deck arrives out of order and is revealed by the first flush. + providers.deck.resolve(['Deck result']) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + expect(searchController.getSnapshot().deck.status).toBe('loaded') + + // A later flush passes with nothing blocked while files/talk keep loading. + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + + // talk now arrives out of order (files still loading) and is blocked. + providers.talk.resolve(['Talk result']) + await vi.advanceTimersByTimeAsync(0) + expect(searchController.getSnapshot().talk.status).toBe('blocked') + + // The timer must still be running to flush talk on a later cycle. + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + expect(searchController.getSnapshot().talk.status).toBe('loaded') + }) + + it('stops the reveal timer once every category has resolved', async () => { + const providers = mockProviders(['files', 'talk']) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk']) + + providers.files.resolve(['Files result']) + providers.talk.resolve(['Talk result']) + await vi.advanceTimersByTimeAsync(0) + + // Nothing is loading or blocked, so the next flush should not re-arm. + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + expect(vi.getTimerCount()).toBe(0) + }) + + it('does not let a previous search\'s reveal timer fire against a new search', async () => { + const first = mockProviders(['files', 'talk', 'deck']) + + const searchController = new UnifiedSearchController() + searchController.search('first', ['files', 'talk', 'deck']) + + // First search: deck is blocked and its reveal timer is pending. + first.deck.resolve(['First deck']) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL - 500) + expect(searchController.getSnapshot().deck.status).toBe('blocked') + + // A new search starts before the first timer fires. It must clear that + // timer, otherwise the stale flush would reveal the new search's deck early. + const second = mockProviders(['files', 'talk', 'deck']) + searchController.search('second', ['files', 'talk', 'deck']) + + second.deck.resolve(['Second deck']) + // Advance past when the first search's timer would have fired (500ms from + // now) but before the second search's timer is due. + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL - 500) + + expect(searchController.getSnapshot().deck.status).toBe('blocked') + }) }) From a2057db41b83f69ec2994d8b3b81c9dcc18f425f Mon Sep 17 00:00:00 2001 From: Peter Ringelmann Date: Wed, 8 Jul 2026 18:24:50 +0200 Subject: [PATCH 4/8] fix(core): reset unified search state on each new search Signed-off-by: Peter Ringelmann --- core/src/services/UnifiedSearchController.ts | 1 + .../services/UnifiedSearchController.spec.ts | 338 ++++++++++-------- 2 files changed, 183 insertions(+), 156 deletions(-) diff --git a/core/src/services/UnifiedSearchController.ts b/core/src/services/UnifiedSearchController.ts index a92418814117c..cb54e2954bde2 100644 --- a/core/src/services/UnifiedSearchController.ts +++ b/core/src/services/UnifiedSearchController.ts @@ -17,6 +17,7 @@ export class UnifiedSearchController { private revealTimer: ReturnType | null = null search(query: string, categories: string[]): void { + this.searchItems = {} this.requestId++ const dispatchId = this.requestId diff --git a/core/src/tests/services/UnifiedSearchController.spec.ts b/core/src/tests/services/UnifiedSearchController.spec.ts index 98b85998d13a3..f2e20ae4a319f 100644 --- a/core/src/tests/services/UnifiedSearchController.spec.ts +++ b/core/src/tests/services/UnifiedSearchController.spec.ts @@ -56,225 +56,251 @@ afterEach(() => { }) describe('UnifiedSearchController', () => { - it('sets loading state on all categories when a search is started', async () => { - service.search.mockImplementation(() => deferredProvider()) + describe('loading state', () => { + it('sets loading state on all categories when a search is started', async () => { + service.search.mockImplementation(() => deferredProvider()) - const searchController = new UnifiedSearchController() - searchController.search('query', ['files', 'talk']) + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk']) - expect(searchController.getSnapshot()).toEqual({ - files: loading, - talk: loading, + expect(searchController.getSnapshot()).toEqual({ + files: loading, + talk: loading, + }) }) - }) - it('returns the results for a single category', async () => { - const results = deferredProvider() - service.search.mockReturnValueOnce(results) + it('returns the results for a single category', async () => { + const results = deferredProvider() + service.search.mockReturnValueOnce(results) - const searchController = new UnifiedSearchController() - searchController.search('query', ['files']) + const searchController = new UnifiedSearchController() + searchController.search('query', ['files']) - results.resolve(['Some result']) + results.resolve(['Some result']) - await vi.advanceTimersByTimeAsync(0) + await vi.advanceTimersByTimeAsync(0) - expect(searchController.getSnapshot()).toEqual({ - files: { status: 'loaded', entries: ['Some result'], cursor: undefined, hasMore: undefined }, + expect(searchController.getSnapshot()).toEqual({ + files: { status: 'loaded', entries: ['Some result'], cursor: undefined, hasMore: undefined }, + }) }) }) - it('marks category as blocked if it arrived out of order', async () => { - const providers = mockProviders(['files', 'talk', 'deck']) + describe('ordering and blocking', () => { + it('marks category as blocked if it arrived out of order', async () => { + const providers = mockProviders(['files', 'talk', 'deck']) - const searchController = new UnifiedSearchController() - searchController.search('query', ['files', 'talk', 'deck']) + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk', 'deck']) - providers.deck.resolve(['Deck result']) + providers.deck.resolve(['Deck result']) - await vi.advanceTimersByTimeAsync(0) + await vi.advanceTimersByTimeAsync(0) - expect(searchController.getSnapshot()).toEqual({ - files: loading, - talk: loading, - deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + expect(searchController.getSnapshot()).toEqual({ + files: loading, + talk: loading, + deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + }) }) - }) - it('marks category as loaded if it is unblocked (i.e., previous categories are loaded)', async () => { - const providers = mockProviders(['files', 'talk', 'deck']) + it('marks category as loaded if it is unblocked (i.e., previous categories are loaded)', async () => { + const providers = mockProviders(['files', 'talk', 'deck']) - const searchController = new UnifiedSearchController() - searchController.search('query', ['files', 'talk', 'deck']) + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk', 'deck']) - providers.deck.resolve(['Deck result']) + providers.deck.resolve(['Deck result']) - await vi.advanceTimersByTimeAsync(0) + await vi.advanceTimersByTimeAsync(0) - expect(searchController.getSnapshot()).toEqual({ - files: loading, - talk: loading, - deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, - }) + expect(searchController.getSnapshot()).toEqual({ + files: loading, + talk: loading, + deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + }) - providers.files.resolve(['Files result']) - providers.talk.resolve(['Talk result']) + providers.files.resolve(['Files result']) + providers.talk.resolve(['Talk result']) - await vi.advanceTimersByTimeAsync(0) + await vi.advanceTimersByTimeAsync(0) - expect(searchController.getSnapshot()).toEqual({ - files: { status: 'loaded', entries: ['Files result'], cursor: undefined, hasMore: undefined }, - talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, - deck: { status: 'loaded', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + expect(searchController.getSnapshot()).toEqual({ + files: { status: 'loaded', entries: ['Files result'], cursor: undefined, hasMore: undefined }, + talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, + deck: { status: 'loaded', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + }) }) - }) - it('does not change the status of a category that has failed', async () => { - const providers = mockProviders(['files', 'talk', 'deck']) + it('does not change the status of a category that has failed', async () => { + const providers = mockProviders(['files', 'talk', 'deck']) - const searchController = new UnifiedSearchController() - searchController.search('query', ['files', 'talk', 'deck']) + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk', 'deck']) - providers.talk.resolve(['Talk result']) - await vi.advanceTimersByTimeAsync(0) + providers.talk.resolve(['Talk result']) + await vi.advanceTimersByTimeAsync(0) - expect(searchController.getSnapshot()).toEqual({ - files: loading, - talk: { status: 'blocked', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, - deck: loading, - }) + expect(searchController.getSnapshot()).toEqual({ + files: loading, + talk: { status: 'blocked', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, + deck: loading, + }) - // Ensure that we also reconcile status on failure. - // This is important because a category that has failed may have been blocking - // other categories, and if it fails, those categories should be unblocked. - providers.files.reject(['Files result']) - await vi.advanceTimersByTimeAsync(0) + // Ensure that we also reconcile status on failure. + // This is important because a category that has failed may have been blocking + // other categories, and if it fails, those categories should be unblocked. + providers.files.reject(['Files result']) + await vi.advanceTimersByTimeAsync(0) - expect(searchController.getSnapshot()).toEqual({ - files: { status: 'failed', entries: [], cursor: null, hasMore: false }, - talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, - deck: loading, + expect(searchController.getSnapshot()).toEqual({ + files: { status: 'failed', entries: [], cursor: null, hasMore: false }, + talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, + deck: loading, + }) }) }) - it('ignores a stale response from a superseded search', async () => { - const first = mockProviders(['files', 'talk']) + describe('stale search guard', () => { + it('ignores a stale response from a superseded search', async () => { + const first = mockProviders(['files', 'talk']) + + const searchController = new UnifiedSearchController() + searchController.search('first', ['files', 'talk']) + + // A newer search supersedes the first before it resolves. + const second = mockProviders(['files', 'talk']) + searchController.search('second', ['files', 'talk']) + + // The stale (first) responses arrive late and must be ignored. + first.files.resolve(['Stale files']) + first.talk.resolve(['Stale talk']) + await vi.advanceTimersByTimeAsync(0) + + // State still reflects the second search: both categories pending. + expect(searchController.getSnapshot()).toEqual({ + files: loading, + talk: loading, + }) + + // The live (second) search still resolves normally. + second.files.resolve(['Live files']) + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot().files).toEqual({ + status: 'loaded', + entries: ['Live files'], + cursor: undefined, + hasMore: undefined, + }) + }) + }) - const searchController = new UnifiedSearchController() - searchController.search('first', ['files', 'talk']) + describe('resetting between searches', () => { + it('drops categories that are not part of a newer, narrower search', async () => { + mockProviders(['files', 'talk', 'deck']) - // A newer search supersedes the first before it resolves. - const second = mockProviders(['files', 'talk']) - searchController.search('second', ['files', 'talk']) + const searchController = new UnifiedSearchController() + searchController.search('first', ['files', 'talk', 'deck']) - // The stale (first) responses arrive late and must be ignored. - first.files.resolve(['Stale files']) - first.talk.resolve(['Stale talk']) - await vi.advanceTimersByTimeAsync(0) + // A narrower search replaces the first. The dropped categories must + // not linger in the snapshot. + mockProviders(['files']) + searchController.search('second', ['files']) - // State still reflects the second search: both categories pending. - expect(searchController.getSnapshot()).toEqual({ - files: loading, - talk: loading, - }) - - // The live (second) search still resolves normally. - second.files.resolve(['Live files']) - await vi.advanceTimersByTimeAsync(0) - - expect(searchController.getSnapshot().files).toEqual({ - status: 'loaded', - entries: ['Live files'], - cursor: undefined, - hasMore: undefined, + expect(searchController.getSnapshot()).toEqual({ + files: loading, + }) }) }) - it('marks blocked categories as loaded after a certain amount of time has elapsed', async () => { - const providers = mockProviders(['files', 'talk', 'deck']) + describe('reveal timer', () => { + it('marks blocked categories as loaded after a certain amount of time has elapsed', async () => { + const providers = mockProviders(['files', 'talk', 'deck']) - const searchController = new UnifiedSearchController() - searchController.search('query', ['files', 'talk', 'deck']) + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk', 'deck']) - providers.deck.resolve(['Deck result']) + providers.deck.resolve(['Deck result']) - await vi.advanceTimersByTimeAsync(0) + await vi.advanceTimersByTimeAsync(0) - expect(searchController.getSnapshot()).toEqual({ - files: loading, - talk: loading, - deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, - }) + expect(searchController.getSnapshot()).toEqual({ + files: loading, + talk: loading, + deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + }) - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) - expect(searchController.getSnapshot()).toEqual({ - files: loading, - talk: loading, - deck: { status: 'loaded', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + expect(searchController.getSnapshot()).toEqual({ + files: loading, + talk: loading, + deck: { status: 'loaded', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + }) }) - }) - it('keeps flushing on later timer cycles while categories are still loading', async () => { - const providers = mockProviders(['files', 'talk', 'deck']) + it('keeps flushing on later timer cycles while categories are still loading', async () => { + const providers = mockProviders(['files', 'talk', 'deck']) - const searchController = new UnifiedSearchController() - searchController.search('query', ['files', 'talk', 'deck']) + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk', 'deck']) - // deck arrives out of order and is revealed by the first flush. - providers.deck.resolve(['Deck result']) - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) - expect(searchController.getSnapshot().deck.status).toBe('loaded') + // deck arrives out of order and is revealed by the first flush. + providers.deck.resolve(['Deck result']) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + expect(searchController.getSnapshot().deck.status).toBe('loaded') - // A later flush passes with nothing blocked while files/talk keep loading. - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + // A later flush passes with nothing blocked while files/talk keep loading. + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) - // talk now arrives out of order (files still loading) and is blocked. - providers.talk.resolve(['Talk result']) - await vi.advanceTimersByTimeAsync(0) - expect(searchController.getSnapshot().talk.status).toBe('blocked') + // talk now arrives out of order (files still loading) and is blocked. + providers.talk.resolve(['Talk result']) + await vi.advanceTimersByTimeAsync(0) + expect(searchController.getSnapshot().talk.status).toBe('blocked') - // The timer must still be running to flush talk on a later cycle. - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) - expect(searchController.getSnapshot().talk.status).toBe('loaded') - }) + // The timer must still be running to flush talk on a later cycle. + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + expect(searchController.getSnapshot().talk.status).toBe('loaded') + }) - it('stops the reveal timer once every category has resolved', async () => { - const providers = mockProviders(['files', 'talk']) + it('stops the reveal timer once every category has resolved', async () => { + const providers = mockProviders(['files', 'talk']) - const searchController = new UnifiedSearchController() - searchController.search('query', ['files', 'talk']) + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk']) - providers.files.resolve(['Files result']) - providers.talk.resolve(['Talk result']) - await vi.advanceTimersByTimeAsync(0) + providers.files.resolve(['Files result']) + providers.talk.resolve(['Talk result']) + await vi.advanceTimersByTimeAsync(0) - // Nothing is loading or blocked, so the next flush should not re-arm. - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) - expect(vi.getTimerCount()).toBe(0) - }) + // Nothing is loading or blocked, so the next flush should not re-arm. + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + expect(vi.getTimerCount()).toBe(0) + }) - it('does not let a previous search\'s reveal timer fire against a new search', async () => { - const first = mockProviders(['files', 'talk', 'deck']) + it('does not let a previous search\'s reveal timer fire against a new search', async () => { + const first = mockProviders(['files', 'talk', 'deck']) - const searchController = new UnifiedSearchController() - searchController.search('first', ['files', 'talk', 'deck']) + const searchController = new UnifiedSearchController() + searchController.search('first', ['files', 'talk', 'deck']) - // First search: deck is blocked and its reveal timer is pending. - first.deck.resolve(['First deck']) - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL - 500) - expect(searchController.getSnapshot().deck.status).toBe('blocked') + // First search: deck is blocked and its reveal timer is pending. + first.deck.resolve(['First deck']) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL - 500) + expect(searchController.getSnapshot().deck.status).toBe('blocked') - // A new search starts before the first timer fires. It must clear that - // timer, otherwise the stale flush would reveal the new search's deck early. - const second = mockProviders(['files', 'talk', 'deck']) - searchController.search('second', ['files', 'talk', 'deck']) + // A new search starts before the first timer fires. It must clear that + // timer, otherwise the stale flush would reveal the new search's deck early. + const second = mockProviders(['files', 'talk', 'deck']) + searchController.search('second', ['files', 'talk', 'deck']) - second.deck.resolve(['Second deck']) - // Advance past when the first search's timer would have fired (500ms from - // now) but before the second search's timer is due. - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL - 500) + second.deck.resolve(['Second deck']) + // Advance past when the first search's timer would have fired (500ms from + // now) but before the second search's timer is due. + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL - 500) - expect(searchController.getSnapshot().deck.status).toBe('blocked') + expect(searchController.getSnapshot().deck.status).toBe('blocked') + }) }) }) From 4626e70d77f44688a60045434532ee924cfdcfed Mon Sep 17 00:00:00 2001 From: Peter Ringelmann Date: Thu, 9 Jul 2026 10:15:28 +0200 Subject: [PATCH 5/8] feat(core): cancel and dispose unified search requests Signed-off-by: Peter Ringelmann --- core/src/services/UnifiedSearchController.ts | 83 ++++++++++++++----- .../services/UnifiedSearchController.spec.ts | 44 ++++++++++ 2 files changed, 104 insertions(+), 23 deletions(-) diff --git a/core/src/services/UnifiedSearchController.ts b/core/src/services/UnifiedSearchController.ts index cb54e2954bde2..1f773565f0e25 100644 --- a/core/src/services/UnifiedSearchController.ts +++ b/core/src/services/UnifiedSearchController.ts @@ -11,12 +11,24 @@ type CategorySearchItem = { hasMore: boolean } +/** + * Runs a unified search across categories in priority order, blocking + * lower-priority results until their predecessors arrive or a timer reveals them. + */ export class UnifiedSearchController { private searchItems: Record = {} private requestId: number = 0 private revealTimer: ReturnType | null = null - + private searchAbortHandlers: (() => void)[] = [] + + /** + * Start a search. Cancels and replaces any search already in flight. + * + * @param query the search term + * @param categories category ids in priority order + */ search(query: string, categories: string[]): void { + this.cancelPendingRequests() this.searchItems = {} this.requestId++ const dispatchId = this.requestId @@ -30,12 +42,14 @@ export class UnifiedSearchController { cursor: null, hasMore: false, } - const { request } = unifiedSearch({ + const { request, cancel } = unifiedSearch({ type: category, query, cursor: null, }) + this.searchAbortHandlers.push(cancel) + request().then((response) => { if (this.requestId !== dispatchId) { // A new search has been started, ignore this result @@ -66,7 +80,24 @@ export class UnifiedSearchController { }) } - reconcileCategoryStatuses(categories: string[]): void { + /** + * A shallow copy of the current per-category state, safe to read for rendering. + * + * @return the current search items keyed by category id + */ + getSnapshot(): Record { + return { ...this.searchItems } + } + + /** + * Tear down on unmount: cancels in-flight requests and stops the reveal timer. + */ + dispose(): void { + this.cancelPendingRequests() + this.stopRevealTimer() + } + + private reconcileCategoryStatuses(categories: string[]): void { categories.forEach((category) => { if (['loading', 'failed'].includes(this.searchItems[category].status)) { return @@ -75,7 +106,31 @@ export class UnifiedSearchController { }) } - unblockAllCategories(categories: string[]): void { + private startRevealTimer(): void { + this.stopRevealTimer() + this.revealTimer = setTimeout(() => { + const categories = Object.keys(this.searchItems) + const hasPendingCategories = categories.some((category) => ['loading', 'blocked'].includes(this.searchItems[category].status)) + this.unblockAllCategories(categories) + if (hasPendingCategories) { + this.startRevealTimer() + } + }, REVEAL_INTERVAL) + } + + private stopRevealTimer(): void { + if (this.revealTimer) { + clearTimeout(this.revealTimer) + this.revealTimer = null + } + } + + private cancelPendingRequests(): void { + this.searchAbortHandlers.forEach((cancel) => cancel()) + this.searchAbortHandlers = [] + } + + private unblockAllCategories(categories: string[]): void { categories.forEach((category) => { if (this.searchItems[category].status === 'blocked') { this.searchItems[category].status = 'loaded' @@ -83,7 +138,7 @@ export class UnifiedSearchController { }) } - categoryShouldBlock(category: string, categories: string[]): boolean { + private categoryShouldBlock(category: string, categories: string[]): boolean { const categoryItem = this.searchItems[category] if (!categoryItem) { return false @@ -94,22 +149,4 @@ export class UnifiedSearchController { return item && ['loading', 'blocked'].includes(item.status) }) } - - startRevealTimer(): void { - if (this.revealTimer) { - clearTimeout(this.revealTimer) - } - this.revealTimer = setTimeout(() => { - const categories = Object.keys(this.searchItems) - const hasPendingCategories = categories.some((category) => ['loading', 'blocked'].includes(this.searchItems[category].status)) - this.unblockAllCategories(categories) - if (hasPendingCategories) { - this.startRevealTimer() - } - }, REVEAL_INTERVAL) - } - - getSnapshot(): Record { - return { ...this.searchItems } - } } diff --git a/core/src/tests/services/UnifiedSearchController.spec.ts b/core/src/tests/services/UnifiedSearchController.spec.ts index f2e20ae4a319f..7534bfb5a48f2 100644 --- a/core/src/tests/services/UnifiedSearchController.spec.ts +++ b/core/src/tests/services/UnifiedSearchController.spec.ts @@ -214,6 +214,50 @@ describe('UnifiedSearchController', () => { }) }) + describe('cancellation', () => { + it('cancels the previous search\'s in-flight requests when a new search starts', () => { + const first = mockProviders(['files', 'talk']) + + const searchController = new UnifiedSearchController() + searchController.search('first', ['files', 'talk']) + + // A new search supersedes the first while its requests are in flight. + mockProviders(['files', 'talk']) + searchController.search('second', ['files', 'talk']) + + expect(first.files.cancel).toHaveBeenCalledOnce() + expect(first.talk.cancel).toHaveBeenCalledOnce() + }) + }) + + describe('dispose', () => { + it('cancels in-flight requests when disposed', () => { + const providers = mockProviders(['files', 'talk']) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk']) + + searchController.dispose() + + expect(providers.files.cancel).toHaveBeenCalledOnce() + expect(providers.talk.cancel).toHaveBeenCalledOnce() + }) + + it('stops the reveal timer when disposed', () => { + mockProviders(['files', 'talk']) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files', 'talk']) + + // A search arms the reveal timer. + expect(vi.getTimerCount()).toBe(1) + + searchController.dispose() + + expect(vi.getTimerCount()).toBe(0) + }) + }) + describe('reveal timer', () => { it('marks blocked categories as loaded after a certain amount of time has elapsed', async () => { const providers = mockProviders(['files', 'talk', 'deck']) From 29135897d8d9b8752a730bca20c4fa732492b19a Mon Sep 17 00:00:00 2001 From: Peter Ringelmann Date: Thu, 9 Jul 2026 11:05:26 +0200 Subject: [PATCH 6/8] feat(core): paginate unified search results per category Signed-off-by: Peter Ringelmann --- core/src/services/UnifiedSearchController.ts | 50 +++++- .../services/UnifiedSearchController.spec.ts | 165 ++++++++++++++++-- 2 files changed, 202 insertions(+), 13 deletions(-) diff --git a/core/src/services/UnifiedSearchController.ts b/core/src/services/UnifiedSearchController.ts index 1f773565f0e25..827b2ca1ef52a 100644 --- a/core/src/services/UnifiedSearchController.ts +++ b/core/src/services/UnifiedSearchController.ts @@ -9,6 +9,7 @@ type CategorySearchItem = { entries: unknown[] cursor: string | null hasMore: boolean + loadMoreFailed: boolean } /** @@ -16,6 +17,7 @@ type CategorySearchItem = { * lower-priority results until their predecessors arrive or a timer reveals them. */ export class UnifiedSearchController { + private query: string = '' private searchItems: Record = {} private requestId: number = 0 private revealTimer: ReturnType | null = null @@ -32,6 +34,7 @@ export class UnifiedSearchController { this.searchItems = {} this.requestId++ const dispatchId = this.requestId + this.query = query this.startRevealTimer() @@ -41,10 +44,11 @@ export class UnifiedSearchController { entries: [], cursor: null, hasMore: false, + loadMoreFailed: false, } const { request, cancel } = unifiedSearch({ type: category, - query, + query: this.query, cursor: null, }) @@ -62,6 +66,7 @@ export class UnifiedSearchController { entries, cursor, hasMore, + loadMoreFailed: false, } this.reconcileCategoryStatuses(categories) @@ -74,12 +79,55 @@ export class UnifiedSearchController { entries: [], cursor: null, hasMore: false, + loadMoreFailed: false, } this.reconcileCategoryStatuses(categories) }) }) } + /** + * Fetch the next page for one category and append it. A no-op unless the + * category is loaded with more pages. On failure the existing results stay + * and `loadMoreFailed` is raised, so calling again retries. + * + * @param category the category id to page + */ + loadMore(category: string): void { + const dispatchId = this.requestId + const categoryItem = this.searchItems[category] + if (!categoryItem || !categoryItem.hasMore || categoryItem.status !== 'loaded') { + return + } + categoryItem.status = 'loading' + categoryItem.loadMoreFailed = false + + const { request, cancel } = unifiedSearch({ + type: category, + query: this.query, + cursor: categoryItem.cursor, + }) + + this.searchAbortHandlers.push(cancel) + + request().then((response) => { + if (this.requestId !== dispatchId) { + return + } + const { entries, cursor, hasMore } = response.data.ocs.data + categoryItem.entries.push(...entries) + categoryItem.cursor = cursor + categoryItem.hasMore = hasMore + categoryItem.status = 'loaded' + }).catch(() => { + if (this.requestId !== dispatchId) { + return + } + categoryItem.status = 'loaded' + categoryItem.loadMoreFailed = true + }) + } + /** * A shallow copy of the current per-category state, safe to read for rendering. * diff --git a/core/src/tests/services/UnifiedSearchController.spec.ts b/core/src/tests/services/UnifiedSearchController.spec.ts index 7534bfb5a48f2..f25380bfb6869 100644 --- a/core/src/tests/services/UnifiedSearchController.spec.ts +++ b/core/src/tests/services/UnifiedSearchController.spec.ts @@ -29,6 +29,26 @@ function deferredProvider() { } } +/** + * Deferred stand-in that serves successive pages. Each `request()` call takes + * the next page; a test resolves page N on demand with `resolvePage(n, data)`, + * where `data` is the full `{ entries, cursor, hasMore }` payload. + */ +function pagedProvider() { + const pages: ReturnType>[] = [] + const pageAt = (index: number) => (pages[index] ??= Promise.withResolvers()) + let call = 0 + return { + cancel: vi.fn(), + request: async () => { + const data = await pageAt(call++).promise + return { data: { ocs: { data } } } + }, + resolvePage: (index: number, data: { entries: unknown[], cursor: string | null, hasMore: boolean }) => pageAt(index).resolve(data), + rejectPage: (index: number, reason?: unknown) => pageAt(index).reject(reason), + } +} + /** * Register one deferred provider per category type on the mocked service. * Returns the map so a test can resolve/reject a specific category on demand, @@ -44,7 +64,7 @@ function mockProviders(types: string[]) { * The initial per-category state before any provider has resolved. Identical * for every pending category, so tests assert against this shared shape. */ -const loading = { status: 'loading', entries: [], cursor: null, hasMore: false } +const loading = { status: 'loading', entries: [], cursor: null, hasMore: false, loadMoreFailed: false } beforeEach(() => { vi.useFakeTimers() @@ -81,7 +101,7 @@ describe('UnifiedSearchController', () => { await vi.advanceTimersByTimeAsync(0) expect(searchController.getSnapshot()).toEqual({ - files: { status: 'loaded', entries: ['Some result'], cursor: undefined, hasMore: undefined }, + files: { status: 'loaded', entries: ['Some result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, }) }) }) @@ -100,7 +120,7 @@ describe('UnifiedSearchController', () => { expect(searchController.getSnapshot()).toEqual({ files: loading, talk: loading, - deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, }) }) @@ -117,7 +137,7 @@ describe('UnifiedSearchController', () => { expect(searchController.getSnapshot()).toEqual({ files: loading, talk: loading, - deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, }) providers.files.resolve(['Files result']) @@ -126,9 +146,9 @@ describe('UnifiedSearchController', () => { await vi.advanceTimersByTimeAsync(0) expect(searchController.getSnapshot()).toEqual({ - files: { status: 'loaded', entries: ['Files result'], cursor: undefined, hasMore: undefined }, - talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, - deck: { status: 'loaded', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + files: { status: 'loaded', entries: ['Files result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, + talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, + deck: { status: 'loaded', entries: ['Deck result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, }) }) @@ -143,7 +163,7 @@ describe('UnifiedSearchController', () => { expect(searchController.getSnapshot()).toEqual({ files: loading, - talk: { status: 'blocked', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, + talk: { status: 'blocked', entries: ['Talk result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, deck: loading, }) @@ -154,8 +174,8 @@ describe('UnifiedSearchController', () => { await vi.advanceTimersByTimeAsync(0) expect(searchController.getSnapshot()).toEqual({ - files: { status: 'failed', entries: [], cursor: null, hasMore: false }, - talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined }, + files: { status: 'failed', entries: [], cursor: null, hasMore: false, loadMoreFailed: false }, + talk: { status: 'loaded', entries: ['Talk result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, deck: loading, }) }) @@ -192,6 +212,7 @@ describe('UnifiedSearchController', () => { entries: ['Live files'], cursor: undefined, hasMore: undefined, + loadMoreFailed: false, }) }) }) @@ -258,6 +279,126 @@ describe('UnifiedSearchController', () => { }) }) + describe('pagination', () => { + it('appends the next page of results when loadMore is called', async () => { + const files = pagedProvider() + service.search.mockReturnValue(files) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files']) + + files.resolvePage(0, { entries: ['a'], cursor: 'cursor-1', hasMore: true }) + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot().files).toEqual({ + status: 'loaded', + entries: ['a'], + cursor: 'cursor-1', + hasMore: true, + loadMoreFailed: false, + }) + + searchController.loadMore('files') + + files.resolvePage(1, { entries: ['b'], cursor: 'cursor-2', hasMore: false }) + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot().files).toEqual({ + status: 'loaded', + entries: ['a', 'b'], + cursor: 'cursor-2', + hasMore: false, + loadMoreFailed: false, + }) + }) + + it('re-dispatches with the stored cursor', async () => { + const files = pagedProvider() + service.search.mockReturnValue(files) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files']) + + files.resolvePage(0, { entries: ['a'], cursor: 'cursor-1', hasMore: true }) + await vi.advanceTimersByTimeAsync(0) + + searchController.loadMore('files') + + expect(service.search).toHaveBeenLastCalledWith(expect.objectContaining({ type: 'files', query: 'query', cursor: 'cursor-1' })) + }) + + it('flags a page-load failure without dropping the results already loaded', async () => { + const files = pagedProvider() + service.search.mockReturnValue(files) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files']) + + files.resolvePage(0, { entries: ['a'], cursor: 'cursor-1', hasMore: true }) + await vi.advanceTimersByTimeAsync(0) + + searchController.loadMore('files') + files.rejectPage(1, new Error('network')) + await vi.advanceTimersByTimeAsync(0) + + // Results stay put, the category is still loaded, and hasMore stays true + // so the next loadMore retries. The failure is surfaced on its own flag. + expect(searchController.getSnapshot().files).toEqual({ + status: 'loaded', + entries: ['a'], + cursor: 'cursor-1', + hasMore: true, + loadMoreFailed: true, + }) + }) + + it('clears the failure flag when a later page loads successfully', async () => { + const files = pagedProvider() + service.search.mockReturnValue(files) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files']) + + files.resolvePage(0, { entries: ['a'], cursor: 'cursor-1', hasMore: true }) + await vi.advanceTimersByTimeAsync(0) + + // A first loadMore fails and raises the flag. + searchController.loadMore('files') + files.rejectPage(1, new Error('network')) + await vi.advanceTimersByTimeAsync(0) + expect(searchController.getSnapshot().files.loadMoreFailed).toBe(true) + + // Retrying succeeds and must clear the stale flag. + searchController.loadMore('files') + files.resolvePage(2, { entries: ['b'], cursor: 'cursor-2', hasMore: false }) + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot().files).toEqual({ + status: 'loaded', + entries: ['a', 'b'], + cursor: 'cursor-2', + hasMore: false, + loadMoreFailed: false, + }) + }) + + it('does nothing when the category has no more pages', async () => { + const files = pagedProvider() + service.search.mockReturnValue(files) + + const searchController = new UnifiedSearchController() + searchController.search('query', ['files']) + + files.resolvePage(0, { entries: ['a'], cursor: 'cursor-1', hasMore: false }) + await vi.advanceTimersByTimeAsync(0) + + searchController.loadMore('files') + + // The initial search is the only dispatch; loadMore must not fire another. + expect(service.search).toHaveBeenCalledTimes(1) + }) + }) + describe('reveal timer', () => { it('marks blocked categories as loaded after a certain amount of time has elapsed', async () => { const providers = mockProviders(['files', 'talk', 'deck']) @@ -272,7 +413,7 @@ describe('UnifiedSearchController', () => { expect(searchController.getSnapshot()).toEqual({ files: loading, talk: loading, - deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, }) await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) @@ -280,7 +421,7 @@ describe('UnifiedSearchController', () => { expect(searchController.getSnapshot()).toEqual({ files: loading, talk: loading, - deck: { status: 'loaded', entries: ['Deck result'], cursor: undefined, hasMore: undefined }, + deck: { status: 'loaded', entries: ['Deck result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, }) }) From a3c91f0579bbd2b2b364bd31aa951ac2744d940c Mon Sep 17 00:00:00 2001 From: Peter Ringelmann Date: Thu, 9 Jul 2026 11:32:32 +0200 Subject: [PATCH 7/8] fix(core): improve naming Signed-off-by: Peter Ringelmann --- core/src/services/UnifiedSearchController.ts | 91 ++++++++++---------- 1 file changed, 45 insertions(+), 46 deletions(-) diff --git a/core/src/services/UnifiedSearchController.ts b/core/src/services/UnifiedSearchController.ts index 827b2ca1ef52a..8204bc8854350 100644 --- a/core/src/services/UnifiedSearchController.ts +++ b/core/src/services/UnifiedSearchController.ts @@ -1,11 +1,11 @@ import { search as unifiedSearch } from './UnifiedSearchService.js' -type SearchItemStatus = 'loading' | 'loaded' | 'failed' | 'blocked' +type CategorySearchStatus = 'loading' | 'loaded' | 'failed' | 'blocked' export const REVEAL_INTERVAL = 1500 // milliseconds -type CategorySearchItem = { - status: SearchItemStatus +type CategorySearchState = { + status: CategorySearchStatus entries: unknown[] cursor: string | null hasMore: boolean @@ -18,10 +18,10 @@ type CategorySearchItem = { */ export class UnifiedSearchController { private query: string = '' - private searchItems: Record = {} - private requestId: number = 0 + private searchStates: Record = {} + private searchGeneration: number = 0 private revealTimer: ReturnType | null = null - private searchAbortHandlers: (() => void)[] = [] + private pendingCancels: (() => void)[] = [] /** * Start a search. Cancels and replaces any search already in flight. @@ -31,15 +31,15 @@ export class UnifiedSearchController { */ search(query: string, categories: string[]): void { this.cancelPendingRequests() - this.searchItems = {} - this.requestId++ - const dispatchId = this.requestId + this.searchStates = {} + this.searchGeneration++ + const generation = this.searchGeneration this.query = query this.startRevealTimer() categories.forEach((category) => { - this.searchItems[category] = { + this.searchStates[category] = { status: 'loading', entries: [], cursor: null, @@ -52,16 +52,16 @@ export class UnifiedSearchController { cursor: null, }) - this.searchAbortHandlers.push(cancel) + this.pendingCancels.push(cancel) request().then((response) => { - if (this.requestId !== dispatchId) { + if (this.searchGeneration !== generation) { // A new search has been started, ignore this result return } const { entries, cursor, hasMore } = response.data.ocs.data - this.searchItems[category] = { + this.searchStates[category] = { status: 'loaded', entries, cursor, @@ -71,10 +71,10 @@ export class UnifiedSearchController { this.reconcileCategoryStatuses(categories) }).catch(() => { - if (this.requestId !== dispatchId) { + if (this.searchGeneration !== generation) { return } - this.searchItems[category] = { + this.searchStates[category] = { status: 'failed', entries: [], cursor: null, @@ -94,47 +94,47 @@ export class UnifiedSearchController { * @param category the category id to page */ loadMore(category: string): void { - const dispatchId = this.requestId - const categoryItem = this.searchItems[category] - if (!categoryItem || !categoryItem.hasMore || categoryItem.status !== 'loaded') { + const generation = this.searchGeneration + const categoryState = this.searchStates[category] + if (!categoryState || !categoryState.hasMore || categoryState.status !== 'loaded') { return } - categoryItem.status = 'loading' - categoryItem.loadMoreFailed = false + categoryState.status = 'loading' + categoryState.loadMoreFailed = false const { request, cancel } = unifiedSearch({ type: category, query: this.query, - cursor: categoryItem.cursor, + cursor: categoryState.cursor, }) - this.searchAbortHandlers.push(cancel) + this.pendingCancels.push(cancel) request().then((response) => { - if (this.requestId !== dispatchId) { + if (this.searchGeneration !== generation) { return } const { entries, cursor, hasMore } = response.data.ocs.data - categoryItem.entries.push(...entries) - categoryItem.cursor = cursor - categoryItem.hasMore = hasMore - categoryItem.status = 'loaded' + categoryState.entries.push(...entries) + categoryState.cursor = cursor + categoryState.hasMore = hasMore + categoryState.status = 'loaded' }).catch(() => { - if (this.requestId !== dispatchId) { + if (this.searchGeneration !== generation) { return } - categoryItem.status = 'loaded' - categoryItem.loadMoreFailed = true + categoryState.status = 'loaded' + categoryState.loadMoreFailed = true }) } /** * A shallow copy of the current per-category state, safe to read for rendering. * - * @return the current search items keyed by category id + * @return the current search states keyed by category id */ - getSnapshot(): Record { - return { ...this.searchItems } + getSnapshot(): Record { + return { ...this.searchStates } } /** @@ -147,18 +147,18 @@ export class UnifiedSearchController { private reconcileCategoryStatuses(categories: string[]): void { categories.forEach((category) => { - if (['loading', 'failed'].includes(this.searchItems[category].status)) { + if (['loading', 'failed'].includes(this.searchStates[category].status)) { return } - this.searchItems[category].status = this.categoryShouldBlock(category, categories) ? 'blocked' : 'loaded' + this.searchStates[category].status = this.shouldBlockCategory(category, categories) ? 'blocked' : 'loaded' }) } private startRevealTimer(): void { this.stopRevealTimer() this.revealTimer = setTimeout(() => { - const categories = Object.keys(this.searchItems) - const hasPendingCategories = categories.some((category) => ['loading', 'blocked'].includes(this.searchItems[category].status)) + const categories = Object.keys(this.searchStates) + const hasPendingCategories = categories.some((category) => ['loading', 'blocked'].includes(this.searchStates[category].status)) this.unblockAllCategories(categories) if (hasPendingCategories) { this.startRevealTimer() @@ -174,27 +174,26 @@ export class UnifiedSearchController { } private cancelPendingRequests(): void { - this.searchAbortHandlers.forEach((cancel) => cancel()) - this.searchAbortHandlers = [] + this.pendingCancels.forEach((cancel) => cancel()) + this.pendingCancels = [] } private unblockAllCategories(categories: string[]): void { categories.forEach((category) => { - if (this.searchItems[category].status === 'blocked') { - this.searchItems[category].status = 'loaded' + if (this.searchStates[category].status === 'blocked') { + this.searchStates[category].status = 'loaded' } }) } - private categoryShouldBlock(category: string, categories: string[]): boolean { - const categoryItem = this.searchItems[category] - if (!categoryItem) { + private shouldBlockCategory(category: string, categories: string[]): boolean { + if (!this.searchStates[category]) { return false } return categories.slice(0, categories.indexOf(category)).some((c) => { - const item = this.searchItems[c] - return item && ['loading', 'blocked'].includes(item.status) + const categoryState = this.searchStates[c] + return categoryState && ['loading', 'blocked'].includes(categoryState.status) }) } } From 68bfa3477bf29f1634641491be3da5f9ca23bea0 Mon Sep 17 00:00:00 2001 From: Peter Ringelmann Date: Thu, 9 Jul 2026 16:19:13 +0200 Subject: [PATCH 8/8] refactor(core): use async/await in unified search controller Signed-off-by: Peter Ringelmann --- core/src/services/UnifiedSearchController.ts | 123 ++++++++++-------- .../services/UnifiedSearchController.spec.ts | 44 +++++-- dist/core-unified-search.js.map | 2 +- 3 files changed, 103 insertions(+), 66 deletions(-) diff --git a/core/src/services/UnifiedSearchController.ts b/core/src/services/UnifiedSearchController.ts index 8204bc8854350..bad5e20a78113 100644 --- a/core/src/services/UnifiedSearchController.ts +++ b/core/src/services/UnifiedSearchController.ts @@ -1,10 +1,13 @@ +/** + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + import { search as unifiedSearch } from './UnifiedSearchService.js' type CategorySearchStatus = 'loading' | 'loaded' | 'failed' | 'blocked' -export const REVEAL_INTERVAL = 1500 // milliseconds - -type CategorySearchState = { +interface CategorySearchState { status: CategorySearchStatus entries: unknown[] cursor: string | null @@ -12,6 +15,8 @@ type CategorySearchState = { loadMoreFailed: boolean } +export const REVEAL_INTERVAL_MS = 1500 + /** * Runs a unified search across categories in priority order, blocking * lower-priority results until their predecessors arrive or a timer reveals them. @@ -28,8 +33,9 @@ export class UnifiedSearchController { * * @param query the search term * @param categories category ids in priority order + * @return resolves once every category has settled */ - search(query: string, categories: string[]): void { + async search(query: string, categories: string[]): Promise { this.cancelPendingRequests() this.searchStates = {} this.searchGeneration++ @@ -38,52 +44,7 @@ export class UnifiedSearchController { this.startRevealTimer() - categories.forEach((category) => { - this.searchStates[category] = { - status: 'loading', - entries: [], - cursor: null, - hasMore: false, - loadMoreFailed: false, - } - const { request, cancel } = unifiedSearch({ - type: category, - query: this.query, - cursor: null, - }) - - this.pendingCancels.push(cancel) - - request().then((response) => { - if (this.searchGeneration !== generation) { - // A new search has been started, ignore this result - return - } - - const { entries, cursor, hasMore } = response.data.ocs.data - this.searchStates[category] = { - status: 'loaded', - entries, - cursor, - hasMore, - loadMoreFailed: false, - } - - this.reconcileCategoryStatuses(categories) - }).catch(() => { - if (this.searchGeneration !== generation) { - return - } - this.searchStates[category] = { - status: 'failed', - entries: [], - cursor: null, - hasMore: false, - loadMoreFailed: false, - } - this.reconcileCategoryStatuses(categories) - }) - }) + await Promise.allSettled(categories.map((category) => this.searchCategory(category, generation, categories))) } /** @@ -93,7 +54,7 @@ export class UnifiedSearchController { * * @param category the category id to page */ - loadMore(category: string): void { + async loadMore(category: string): Promise { const generation = this.searchGeneration const categoryState = this.searchStates[category] if (!categoryState || !categoryState.hasMore || categoryState.status !== 'loaded') { @@ -110,7 +71,8 @@ export class UnifiedSearchController { this.pendingCancels.push(cancel) - request().then((response) => { + try { + const response = await request() if (this.searchGeneration !== generation) { return } @@ -118,14 +80,14 @@ export class UnifiedSearchController { categoryState.entries.push(...entries) categoryState.cursor = cursor categoryState.hasMore = hasMore - categoryState.status = 'loaded' - }).catch(() => { + } catch { if (this.searchGeneration !== generation) { return } - categoryState.status = 'loaded' categoryState.loadMoreFailed = true - }) + } + + categoryState.status = 'loaded' } /** @@ -145,6 +107,53 @@ export class UnifiedSearchController { this.stopRevealTimer() } + private async searchCategory(category: string, generation: number, categories: string[]): Promise { + this.searchStates[category] = { + status: 'loading', + entries: [], + cursor: null, + hasMore: false, + loadMoreFailed: false, + } + const { request, cancel } = unifiedSearch({ + type: category, + query: this.query, + cursor: null, + }) + + this.pendingCancels.push(cancel) + + try { + const response = await request() + if (this.searchGeneration !== generation) { + // A new search has been started, ignore this result + return + } + + const { entries, cursor, hasMore } = response.data.ocs.data + this.searchStates[category] = { + status: 'loaded', + entries, + cursor, + hasMore, + loadMoreFailed: false, + } + } catch { + if (this.searchGeneration !== generation) { + return + } + this.searchStates[category] = { + status: 'failed', + entries: [], + cursor: null, + hasMore: false, + loadMoreFailed: false, + } + } + + this.reconcileCategoryStatuses(categories) + } + private reconcileCategoryStatuses(categories: string[]): void { categories.forEach((category) => { if (['loading', 'failed'].includes(this.searchStates[category].status)) { @@ -163,7 +172,7 @@ export class UnifiedSearchController { if (hasPendingCategories) { this.startRevealTimer() } - }, REVEAL_INTERVAL) + }, REVEAL_INTERVAL_MS) } private stopRevealTimer(): void { diff --git a/core/src/tests/services/UnifiedSearchController.spec.ts b/core/src/tests/services/UnifiedSearchController.spec.ts index f25380bfb6869..74378147dd53d 100644 --- a/core/src/tests/services/UnifiedSearchController.spec.ts +++ b/core/src/tests/services/UnifiedSearchController.spec.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' -import { REVEAL_INTERVAL, UnifiedSearchController } from '../../services/UnifiedSearchController.ts' +import { REVEAL_INTERVAL_MS, UnifiedSearchController } from '../../services/UnifiedSearchController.ts' const service = vi.hoisted(() => ({ search: vi.fn(), @@ -215,6 +215,34 @@ describe('UnifiedSearchController', () => { loadMoreFailed: false, }) }) + + it('ignores a stale response for a category the newer search dropped', async () => { + const first = mockProviders(['files', 'talk']) + + const searchController = new UnifiedSearchController() + searchController.search('first', ['files', 'talk']) + + // A newer search with a completely different category set supersedes it. + const second = mockProviders(['deck']) + searchController.search('second', ['deck']) + + // The stale response is for 'files', which no longer exists in the + // current search. Reconciling it must not throw on the missing category. + first.files.resolve(['Stale files']) + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot()).toEqual({ + deck: loading, + }) + + // The live search still resolves normally. + second.deck.resolve(['Live deck']) + await vi.advanceTimersByTimeAsync(0) + + expect(searchController.getSnapshot()).toEqual({ + deck: { status: 'loaded', entries: ['Live deck'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, + }) + }) }) describe('resetting between searches', () => { @@ -416,7 +444,7 @@ describe('UnifiedSearchController', () => { deck: { status: 'blocked', entries: ['Deck result'], cursor: undefined, hasMore: undefined, loadMoreFailed: false }, }) - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL_MS) expect(searchController.getSnapshot()).toEqual({ files: loading, @@ -433,11 +461,11 @@ describe('UnifiedSearchController', () => { // deck arrives out of order and is revealed by the first flush. providers.deck.resolve(['Deck result']) - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL_MS) expect(searchController.getSnapshot().deck.status).toBe('loaded') // A later flush passes with nothing blocked while files/talk keep loading. - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL_MS) // talk now arrives out of order (files still loading) and is blocked. providers.talk.resolve(['Talk result']) @@ -445,7 +473,7 @@ describe('UnifiedSearchController', () => { expect(searchController.getSnapshot().talk.status).toBe('blocked') // The timer must still be running to flush talk on a later cycle. - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL_MS) expect(searchController.getSnapshot().talk.status).toBe('loaded') }) @@ -460,7 +488,7 @@ describe('UnifiedSearchController', () => { await vi.advanceTimersByTimeAsync(0) // Nothing is loading or blocked, so the next flush should not re-arm. - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL_MS) expect(vi.getTimerCount()).toBe(0) }) @@ -472,7 +500,7 @@ describe('UnifiedSearchController', () => { // First search: deck is blocked and its reveal timer is pending. first.deck.resolve(['First deck']) - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL - 500) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL_MS - 500) expect(searchController.getSnapshot().deck.status).toBe('blocked') // A new search starts before the first timer fires. It must clear that @@ -483,7 +511,7 @@ describe('UnifiedSearchController', () => { second.deck.resolve(['Second deck']) // Advance past when the first search's timer would have fired (500ms from // now) but before the second search's timer is due. - await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL - 500) + await vi.advanceTimersByTimeAsync(REVEAL_INTERVAL_MS - 500) expect(searchController.getSnapshot().deck.status).toBe('blocked') }) diff --git a/dist/core-unified-search.js.map b/dist/core-unified-search.js.map index a02633aa0e9a6..ad3c8d42c9fed 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=ee5c4e33fba993b73d50","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/vue-material-design-icons/Magnify.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Magnify.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Magnify.vue?0775","webpack:///nextcloud/node_modules/vue-material-design-icons/Magnify.vue?vue&type=template&id=194dfb2a","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchInput.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchInput.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchInput.vue?c476","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchInput.vue?8fd4","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue?vue&type=script&lang=ts&setup=true","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue?3651","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue?395a","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchModal.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRangeOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRangeOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CalendarRangeOutline.vue?8e99","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRangeOutline.vue?vue&type=template&id=57d00bd1","webpack:///nextcloud/node_modules/vue-material-design-icons/Filter.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Filter.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Filter.vue?3711","webpack:///nextcloud/node_modules/vue-material-design-icons/Filter.vue?vue&type=template&id=be2cf3ce","webpack:///nextcloud/node_modules/vue-material-design-icons/ListBox.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/ListBox.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ListBox.vue?d9c9","webpack:///nextcloud/node_modules/vue-material-design-icons/ListBox.vue?vue&type=template&id=4e2b82c8","webpack://nextcloud/./core/src/components/UnifiedSearch/CustomDateRangeModal.vue?b7cc","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRange.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRange.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CalendarRange.vue?f09e","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRange.vue?vue&type=template&id=5868fd9e","webpack:///nextcloud/core/src/components/UnifiedSearch/CustomDateRangeModal.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/UnifiedSearch/CustomDateRangeModal.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/CustomDateRangeModal.vue?0fb6","webpack://nextcloud/./core/src/components/UnifiedSearch/CustomDateRangeModal.vue?92fe","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchableList.vue?a21f","webpack:///nextcloud/node_modules/vue-material-design-icons/AlertCircleOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AlertCircleOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/AlertCircleOutline.vue?730b","webpack:///nextcloud/node_modules/vue-material-design-icons/AlertCircleOutline.vue?vue&type=template&id=da40788e","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchableList.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchableList.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchableList.vue?cd03","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchableList.vue?4344","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchFilterChip.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchFilterChip.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchFilterChip.vue?6432","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchFilterChip.vue?fc0d","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchFilterChip.vue?2352","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?1b5b","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?32d3","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?e4b5","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/services/UnifiedSearchService.js","webpack:///nextcloud/core/src/store/unified-search-external-filters.js","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchModal.vue?vue&type=script&lang=ts","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchModal.vue?b4ba","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchModal.vue?0132","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=script&lang=ts","webpack:///nextcloud/core/src/views/UnifiedSearch.vue","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?5467","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1990","webpack:///nextcloud/core/src/unified-search.ts","webpack:///nextcloud/core/src/components/UnifiedSearch/CustomDateRangeModal.vue?vue&type=style&index=0&id=2907014b&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchFilterChip.vue?vue&type=style&index=0&id=60a863d2&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=style&index=0&id=ca416b22&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchableList.vue?vue&type=style&index=0&id=37b50471&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchInput.vue?vue&type=style&index=0&id=4fc6c0ec&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue?vue&type=style&index=0&id=2b577e50&prod&scoped=true&lang=scss","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchModal.vue?vue&type=style&index=0&id=1f99d7d9&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=style&index=0&id=786997b4&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/ensure chunk","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 = (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, fn, priority] = deferred[i];\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((key) => (__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\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Magnify.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Magnify.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Magnify.vue?vue&type=template&id=194dfb2a\"\nimport script from \"./Magnify.vue?vue&type=script&lang=js\"\nexport * from \"./Magnify.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon magnify-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchInput.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchInput.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('search',{staticClass:\"unified-search-input\",class:{ 'unified-search-input--mobile': _setup.isSmallMobile }},[(_setup.isSmallMobile)?_c(_setup.NcHeaderButton,{attrs:{\"id\":\"unified-search-trigger\",\"ariaLabel\":_setup.placeholderText,\"aria-haspopup\":\"dialog\",\"aria-expanded\":_vm.expanded ? 'true' : 'false'},on:{\"click\":function($event){return _vm.$emit('click', $event)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.IconMagnify,{attrs:{\"size\":20}})]},proxy:true}],null,false,1795316816)}):_c('div',{staticClass:\"unified-search-input__field\",class:{ 'unified-search-input__field--active': _setup.isActive }},[_c('div',{staticClass:\"unified-search-input__resting\",class:{ 'unified-search-input__resting--filled': _vm.query.length > 0 },attrs:{\"aria-hidden\":\"true\"}},[_c(_setup.IconMagnify,{attrs:{\"size\":20}}),_vm._v(\" \"),_c('span',{staticClass:\"unified-search-input__label\"},[_vm._v(_vm._s(_setup.placeholderText))])],1),_vm._v(\" \"),_c('input',{ref:\"inputRef\",staticClass:\"unified-search-input__input\",attrs:{\"type\":\"text\",\"role\":\"combobox\",\"aria-autocomplete\":\"list\",\"aria-expanded\":_vm.expanded ? 'true' : 'false',\"aria-label\":_setup.placeholderText},domProps:{\"value\":_vm.query},on:{\"focus\":function($event){_setup.isFocused = true},\"blur\":function($event){_setup.isFocused = false},\"input\":_setup.onInput}}),_vm._v(\" \"),(_vm.query.length > 0)?_c(_setup.NcButton,{staticClass:\"unified-search-input__clear\",attrs:{\"variant\":\"tertiary-no-background\",\"aria-label\":_setup.t('core', 'Clear search')},on:{\"click\":_setup.clearQuery},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.IconClose,{attrs:{\"size\":20}})]},proxy:true}],null,false,4099733813)}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./UnifiedSearchInput.vue?vue&type=style&index=0&id=4fc6c0ec&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UnifiedSearchInput.vue?vue&type=style&index=0&id=4fc6c0ec&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearchInput.vue?vue&type=template&id=4fc6c0ec&scoped=true\"\nimport script from \"./UnifiedSearchInput.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UnifiedSearchInput.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./UnifiedSearchInput.vue?vue&type=style&index=0&id=4fc6c0ec&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 \"4fc6c0ec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Transition',[(_vm.open)?_c('div',{staticClass:\"local-unified-search animated-width\",class:{ 'local-unified-search--open': _vm.open }},[_c(_setup.NcInputField,{ref:\"searchInput\",staticClass:\"local-unified-search__input animated-width\",attrs:{\"aria-label\":_setup.t('core', 'Search in current app'),\"placeholder\":_setup.t('core', 'Search in current app'),\"show-trailing-button\":\"\",\"trailing-button-label\":_setup.t('core', 'Clear search'),\"model-value\":_vm.query},on:{\"update:value\":function($event){return _vm.$emit('update:query', $event)},\"trailing-button-click\":_setup.clearAndCloseSearch},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiClose}})]},proxy:true}],null,false,3585538455)}),_vm._v(\" \"),_c(_setup.NcButton,{ref:\"searchGlobalButton\",staticClass:\"local-unified-search__global-search\",attrs:{\"aria-label\":_setup.t('core', 'Search everywhere'),\"title\":_setup.t('core', 'Search everywhere'),\"variant\":\"tertiary-no-background\"},on:{\"click\":function($event){return _vm.$emit('global-search')}},scopedSlots:_vm._u([(!_setup.isMobile)?{key:\"default\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('core', 'Search everywhere'))+\"\\n\\t\\t\\t\")]},proxy:true}:null,{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiCloudSearchOutline}})]},proxy:true}],null,true)})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchLocalSearchBar.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchLocalSearchBar.vue?vue&type=script&lang=ts&setup=true\"","\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!./UnifiedSearchLocalSearchBar.vue?vue&type=style&index=0&id=2b577e50&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UnifiedSearchLocalSearchBar.vue?vue&type=style&index=0&id=2b577e50&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearchLocalSearchBar.vue?vue&type=template&id=2b577e50&scoped=true\"\nimport script from \"./UnifiedSearchLocalSearchBar.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./UnifiedSearchLocalSearchBar.vue?vue&type=script&lang=ts&setup=true\"\nimport style0 from \"./UnifiedSearchLocalSearchBar.vue?vue&type=style&index=0&id=2b577e50&prod&scoped=true&lang=scss\"\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 \"2b577e50\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('transition',{attrs:{\"name\":\"unified-search-modal\",\"appear\":\"\"}},[(_vm.open)?_c('div',{staticClass:\"unified-search-modal-root\"},[_c('CustomDateRangeModal',{staticClass:\"unified-search__date-range\",attrs:{\"isOpen\":_vm.showDateRangeModal},on:{\"set:customDateRange\":_vm.setCustomDateRange,\"update:isOpen\":function($event){_vm.showDateRangeModal = $event}}}),_vm._v(\" \"),_c('div',{ref:\"panel\",staticClass:\"unified-search-modal__container\"},[_c('div',{staticClass:\"unified-search-modal__header\"},[(_vm.isSmallMobile)?_c('div',{staticClass:\"unified-search-modal__mobile-input\"},[_c('NcTextField',{attrs:{\"type\":\"search\",\"label\":_vm.t('core', 'Apps, files, messages, and more'),\"modelValue\":_vm.searchQuery,\"showTrailingButton\":_vm.searchQuery.length > 0,\"trailingButtonLabel\":_vm.t('core', 'Clear search')},on:{\"update:modelValue\":_vm.onMobileSearchInput,\"trailing-button-click\":function($event){_vm.searchQuery = ''}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"aria-label\":_vm.t('core', 'Close search')},on:{\"click\":function($event){return _vm.onUpdateOpen(false)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconClose',{attrs:{\"size\":20}})]},proxy:true}],null,false,2888946197)})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-modal__filters\",attrs:{\"data-cy-unified-search-filters\":\"\"}},[_c('NcActions',{attrs:{\"open\":_vm.providerActionMenuIsOpen,\"menu-name\":_vm.t('core', 'Places'),\"data-cy-unified-search-filter\":\"places\"},on:{\"update:open\":function($event){_vm.providerActionMenuIsOpen=$event}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconListBox',{attrs:{\"size\":20}})]},proxy:true}],null,false,815538004)},[_vm._v(\" \"),_vm._l((_vm.providers),function(provider){return _c('NcActionButton',{key:`${provider.id}-${provider.name.replace(/\\s/g, '')}`,attrs:{\"disabled\":provider.disabled},on:{\"click\":function($event){return _vm.addProviderFilter(provider)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"filter-button__icon\",attrs:{\"src\":provider.icon,\"alt\":\"\"}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(provider.name)+\"\\n\\t\\t\\t\\t\\t\\t\")])})],2),_vm._v(\" \"),_c('NcActions',{attrs:{\"open\":_vm.dateActionMenuIsOpen,\"menu-name\":_vm.t('core', 'Date'),\"data-cy-unified-search-filter\":\"date\"},on:{\"update:open\":function($event){_vm.dateActionMenuIsOpen=$event}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconCalendarRange',{attrs:{\"size\":20}})]},proxy:true}],null,false,3013027470)},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('today')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Today'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('7days')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Last 7 days'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('30days')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Last 30 days'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('thisyear')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'This year'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('lastyear')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Last year'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('custom')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Custom date range'))+\"\\n\\t\\t\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('SearchableList',{attrs:{\"labelText\":_vm.t('core', 'Search people'),\"searchList\":_vm.userContacts,\"emptyContentText\":_vm.t('core', 'Not found'),\"data-cy-unified-search-filter\":\"people\"},on:{\"searchTermChange\":_vm.debouncedFilterContacts,\"itemSelected\":_vm.applyPersonFilter},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcButton',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconAccountGroup',{attrs:{\"size\":20}})]},proxy:true}],null,false,2121133277)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'People'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])]},proxy:true}],null,false,1181243480)}),_vm._v(\" \"),(_vm.localSearch)?_c('NcButton',{attrs:{\"data-cy-unified-search-filter\":\"current-view\"},on:{\"click\":_vm.searchLocally},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconFilter',{attrs:{\"size\":20}})]},proxy:true}],null,false,4275912387)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Filter in current view'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasExternalResources)?_c('NcCheckboxRadioSwitch',{staticClass:\"unified-search-modal__search-external-resources\",class:{ 'unified-search-modal__search-external-resources--aligned': _vm.localSearch },attrs:{\"type\":\"switch\"},model:{value:(_vm.searchExternalResources),callback:function ($$v) {_vm.searchExternalResources=$$v},expression:\"searchExternalResources\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search connected services'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-modal__filters-applied\"},_vm._l((_vm.filters),function(filter){return _c('FilterChip',{key:filter.id,attrs:{\"text\":filter.name ?? filter.text,\"pretext\":\"\"},on:{\"delete\":function($event){return _vm.removeFilter(filter)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(filter.type === 'person')?_c('NcAvatar',{attrs:{\"user\":filter.user,\"size\":24,\"disableMenu\":\"\",\"hideUserStatus\":\"\",\"hideFavorite\":false}}):(filter.type === 'date')?_c('IconCalendarRange'):_c('img',{attrs:{\"src\":filter.icon,\"alt\":\"\"}})]},proxy:true}],null,true)})}),1)]),_vm._v(\" \"),(_vm.showEmptyContentInfo)?_c('div',{staticClass:\"unified-search-modal__no-content\"},[_c('NcEmptyContent',{attrs:{\"name\":_vm.emptyContentMessage},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconMagnify',{attrs:{\"size\":64}})]},proxy:true}],null,false,125778896)})],1):_c('div',{staticClass:\"unified-search-modal__results\"},[_c('h3',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Results'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.filteredResults),function(providerResult){return _c('div',{key:providerResult.id,staticClass:\"result\"},[_c('h4',{staticClass:\"result-title\",attrs:{\"id\":`unified-search-result-${providerResult.id}`}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(providerResult.name)+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ul',{staticClass:\"result-items\",attrs:{\"aria-labelledby\":`unified-search-result-${providerResult.id}`}},_vm._l((providerResult.results),function(result,index){return _c('SearchResult',_vm._b({key:index},'SearchResult',result,false))}),1),_vm._v(\" \"),_c('div',{staticClass:\"result-footer\"},[(providerResult.results.length === providerResult.limit)?_c('NcButton',{attrs:{\"variant\":\"tertiary-no-background\"},on:{\"click\":function($event){return _vm.loadMoreResultsForProvider(providerResult)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconDotsHorizontal',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Load more results'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(providerResult.inAppSearch)?_c('NcButton',{attrs:{\"alignment\":\"end-reverse\",\"variant\":\"tertiary-no-background\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search in'))+\" \"+_vm._s(providerResult.name)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]):_vm._e()],1)])}),_vm._v(\" \"),(_vm.unfilteredResults.length > 0)?[_c('div',{staticClass:\"unified-search-modal__unfiltered-header\"},[_c('span',{staticClass:\"unified-search-modal__unfiltered-label\"},[_vm._v(_vm._s(_vm.t('core', 'Partial matches')))])]),_vm._v(\" \"),_vm._l((_vm.unfilteredResults),function(providerResult){return _c('div',{key:`unfiltered-${providerResult.id}`,staticClass:\"result result--unfiltered\"},[_c('h4',{staticClass:\"result-title\",attrs:{\"id\":`unified-search-result-unfiltered-${providerResult.id}`}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(providerResult.name)+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ul',{staticClass:\"result-items\",attrs:{\"aria-labelledby\":`unified-search-result-unfiltered-${providerResult.id}`}},_vm._l((providerResult.results),function(result,index){return _c('SearchResult',_vm._b({key:index},'SearchResult',result,false))}),1),_vm._v(\" \"),_c('div',{staticClass:\"result-footer\"},[(providerResult.results.length === providerResult.limit)?_c('NcButton',{attrs:{\"variant\":\"tertiary-no-background\"},on:{\"click\":function($event){return _vm.loadMoreResultsForProvider(providerResult)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconDotsHorizontal',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Load more results'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(providerResult.inAppSearch)?_c('NcButton',{attrs:{\"alignment\":\"end-reverse\",\"variant\":\"tertiary-no-background\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search in'))+\" \"+_vm._s(providerResult.name)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\")]):_vm._e()],1)])})]:_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-modal__scrim\",on:{\"click\":function($event){return _vm.onUpdateOpen(false)}}})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarRangeOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarRangeOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CalendarRangeOutline.vue?vue&type=template&id=57d00bd1\"\nimport script from \"./CalendarRangeOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CalendarRangeOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon calendar-range-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 11H9V13H7V11M21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H6V1H8V3H16V1H18V3H19C20.11 3 21 3.9 21 5M5 7H19V5H5V7M19 19V9H5V19H19M15 13H17V11H15V13M11 13H13V11H11V13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Filter.vue?vue&type=template&id=be2cf3ce\"\nimport script from \"./Filter.vue?vue&type=script&lang=js\"\nexport * from \"./Filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon filter-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M14,12V19.88C14.04,20.18 13.94,20.5 13.71,20.71C13.32,21.1 12.69,21.1 12.3,20.71L10.29,18.7C10.06,18.47 9.96,18.16 10,17.87V12H9.97L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L14.03,12H14Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ListBox.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ListBox.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ListBox.vue?vue&type=template&id=4e2b82c8\"\nimport script from \"./ListBox.vue?vue&type=script&lang=js\"\nexport * from \"./ListBox.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon list-box-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7 7H9V9H7V7M7 11H9V13H7V11M7 15H9V17H7V15M17 17H11V15H17V17M17 13H11V11H17V13M17 9H11V7H17V9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isModalOpen)?_c('NcModal',{attrs:{\"id\":\"unified-search\",\"name\":_vm.t('core', 'Custom date range'),\"show\":_vm.isModalOpen,\"size\":\"small\",\"clear-view-delay\":0,\"title\":_vm.t('core', 'Custom date range')},on:{\"update:show\":function($event){_vm.isModalOpen=$event},\"close\":_vm.closeModal}},[_c('div',{staticClass:\"unified-search-custom-date-modal\"},[_c('h1',[_vm._v(_vm._s(_vm.t('core', 'Custom date range')))]),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-custom-date-modal__pickers\"},[_c('NcDateTimePicker',{attrs:{\"id\":\"unifiedsearch-custom-date-range-start\",\"label\":_vm.t('core', 'Pick start date'),\"type\":\"date\"},model:{value:(_vm.dateFilter.startFrom),callback:function ($$v) {_vm.$set(_vm.dateFilter, \"startFrom\", $$v)},expression:\"dateFilter.startFrom\"}}),_vm._v(\" \"),_c('NcDateTimePicker',{attrs:{\"id\":\"unifiedsearch-custom-date-range-end\",\"label\":_vm.t('core', 'Pick end date'),\"type\":\"date\"},model:{value:(_vm.dateFilter.endAt),callback:function ($$v) {_vm.$set(_vm.dateFilter, \"endAt\", $$v)},expression:\"dateFilter.endAt\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-custom-date-modal__footer\"},[_c('NcButton',{on:{\"click\":_vm.applyCustomRange},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CalendarRangeIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,3084610734)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search in date range'))+\"\\n\\t\\t\\t\\t\")])],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarRange.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarRange.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CalendarRange.vue?vue&type=template&id=5868fd9e\"\nimport script from \"./CalendarRange.vue?vue&type=script&lang=js\"\nexport * from \"./CalendarRange.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon calendar-range-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9,10H7V12H9V10M13,10H11V12H13V10M17,10H15V12H17V10M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V8H19V19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_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!./CustomDateRangeModal.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!./CustomDateRangeModal.vue?vue&type=script&lang=js\"","\n\n\n\n\n\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!./CustomDateRangeModal.vue?vue&type=style&index=0&id=2907014b&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./CustomDateRangeModal.vue?vue&type=style&index=0&id=2907014b&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomDateRangeModal.vue?vue&type=template&id=2907014b&scoped=true\"\nimport script from \"./CustomDateRangeModal.vue?vue&type=script&lang=js\"\nexport * from \"./CustomDateRangeModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./CustomDateRangeModal.vue?vue&type=style&index=0&id=2907014b&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 \"2907014b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcPopover',{attrs:{\"shown\":_vm.opened},on:{\"show\":function($event){_vm.opened = true},\"hide\":function($event){_vm.opened = false}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_vm._t(\"trigger\")]},proxy:true}],null,true)},[_vm._v(\" \"),_c('div',{staticClass:\"searchable-list__wrapper\"},[_c('NcTextField',{attrs:{\"label\":_vm.labelText,\"trailing-button-icon\":\"close\",\"show-trailing-button\":_vm.searchTerm !== ''},on:{\"update:value\":_vm.searchTermChanged,\"trailing-button-click\":_vm.clearSearch},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}},[_c('IconMagnify',{attrs:{\"size\":20}})],1),_vm._v(\" \"),(_vm.filteredList.length > 0)?_c('ul',{staticClass:\"searchable-list__list\"},_vm._l((_vm.filteredList),function(element){return _c('li',{key:element.id,attrs:{\"title\":element.displayName,\"role\":\"button\"}},[_c('NcButton',{attrs:{\"alignment\":\"start\",\"variant\":\"tertiary\",\"wide\":true},on:{\"click\":function($event){return _vm.itemSelected(element)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(element.isUser)?_c('NcAvatar',{attrs:{\"user\":element.user,\"hide-user-status\":\"\"}}):_c('NcAvatar',{attrs:{\"is-no-user\":true,\"display-name\":element.displayName,\"hide-user-status\":\"\"}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(element.displayName)+\"\\n\\t\\t\\t\\t\")])],1)}),0):_c('div',{staticClass:\"searchable-list__empty-content\"},[_c('NcEmptyContent',{attrs:{\"name\":_vm.emptyContentText},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}])})],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircleOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircleOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AlertCircleOutline.vue?vue&type=template&id=da40788e\"\nimport script from \"./AlertCircleOutline.vue?vue&type=script&lang=js\"\nexport * from \"./AlertCircleOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-circle-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_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!./SearchableList.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!./SearchableList.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\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!./SearchableList.vue?vue&type=style&index=0&id=37b50471&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./SearchableList.vue?vue&type=style&index=0&id=37b50471&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchableList.vue?vue&type=template&id=37b50471&scoped=true\"\nimport script from \"./SearchableList.vue?vue&type=script&lang=js\"\nexport * from \"./SearchableList.vue?vue&type=script&lang=js\"\nimport style0 from \"./SearchableList.vue?vue&type=style&index=0&id=37b50471&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 \"37b50471\",\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!./SearchFilterChip.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!./SearchFilterChip.vue?vue&type=script&lang=js\"","\n\n\n\n\n\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!./SearchFilterChip.vue?vue&type=style&index=0&id=60a863d2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./SearchFilterChip.vue?vue&type=style&index=0&id=60a863d2&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchFilterChip.vue?vue&type=template&id=60a863d2&scoped=true\"\nimport script from \"./SearchFilterChip.vue?vue&type=script&lang=js\"\nexport * from \"./SearchFilterChip.vue?vue&type=script&lang=js\"\nimport style0 from \"./SearchFilterChip.vue?vue&type=style&index=0&id=60a863d2&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 \"60a863d2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"chip\"},[_c('span',{staticClass:\"icon\"},[_vm._t(\"icon\"),_vm._v(\" \"),(_vm.pretext.length)?_c('span',[_vm._v(\" \"+_vm._s(_vm.pretext)+\" : \")]):_vm._e()],2),_vm._v(\" \"),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.text))]),_vm._v(\" \"),_c('span',{staticClass:\"close-icon\",on:{\"click\":_vm.deleteChip}},[_c('CloseIcon',{attrs:{\"size\":18}})],1)])\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\n\n\n\n\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=ca416b22&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=ca416b22&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=ca416b22&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=ca416b22&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 \"ca416b22\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{staticClass:\"result-item\",attrs:{\"name\":_vm.title,\"bold\":false,\"href\":_vm.resourceUrl,\"target\":\"_self\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"result-item__icon\",class:{\n\t\t\t\t'result-item__icon--rounded': _vm.rounded,\n\t\t\t\t'result-item__icon--no-preview': !_vm.isValidIconOrPreviewUrl(_vm.thumbnailUrl),\n\t\t\t\t'result-item__icon--with-thumbnail': _vm.isValidIconOrPreviewUrl(_vm.thumbnailUrl),\n\t\t\t\t[_vm.icon]: !_vm.isValidIconOrPreviewUrl(_vm.icon),\n\t\t\t},style:({\n\t\t\t\tbackgroundImage: _vm.isValidIconOrPreviewUrl(_vm.icon) ? `url(${_vm.icon})` : '',\n\t\t\t}),attrs:{\"aria-hidden\":\"true\"}},[(_vm.isValidIconOrPreviewUrl(_vm.thumbnailUrl) && !_vm.thumbnailHasError)?_c('img',{attrs:{\"src\":_vm.thumbnailUrl},on:{\"error\":_vm.thumbnailErrorHandler}}):_vm._e()])]},proxy:true},{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.subline)+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\n/**\n *\n * @param user\n */\nfunction getLogger(user) {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\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}\n */\nexport async function getProviders() {\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\tlogger.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 * @param {string} options.since the search\n * @param {string} options.until the search\n * @param {string} options.limit the search\n * @param {string} options.person the search\n * @param {object} options.extraQueries additional queries to filter search results\n * @return {object} {request: Promise, cancel: Promise}\n */\nexport function search({ type, query, cursor, since, until, limit, person, extraQueries = {} }) {\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\tsince,\n\t\t\tuntil,\n\t\t\tlimit,\n\t\t\tperson,\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\t...extraQueries,\n\t\t},\n\t})\n\n\treturn {\n\t\trequest,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\n/**\n * Get the list of active contacts\n *\n * @param {object} filter filter contacts by string\n * @param {string} filter.searchTerm the query\n * @return {object} {request: Promise}\n */\nexport async function getContacts({ searchTerm }) {\n\tconst { data: { contacts } } = await axios.post(generateUrl('/contactsmenu/contacts'), {\n\t\tfilter: searchTerm,\n\t})\n\t/*\n\t * Add authenticated user to list of contacts for search filter\n\t * If authtenicated user is searching/filtering, do not add them to the list\n\t */\n\tif (!searchTerm) {\n\t\tlet authenticatedUser = getCurrentUser()\n\t\tauthenticatedUser = {\n\t\t\tid: authenticatedUser.uid,\n\t\t\tfullName: authenticatedUser.displayName,\n\t\t\temailAddresses: [],\n\t\t}\n\t\tcontacts.unshift(authenticatedUser)\n\t\treturn contacts\n\t}\n\n\treturn contacts\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia'\n\nexport const useSearchStore = defineStore('search', {\n\tstate: () => ({\n\t\texternalFilters: [],\n\t}),\n\n\tactions: {\n\t\tregisterExternalFilter({ id, appId, searchFrom, label, callback, icon }) {\n\t\t\tthis.externalFilters.push({ id, appId, searchFrom, name: label, callback, icon, isPluginFilter: true })\n\t\t},\n\t},\n})\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchModal.vue?vue&type=script&lang=ts\"","\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!./UnifiedSearchModal.vue?vue&type=style&index=0&id=1f99d7d9&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UnifiedSearchModal.vue?vue&type=style&index=0&id=1f99d7d9&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearchModal.vue?vue&type=template&id=1f99d7d9&scoped=true\"\nimport script from \"./UnifiedSearchModal.vue?vue&type=script&lang=ts\"\nexport * from \"./UnifiedSearchModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UnifiedSearchModal.vue?vue&type=style&index=0&id=1f99d7d9&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 \"1f99d7d9\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"unified-search-menu\"},[_c('UnifiedSearchInput',{attrs:{\"query\":_vm.queryText,\"expanded\":_vm.showUnifiedSearch || _vm.showLocalSearch},on:{\"click\":_vm.openModal,\"update:query\":function($event){_vm.queryText = $event}}}),_vm._v(\" \"),(_vm.supportsLocalSearch)?_c('UnifiedSearchLocalSearchBar',{attrs:{\"open\":_vm.showLocalSearch,\"query\":_vm.queryText},on:{\"globalSearch\":_vm.openModal,\"update:open\":function($event){_vm.showLocalSearch = $event},\"update:query\":function($event){_vm.queryText = $event}}}):_vm._e(),_vm._v(\" \"),_c('UnifiedSearchModal',{attrs:{\"localSearch\":_vm.supportsLocalSearch,\"query\":_vm.queryText,\"open\":_vm.showUnifiedSearch},on:{\"update:query\":function($event){_vm.queryText = $event},\"update:open\":function($event){_vm.showUnifiedSearch = $event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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=786997b4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=786997b4&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=786997b4&scoped=true\"\nimport script from \"./UnifiedSearch.vue?vue&type=script&lang=ts\"\nexport * from \"./UnifiedSearch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UnifiedSearch.vue?vue&type=style&index=0&id=786997b4&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 \"786997b4\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { translatePlural as n, translate as t } from '@nextcloud/l10n';\nimport { getLoggerBuilder } from '@nextcloud/logger';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport UnifiedSearch from './views/UnifiedSearch.vue';\nimport { useSearchStore } from '../src/store/unified-search-external-filters.js';\n__webpack_nonce__ = getCSPNonce();\nconst logger = getLoggerBuilder()\n .setApp('unified-search')\n .detectUser()\n .build();\nVue.mixin({\n data() {\n return {\n logger,\n };\n },\n methods: {\n t,\n n,\n },\n});\n// Register the add/register filter action API globally\nwindow.OCA = window.OCA || {};\nwindow.OCA.UnifiedSearch = {\n registerFilterAction: ({ id, appId, searchFrom, label, callback, icon }) => {\n const searchStore = useSearchStore();\n searchStore.registerExternalFilter({ id, appId, searchFrom, label, callback, icon });\n },\n};\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\nexport default new Vue({\n el: '#unified-search',\n pinia,\n name: 'UnifiedSearchRoot',\n render: (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, `.unified-search-custom-date-modal[data-v-2907014b]{padding:10px 20px 10px 20px}.unified-search-custom-date-modal h1[data-v-2907014b]{font-size:16px;font-weight:bolder;line-height:2em}.unified-search-custom-date-modal__pickers[data-v-2907014b]{display:flex;flex-direction:column}.unified-search-custom-date-modal__footer[data-v-2907014b]{display:flex;justify-content:end}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/CustomDateRangeModal.vue\"],\"names\":[],\"mappings\":\"AACA,mDACC,2BAAA,CAEA,sDACC,cAAA,CACA,kBAAA,CACA,eAAA,CAGD,4DACC,YAAA,CACA,qBAAA,CAGD,2DACC,YAAA,CACA,mBAAA\",\"sourcesContent\":[\"\\n.unified-search-custom-date-modal {\\n\\tpadding: 10px 20px 10px 20px;\\n\\n\\th1 {\\n\\t\\tfont-size: 16px;\\n\\t\\tfont-weight: bolder;\\n\\t\\tline-height: 2em;\\n\\t}\\n\\n\\t&__pickers {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: end;\\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, `.chip[data-v-60a863d2]{display:flex;align-items:center;padding:2px 4px;border:1px solid var(--color-primary-element-light);border-radius:20px;background-color:var(--color-primary-element-light);margin:2px}.chip .icon[data-v-60a863d2]{display:flex;align-items:center;padding-inline-end:5px}.chip .icon img[data-v-60a863d2]{width:20px;padding:2px;border-radius:20px;filter:var(--background-invert-if-bright)}.chip .text[data-v-60a863d2]{margin:0 2px}.chip .close-icon[data-v-60a863d2]{cursor:pointer}.chip .close-icon[data-v-60a863d2] :hover{filter:invert(20%)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchFilterChip.vue\"],\"names\":[],\"mappings\":\"AACA,uBACI,YAAA,CACA,kBAAA,CACA,eAAA,CACA,mDAAA,CACA,kBAAA,CACA,mDAAA,CACA,UAAA,CAEA,6BACI,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,iCACI,UAAA,CACA,WAAA,CACA,kBAAA,CACA,yCAAA,CAIR,6BACI,YAAA,CAGJ,mCACI,cAAA,CAEA,0CACI,kBAAA\",\"sourcesContent\":[\"\\n.chip {\\n display: flex;\\n align-items: center;\\n padding: 2px 4px;\\n border: 1px solid var(--color-primary-element-light);\\n border-radius: 20px;\\n background-color: var(--color-primary-element-light);\\n margin: 2px;\\n\\n .icon {\\n display: flex;\\n align-items: center;\\n padding-inline-end: 5px;\\n\\n img {\\n width: 20px;\\n padding: 2px;\\n border-radius: 20px;\\n filter: var(--background-invert-if-bright);\\n }\\n }\\n\\n .text {\\n margin: 0 2px;\\n }\\n\\n .close-icon {\\n cursor: pointer ;\\n\\n :hover {\\n filter: invert(20%);\\n }\\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, `.result-item[data-v-ca416b22] a{border:2px solid rgba(0,0,0,0);border-radius:var(--border-radius-large) !important}.result-item[data-v-ca416b22] a:active,.result-item[data-v-ca416b22] a:hover,.result-item[data-v-ca416b22] a:focus{background-color:var(--color-background-hover);border:2px solid var(--color-border-maxcontrast)}.result-item[data-v-ca416b22] a *{cursor:pointer}.result-item__icon[data-v-ca416b22]{overflow:hidden;width:var(--default-clickable-area);height:var(--default-clickable-area);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.result-item__icon--rounded[data-v-ca416b22]{border-radius:calc(var(--default-clickable-area)/2)}.result-item__icon--no-preview[data-v-ca416b22]{background-size:32px}.result-item__icon--with-thumbnail[data-v-ca416b22]{background-size:cover}.result-item__icon--with-thumbnail[data-v-ca416b22]:not(.result-item__icon--rounded){border:1px solid var(--color-border);max-height:calc(var(--default-clickable-area) - 2px);max-width:calc(var(--default-clickable-area) - 2px)}.result-item__icon img[data-v-ca416b22]{width:100%;height:100%;object-fit:cover;object-position:center}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResult.vue\"],\"names\":[],\"mappings\":\"AAEC,gCACC,8BAAA,CACA,mDAAA,CAEA,mHAGC,8CAAA,CACA,gDAAA,CAGD,kCACC,cAAA,CAIF,oCACC,eAAA,CACA,mCAAA,CACA,oCAAA,CACA,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CAEA,6CACC,mDAAA,CAGD,gDACC,oBAAA,CAGD,oDACC,qBAAA,CAGD,qFACC,oCAAA,CAEA,oDAAA,CACA,mDAAA,CAGD,wCAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n.result-item {\\n\\t:deep(a) {\\n\\t\\tborder: 2px solid transparent;\\n\\t\\tborder-radius: var(--border-radius-large) !important;\\n\\n\\t\\t&:active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-border-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t* {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: var(--default-clickable-area);\\n\\t\\theight: var(--default-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\\n\\t\\t&--rounded {\\n\\t\\t\\tborder-radius: calc(var(--default-clickable-area) / 2);\\n\\t\\t}\\n\\n\\t\\t&--no-preview {\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t}\\n\\n\\t\\t&--with-thumbnail {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\n\\t\\t&--with-thumbnail:not(#{&}--rounded) {\\n\\t\\t\\tborder: 1px solid var(--color-border);\\n\\t\\t\\t// compensate for border\\n\\t\\t\\tmax-height: calc(var(--default-clickable-area) - 2px);\\n\\t\\t\\tmax-width: calc(var(--default-clickable-area) - 2px);\\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\"],\"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, `.searchable-list__wrapper[data-v-37b50471]{padding:calc(var(--default-grid-baseline)*3);display:flex;flex-direction:column;align-items:center;width:250px}.searchable-list__list[data-v-37b50471]{width:100%;max-height:284px;overflow-y:auto;margin-top:var(--default-grid-baseline);padding:var(--default-grid-baseline)}.searchable-list__list[data-v-37b50471] .button-vue{border-radius:var(--border-radius-large) !important}.searchable-list__list[data-v-37b50471] .button-vue span{font-weight:initial}.searchable-list__empty-content[data-v-37b50471]{margin-top:calc(var(--default-grid-baseline)*3)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchableList.vue\"],\"names\":[],\"mappings\":\"AAEC,2CACC,4CAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,WAAA,CAGD,wCACC,UAAA,CACA,gBAAA,CACA,eAAA,CACA,uCAAA,CACA,oCAAA,CAEA,oDACC,mDAAA,CACA,yDACC,mBAAA,CAKH,iDACC,+CAAA\",\"sourcesContent\":[\"\\n.searchable-list {\\n\\t&__wrapper {\\n\\t\\tpadding: calc(var(--default-grid-baseline) * 3);\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\twidth: 250px;\\n\\t}\\n\\n\\t&__list {\\n\\t\\twidth: 100%;\\n\\t\\tmax-height: 284px;\\n\\t\\toverflow-y: auto;\\n\\t\\tmargin-top: var(--default-grid-baseline);\\n\\t\\tpadding: var(--default-grid-baseline);\\n\\n\\t\\t:deep(.button-vue) {\\n\\t\\t\\tborder-radius: var(--border-radius-large) !important;\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tfont-weight: initial;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__empty-content {\\n\\t\\tmargin-top: calc(var(--default-grid-baseline) * 3);\\n\\t}\\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-input[data-v-4fc6c0ec]{position:relative;z-index:51}.unified-search-input[data-v-4fc6c0ec]:not(.unified-search-input--mobile){display:flex;align-items:center;width:clamp(200px,35vw,600px);max-width:calc(100% - 32px)}.unified-search-input--mobile[data-v-4fc6c0ec]{display:contents}.unified-search-input__field[data-v-4fc6c0ec]{--resting-background: rgba(0, 0, 0, 0.15);--resting-background-hover: rgba(0, 0, 0, 0.22);--search-icon-pad: 12px;--search-icon-size: 20px;--search-icon-gap: 8px;--search-anim-duration: 240ms;--search-anim-easing: cubic-bezier(0.22, 1, 0.36, 1);position:relative;container-type:inline-size;display:flex;align-items:center;height:var(--default-clickable-area);width:100%;border-radius:var(--border-radius-element, 8px);box-shadow:inset 0 2px 0 rgba(0,0,0,.12);background-color:var(--resting-background);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);transition:background-color var(--search-anim-duration) var(--search-anim-easing),box-shadow var(--search-anim-duration) var(--search-anim-easing)}.unified-search-input__field[data-v-4fc6c0ec]:hover:not(.unified-search-input__field--active){background-color:var(--resting-background-hover)}.unified-search-input__field--active[data-v-4fc6c0ec]{background-color:var(--color-main-background);box-shadow:none}.unified-search-input__resting[data-v-4fc6c0ec]{--slide-sign: 1;position:absolute;inset-block:0;inset-inline-start:var(--search-icon-pad);max-width:calc(100% - 2*var(--search-icon-pad));display:flex;align-items:center;gap:var(--search-icon-gap);pointer-events:none;color:color-mix(in srgb, var(--color-background-plain-text) 70%, var(--color-background-plain));transform:translateX(calc(var(--slide-sign) * (50cqi - 50% - var(--search-icon-pad))));transition:transform var(--search-anim-duration) var(--search-anim-easing),color var(--search-anim-duration) var(--search-anim-easing)}.unified-search-input__field--active .unified-search-input__resting[data-v-4fc6c0ec]{transform:translateX(0);color:var(--color-text-maxcontrast)}.unified-search-input__label[data-v-4fc6c0ec]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;transition:opacity var(--search-anim-duration) var(--search-anim-easing)}.unified-search-input__resting--filled .unified-search-input__label[data-v-4fc6c0ec]{opacity:0}.unified-search-input__resting[data-v-4fc6c0ec] .material-design-icon__svg{display:block;transform:translateY(1px)}.unified-search-input__input[data-v-4fc6c0ec]{flex:1;min-width:0;height:100%;margin:0;padding-inline:calc(var(--search-icon-pad) + var(--search-icon-size) + var(--search-icon-gap)) var(--search-icon-pad);border:none !important;border-radius:0 !important;box-shadow:none !important;background-color:rgba(0,0,0,0);color:var(--color-main-text);font-size:var(--default-font-size)}.unified-search-input__input[data-v-4fc6c0ec]::placeholder{opacity:1;color:var(--color-text-maxcontrast)}.unified-search-input__input[data-v-4fc6c0ec]:focus-visible{outline:none}.unified-search-input__clear[data-v-4fc6c0ec]{flex-shrink:0;margin-inline-end:2px}[data-theme-dark] .unified-search-input__field[data-v-4fc6c0ec],[data-theme-dark-highcontrast] .unified-search-input__field[data-v-4fc6c0ec]{--resting-background: color-mix(in srgb, var(--color-primary-element) 16%, transparent);--resting-background-hover: color-mix(in srgb, var(--color-primary-element) 22%, transparent)}[dir=rtl] .unified-search-input__resting[data-v-4fc6c0ec]{--slide-sign: -1}@media(prefers-reduced-motion: reduce){.unified-search-input__resting[data-v-4fc6c0ec],.unified-search-input__resting span[data-v-4fc6c0ec]{transition:none}}.unified-search-input--mobile[data-v-4fc6c0ec] .header-menu{height:var(--default-clickable-area)}.unified-search-input--mobile[data-v-4fc6c0ec] .header-menu__trigger{--button-size: var(--default-clickable-area) !important;height:var(--default-clickable-area) !important}.unified-search-input--mobile[data-v-4fc6c0ec] .button-vue{--color-main-text: var(--color-background-plain-text);color:var(--color-background-plain-text);border-radius:var(--border-radius-element) !important}.unified-search-input--mobile[data-v-4fc6c0ec] .button-vue:hover:not(:disabled){background-color:rgba(0,0,0,.1) !important}.unified-search-input--mobile[data-v-4fc6c0ec] .button-vue:active:not(:disabled){background-color:rgba(0,0,0,.15) !important}.unified-search-input--mobile[data-v-4fc6c0ec] .button-vue:focus-visible{background-color:rgba(0,0,0,.1) !important;outline:none !important;box-shadow:inset 0 0 0 2px var(--color-background-plain-text) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/UnifiedSearchInput.vue\"],\"names\":[],\"mappings\":\"AACA,uCAGC,iBAAA,CACA,UAAA,CAEA,0EACC,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,2BAAA,CAGD,+CACC,gBAAA,CAGD,8CACC,yCAAA,CACA,+CAAA,CAGA,uBAAA,CACA,wBAAA,CACA,sBAAA,CAGA,6BAAA,CACA,oDAAA,CACA,iBAAA,CAEA,0BAAA,CACA,YAAA,CACA,kBAAA,CAGA,oCAAA,CACA,UAAA,CACA,+CAAA,CACA,wCAAA,CAEA,0CAAA,CACA,qDAAA,CACA,6CAAA,CAEA,kJACC,CAGD,8FACC,gDAAA,CAID,sDACC,6CAAA,CACA,eAAA,CAQF,gDACC,eAAA,CACA,iBAAA,CACA,aAAA,CACA,yCAAA,CACA,+CAAA,CACA,YAAA,CACA,kBAAA,CACA,0BAAA,CACA,mBAAA,CACA,+FAAA,CACA,sFAAA,CACA,sIACC,CAGD,qFACC,uBAAA,CACA,mCAAA,CAOF,8CACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,wEAAA,CAGD,qFACC,SAAA,CAOD,2EACC,aAAA,CACA,yBAAA,CAKD,8CACC,MAAA,CACA,WAAA,CACA,WAAA,CACA,QAAA,CAGA,qHAAA,CAIA,sBAAA,CACA,0BAAA,CACA,0BAAA,CACA,8BAAA,CACA,4BAAA,CACA,kCAAA,CAEA,2DACC,SAAA,CACA,mCAAA,CAGD,4DACC,YAAA,CAIF,8CACC,aAAA,CACA,qBAAA,CAMF,6IAEC,uFAAA,CACA,6FAAA,CAKD,0DACC,gBAAA,CAKD,uCACC,qGAEC,eAAA,CAAA,CAKF,4DACC,oCAAA,CAGD,qEACC,uDAAA,CACA,+CAAA,CAGD,2DACC,qDAAA,CACA,wCAAA,CACA,qDAAA,CAEA,gFACC,0CAAA,CAGD,iFACC,2CAAA,CAGD,yEACC,0CAAA,CACA,uBAAA,CACA,wEAAA\",\"sourcesContent\":[\"\\n.unified-search-input {\\n\\t// Paints above the modal root (z-index: 50) so the header input stays clickable\\n\\t// over the scrim while the popover is open. Keep 51 one above that value.\\n\\tposition: relative;\\n\\tz-index: 51;\\n\\n\\t&:not(.unified-search-input--mobile) {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\twidth: clamp(200px, 35vw, 600px);\\n\\t\\tmax-width: calc(100% - 32px);\\n\\t}\\n\\n\\t&--mobile {\\n\\t\\tdisplay: contents;\\n\\t}\\n\\n\\t&__field {\\n\\t\\t--resting-background: rgba(0, 0, 0, 0.15);\\n\\t\\t--resting-background-hover: rgba(0, 0, 0, 0.22);\\n\\t\\t// Shared geometry: the resting group and the input's leading padding read the\\n\\t\\t// same tokens so the placeholder and the typed value line up.\\n\\t\\t--search-icon-pad: 12px;\\n\\t\\t--search-icon-size: 20px;\\n\\t\\t--search-icon-gap: 8px;\\n\\t\\t// One shared timing for every focus transition (background, the icon/label\\n\\t\\t// slide, the recolour) so they move together. easeOutQuart = soft landing.\\n\\t\\t--search-anim-duration: 240ms;\\n\\t\\t--search-anim-easing: cubic-bezier(0.22, 1, 0.36, 1);\\n\\t\\tposition: relative;\\n\\t\\t// Query container so the resting group can centre itself with cqi units\\n\\t\\tcontainer-type: inline-size;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\t// Match the default clickable area so the inner (which the global\\n\\t\\t// input reset forces to that height) fills the field without an override.\\n\\t\\theight: var(--default-clickable-area);\\n\\t\\twidth: 100%;\\n\\t\\tborder-radius: var(--border-radius-element, 8px);\\n\\t\\tbox-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.12);\\n\\t\\t// Resting: subdued \\\"button\\\" look that sits on the themed header\\n\\t\\tbackground-color: var(--resting-background);\\n\\t\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\t\\tbackdrop-filter: var(--filter-background-blur);\\n\\t\\t// Blue tint -> white surface on the shared timing, in step with the slide.\\n\\t\\ttransition:\\n\\t\\t\\tbackground-color var(--search-anim-duration) var(--search-anim-easing),\\n\\t\\t\\tbox-shadow var(--search-anim-duration) var(--search-anim-easing);\\n\\n\\t\\t&:hover:not(.unified-search-input__field--active) {\\n\\t\\t\\tbackground-color: var(--resting-background-hover);\\n\\t\\t}\\n\\n\\t\\t// Active: real input surface once focused or filled\\n\\t\\t&--active {\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\t}\\n\\n\\t// Anchored at the leading edge and translated to the centre while at rest; on\\n\\t// focus (--active) the translate goes to 0 and it slides into place. Centre offset\\n\\t// is pure CSS: half the field (50cqi) minus half the group (50%) minus the pad, so\\n\\t// it self-corrects for any placeholder length or field width.\\n\\t&__resting {\\n\\t\\t--slide-sign: 1;\\n\\t\\tposition: absolute;\\n\\t\\tinset-block: 0;\\n\\t\\tinset-inline-start: var(--search-icon-pad);\\n\\t\\tmax-width: calc(100% - 2 * var(--search-icon-pad));\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tgap: var(--search-icon-gap);\\n\\t\\tpointer-events: none;\\n\\t\\tcolor: color-mix(in srgb, var(--color-background-plain-text) 70%, var(--color-background-plain));\\n\\t\\ttransform: translateX(calc(var(--slide-sign) * (50cqi - 50% - var(--search-icon-pad))));\\n\\t\\ttransition:\\n\\t\\t\\ttransform var(--search-anim-duration) var(--search-anim-easing),\\n\\t\\t\\tcolor var(--search-anim-duration) var(--search-anim-easing);\\n\\n\\t\\t.unified-search-input__field--active & {\\n\\t\\t\\ttransform: translateX(0);\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\n\\t// Placeholder text inside the resting group. Ellipsised, and hidden once typing\\n\\t// starts so it doesn't overlap the value. Scoped to the label class so the sibling\\n\\t// magnifier (also rendered as a ) stays visible.\\n\\t&__label {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\ttransition: opacity var(--search-anim-duration) var(--search-anim-easing);\\n\\t}\\n\\n\\t&__resting--filled &__label {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t// The material-design icon is inline (baseline-aligned), which leaves a\\n\\t// descender gap and makes the glyph sit high even when its box is centred.\\n\\t// Render it as a block so it fills its box, then nudge 1px down to sit on the\\n\\t// text's optical centre (a geometrically centred glyph reads slightly high).\\n\\t&__resting :deep(.material-design-icon__svg) {\\n\\t\\tdisplay: block;\\n\\t\\ttransform: translateY(1px);\\n\\t}\\n\\n\\t// Only visible once active (at rest it's empty and covered by the overlay),\\n\\t// so it's styled for the active/white surface throughout.\\n\\t&__input {\\n\\t\\tflex: 1;\\n\\t\\tmin-width: 0;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\t// Leading space so the placeholder/value starts one gap past the magnifier,\\n\\t\\t// matching the resting group exactly. Trailing padding mirrors the leading pad.\\n\\t\\tpadding-inline: calc(var(--search-icon-pad) + var(--search-icon-size) + var(--search-icon-gap)) var(--search-icon-pad);\\n\\t\\t// Opt out of NC's global input chrome (core/css/inputs.scss adds a border,\\n\\t\\t// radius and focus box-shadow to any text input not in its exclusion list).\\n\\t\\t// !important because that global focus rule outweighs a scoped class.\\n\\t\\tborder: none !important;\\n\\t\\tborder-radius: 0 !important;\\n\\t\\tbox-shadow: none !important;\\n\\t\\tbackground-color: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tfont-size: var(--default-font-size);\\n\\n\\t\\t&::placeholder {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t&:focus-visible {\\n\\t\\t\\toutline: none;\\n\\t\\t}\\n\\t}\\n\\n\\t&__clear {\\n\\t\\tflex-shrink: 0;\\n\\t\\tmargin-inline-end: 2px;\\n\\t}\\n}\\n\\n// On dark themes the plain overlay is nearly invisible on the header, so tint\\n// the resting background with the primary colour instead.\\n[data-theme-dark] .unified-search-input__field,\\n[data-theme-dark-highcontrast] .unified-search-input__field {\\n\\t--resting-background: color-mix(in srgb, var(--color-primary-element) 16%, transparent);\\n\\t--resting-background-hover: color-mix(in srgb, var(--color-primary-element) 22%, transparent);\\n}\\n\\n// translateX is physical, so flip the resting slide under RTL to keep it moving\\n// toward the leading (right) edge.\\n[dir=rtl] .unified-search-input__resting {\\n\\t--slide-sign: -1;\\n}\\n\\n// Respect reduced-motion: keep the end states but drop the slide/fade so nothing\\n// animates on focus.\\n@media (prefers-reduced-motion: reduce) {\\n\\t.unified-search-input__resting,\\n\\t.unified-search-input__resting span {\\n\\t\\ttransition: none;\\n\\t}\\n}\\n\\n// Mobile: NcHeaderButton styling to match the other header items\\n.unified-search-input--mobile :deep(.header-menu) {\\n\\theight: var(--default-clickable-area);\\n}\\n\\n.unified-search-input--mobile :deep(.header-menu__trigger) {\\n\\t--button-size: var(--default-clickable-area) !important;\\n\\theight: var(--default-clickable-area) !important;\\n}\\n\\n.unified-search-input--mobile :deep(.button-vue) {\\n\\t--color-main-text: var(--color-background-plain-text);\\n\\tcolor: var(--color-background-plain-text);\\n\\tborder-radius: var(--border-radius-element) !important;\\n\\n\\t&:hover:not(:disabled) {\\n\\t\\tbackground-color: rgba(0, 0, 0, 0.1) !important;\\n\\t}\\n\\n\\t&:active:not(:disabled) {\\n\\t\\tbackground-color: rgba(0, 0, 0, 0.15) !important;\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\tbackground-color: rgba(0, 0, 0, 0.1) !important;\\n\\t\\toutline: none !important;\\n\\t\\tbox-shadow: inset 0 0 0 2px var(--color-background-plain-text) !important;\\n\\t}\\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, `.local-unified-search[data-v-2b577e50]{--local-search-width: min(calc(250px + var(--dfb017de)), 95vw);box-sizing:border-box;position:relative;height:var(--header-height);width:var(--local-search-width);display:flex;align-items:center;z-index:10;padding-inline:var(--border-width-input-focused);overflow:hidden;inset-inline-end:0}.local-unified-search .local-unified-search__global-search[data-v-2b577e50]{position:absolute;inset-inline-end:var(--default-clickable-area)}.local-unified-search .local-unified-search__input[data-v-2b577e50]{box-sizing:border-box;margin:0;width:var(--local-search-width)}.local-unified-search .local-unified-search__input[data-v-2b577e50] input{padding-inline-end:calc(var(--dfb017de) + var(--default-clickable-area))}.animated-width[data-v-2b577e50]{transition:width var(--animation-quick) linear}.v-leave-active[data-v-2b577e50]{position:absolute !important}.v-enter.local-unified-search[data-v-2b577e50],.v-leave-to.local-unified-search[data-v-2b577e50]{--local-search-width: var(--clickable-area-large)}@media screen and (max-width: 500px){.local-unified-search.local-unified-search--open[data-v-2b577e50]{--local-search-width: 100vw;padding-inline:var(--default-grid-baseline)}.unified-search-menu:has(.local-unified-search--open){position:absolute !important;inset-inline:0}.header-end:has(.local-unified-search--open) > :not(.unified-search-menu){display:none}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,8DAAA,CACA,qBAAA,CACA,iBAAA,CACA,2BAAA,CACA,+BAAA,CACA,YAAA,CACA,kBAAA,CAEA,UAAA,CAEA,gDAAA,CAEA,eAAA,CAEA,kBAAA,CAEA,4EACC,iBAAA,CACA,8CAAA,CAGD,oEACC,qBAAA,CAEA,QAAA,CACA,+BAAA,CAIA,0EAEC,wEAAA,CAKH,iCACC,8CAAA,CAKD,iCACC,4BAAA,CAKA,iGAEC,iDAAA,CAIF,qCACC,kEAEC,2BAAA,CACA,2CAAA,CAID,sDACC,4BAAA,CACA,cAAA,CAGD,0EACC,YAAA,CAAA\",\"sourcesContent\":[\"\\n.local-unified-search {\\n\\t--local-search-width: min(calc(250px + v-bind('searchGlobalButtonCSSWidth')), 95vw);\\n\\tbox-sizing: border-box;\\n\\tposition: relative;\\n\\theight: var(--header-height);\\n\\twidth: var(--local-search-width);\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\t// Ensure it overlays the other entries\\n\\tz-index: 10;\\n\\t// add some padding for the focus visible outline\\n\\tpadding-inline: var(--border-width-input-focused);\\n\\t// hide the overflow - needed for the transition\\n\\toverflow: hidden;\\n\\t// Ensure the position is fixed also during \\\"position: absolut\\\" (transition)\\n\\tinset-inline-end: 0;\\n\\n\\t#{&} &__global-search {\\n\\t\\tposition: absolute;\\n\\t\\tinset-inline-end: var(--default-clickable-area);\\n\\t}\\n\\n\\t#{&} &__input {\\n\\t\\tbox-sizing: border-box;\\n\\t\\t// override some nextcloud-vue styles\\n\\t\\tmargin: 0;\\n\\t\\twidth: var(--local-search-width);\\n\\n\\t\\t// Fixup the spacing so we can fit in the \\\"search globally\\\" button\\n\\t\\t// this can break at any time the component library changes\\n\\t\\t:deep(input) {\\n\\t\\t\\t// search global width + close button width\\n\\t\\t\\tpadding-inline-end: calc(v-bind('searchGlobalButtonCSSWidth') + var(--default-clickable-area));\\n\\t\\t}\\n\\t}\\n}\\n\\n.animated-width {\\n\\ttransition: width var(--animation-quick) linear;\\n}\\n\\n// Make the position absolute during the transition\\n// this is needed to \\\"hide\\\" the button behind it\\n.v-leave-active {\\n\\tposition: absolute !important;\\n}\\n\\n.v-enter,\\n.v-leave-to {\\n\\t&.local-unified-search {\\n\\t\\t// Start with only the overlay button\\n\\t\\t--local-search-width: var(--clickable-area-large);\\n\\t}\\n}\\n\\n@media screen and (max-width: 500px) {\\n\\t.local-unified-search.local-unified-search--open {\\n\\t\\t// 100% but still show the menu toggle on the very right\\n\\t\\t--local-search-width: 100vw;\\n\\t\\tpadding-inline: var(--default-grid-baseline);\\n\\t}\\n\\n\\t// when open we need to position it absolute to allow overlay the full bar\\n\\t:global(.unified-search-menu:has(.local-unified-search--open)) {\\n\\t\\tposition: absolute !important;\\n\\t\\tinset-inline: 0;\\n\\t}\\n\\t// Hide all other entries, especially the user menu as it might leak pixels\\n\\t:global(.header-end:has(.local-unified-search--open) > :not(.unified-search-menu)) {\\n\\t\\tdisplay: none;\\n\\t}\\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-modal-root[data-v-1f99d7d9]{position:absolute;inset-block-start:100%;inset-inline:0;z-index:50 !important;margin-block-start:6px;display:flex;justify-content:center}.unified-search-modal__scrim[data-v-1f99d7d9]{position:fixed;inset:0;z-index:0;--backdrop-color: 0, 0, 0;background-color:rgba(var(--backdrop-color), 0.5)}.unified-search-modal__container[data-v-1f99d7d9]{position:relative;z-index:1;display:flex;flex-direction:column;flex-shrink:0;width:600px;max-width:90vw;max-height:calc(90vh - var(--header-height));border-radius:var(--border-radius-container, var(--border-radius-rounded));overflow:hidden;background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 40px rgba(0,0,0,.2);transition:transform 240ms cubic-bezier(0.22, 1, 0.36, 1)}@media only screen and ((max-width: 512px) or (max-height: 400px)){.unified-search-modal-root[data-v-1f99d7d9]{position:fixed;inset-block-start:var(--header-height);inset-inline:0;inset-block-end:0;margin-block-start:0}.unified-search-modal__container[data-v-1f99d7d9]{width:100%;max-width:initial;height:100%;max-height:initial;border-radius:0}}.unified-search-modal-enter-active[data-v-1f99d7d9],.unified-search-modal-leave-active[data-v-1f99d7d9]{transition:opacity 250ms}.unified-search-modal-enter[data-v-1f99d7d9],.unified-search-modal-leave-to[data-v-1f99d7d9]{opacity:0}.unified-search-modal-enter .unified-search-modal__container[data-v-1f99d7d9],.unified-search-modal-leave-to .unified-search-modal__container[data-v-1f99d7d9]{transform:translateY(-6px)}@media(prefers-reduced-motion: reduce){.unified-search-modal__container[data-v-1f99d7d9]{transition:none}.unified-search-modal-enter .unified-search-modal__container[data-v-1f99d7d9],.unified-search-modal-leave-to .unified-search-modal__container[data-v-1f99d7d9]{transform:none}}.unified-search-modal__header[data-v-1f99d7d9]{background-color:var(--color-main-background);padding-inline:12px;padding-block:12px;position:sticky;top:6px}.unified-search-modal__mobile-input[data-v-1f99d7d9]{display:flex;align-items:center;gap:4px;margin-block-end:8px}.unified-search-modal__mobile-input[data-v-1f99d7d9] .input-field{flex:1 1 auto}.unified-search-modal__filters[data-v-1f99d7d9]{display:flex;flex-wrap:wrap;gap:4px;justify-content:start;padding-top:4px}.unified-search-modal__search-external-resources[data-v-1f99d7d9] span.checkbox-content{padding-top:0;padding-bottom:0}.unified-search-modal__search-external-resources[data-v-1f99d7d9] .checkbox-content__icon{margin:auto !important}.unified-search-modal__search-external-resources--aligned[data-v-1f99d7d9]{margin-inline-start:auto}.unified-search-modal__filters-applied[data-v-1f99d7d9]{padding-top:4px;display:flex;flex-wrap:wrap}.unified-search-modal__no-content[data-v-1f99d7d9]{display:flex;align-items:center;margin-top:.5em;height:70%}.unified-search-modal__results[data-v-1f99d7d9]{flex:1 1 auto;min-height:0;overflow:hidden auto;padding-inline:12px;padding-block:0 12px}.unified-search-modal__results .result-title[data-v-1f99d7d9]{color:var(--color-primary-element);font-size:16px;margin-block:8px 4px}.unified-search-modal__results .result-footer[data-v-1f99d7d9]{justify-content:space-between;align-items:center;display:flex}.unified-search-modal__results .result--unfiltered[data-v-1f99d7d9]{opacity:.7}.unified-search-modal__unfiltered-header[data-v-1f99d7d9]{display:flex;flex-direction:column;gap:2px;margin-block:16px 8px;padding-block:12px 0;border-top:1px solid var(--color-border)}.unified-search-modal__unfiltered-label[data-v-1f99d7d9]{font-weight:bold;color:var(--color-text-maxcontrast)}.filter-button__icon[data-v-1f99d7d9]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-bright);padding:11px}@media only screen and (max-height: 400px){.unified-search-modal__results[data-v-1f99d7d9]{overflow:unset}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/UnifiedSearchModal.vue\"],\"names\":[],\"mappings\":\"AAKA,4CACC,iBAAA,CACA,sBAAA,CACA,cAAA,CAGA,qBAAA,CACA,sBAAA,CACA,YAAA,CACA,sBAAA,CAKD,8CACC,cAAA,CACA,OAAA,CACA,SAAA,CACA,yBAAA,CACA,iDAAA,CAKD,kDACC,iBAAA,CACA,SAAA,CACA,YAAA,CACA,qBAAA,CAGA,aAAA,CACA,WAAA,CACA,cAAA,CAEA,4CAAA,CACA,0EAAA,CAEA,eAAA,CACA,6CAAA,CACA,4BAAA,CACA,kCAAA,CAGA,yDAAA,CAID,mEACC,4CAGC,cAAA,CACA,sCAAA,CACA,cAAA,CACA,iBAAA,CACA,oBAAA,CAGD,kDACC,UAAA,CACA,iBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CAAA,CAKF,wGAEC,wBAAA,CAGD,6FAEC,SAAA,CAGD,+JAEC,0BAAA,CAKD,uCACC,kDACC,eAAA,CAGD,+JAEC,cAAA,CAAA,CAKD,+CAEC,6CAAA,CAEA,mBAAA,CAEA,kBAAA,CAEA,eAAA,CACA,OAAA,CAGD,qDACC,YAAA,CACA,kBAAA,CACA,OAAA,CACA,oBAAA,CAEA,kEACC,aAAA,CAIF,gDACC,YAAA,CACA,cAAA,CACA,OAAA,CACA,qBAAA,CACA,eAAA,CAIA,wFACC,aAAA,CACA,gBAAA,CAGD,0FACC,sBAAA,CAGD,2EACC,wBAAA,CAIF,wDACC,eAAA,CACA,YAAA,CACA,cAAA,CAGD,mDACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,UAAA,CAGD,gDAEC,aAAA,CACA,YAAA,CACA,oBAAA,CAEA,mBAAA,CACA,oBAAA,CAGC,8DACC,kCAAA,CACA,cAAA,CACA,oBAAA,CAGD,+DACC,6BAAA,CACA,kBAAA,CACA,YAAA,CAGD,oEACC,UAAA,CAMH,0DACC,YAAA,CACA,qBAAA,CACA,OAAA,CACA,qBAAA,CACA,oBAAA,CACA,wCAAA,CAGD,yDACC,gBAAA,CACA,mCAAA,CAIF,sCACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,yCAAA,CACA,YAAA,CAID,2CACC,gDACC,cAAA,CAAA\",\"sourcesContent\":[\"\\n\\n// Anchor the popover under the header input (the .unified-search-menu parent is\\n// the positioning context) instead of centering it in the viewport. The scrim is\\n// fixed separately so it still dims the whole page.\\n.unified-search-modal-root {\\n\\tposition: absolute;\\n\\tinset-block-start: 100%;\\n\\tinset-inline: 0;\\n\\t// One below the header input (z-index: 51) and above the page. !important wins\\n\\t// the stacking cascade inside the themed #header.\\n\\tz-index: 50 !important;\\n\\tmargin-block-start: 6px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n}\\n\\n// Backdrop, mirrors NcModal's .modal-mask. Fixed so it covers the whole viewport\\n// regardless of the anchored root.\\n.unified-search-modal__scrim {\\n\\tposition: fixed;\\n\\tinset: 0;\\n\\tz-index: 0;\\n\\t--backdrop-color: 0, 0, 0;\\n\\tbackground-color: rgba(var(--backdrop-color), 0.5);\\n}\\n\\n// Dialog panel: NcModal's \\\"normal\\\" chrome, but width-matched to the header input\\n// and anchored under it, growing downward and scrolling internally when tall.\\n.unified-search-modal__container {\\n\\tposition: relative;\\n\\tz-index: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\t// Match the previous unified-search modal (NcModal \\\"normal\\\" size). flex-shrink: 0\\n\\t// stops the flex parent from collapsing it below 600px when the menu is narrower.\\n\\tflex-shrink: 0;\\n\\twidth: 600px;\\n\\tmax-width: 90vw;\\n\\t// Leave ~10vh below the panel so it does not reach the bottom of the page\\n\\tmax-height: calc(90vh - var(--header-height));\\n\\tborder-radius: var(--border-radius-container, var(--border-radius-rounded));\\n\\t// Clip the header/results to the rounded corners\\n\\toverflow: hidden;\\n\\tbackground-color: var(--color-main-background);\\n\\tcolor: var(--color-main-text);\\n\\tbox-shadow: 0 0 40px rgba(0, 0, 0, 0.2);\\n\\t// The panel slides down into place; the enter/leave classes set the start offset.\\n\\t// Same easeOutQuart curve as the header input so the whole search UI moves in step.\\n\\ttransition: transform 240ms cubic-bezier(0.22, 1, 0.36, 1);\\n}\\n\\n// Fullscreen on small viewports, mirrors NcModal's responsive breakpoint\\n@media only screen and ((max-width: 512px) or (max-height: 400px)) {\\n\\t.unified-search-modal-root {\\n\\t\\t// Fill the viewport below the header bar, leaving it visible and interactive\\n\\t\\t// (matches the previous unified search and the rest of the mobile chrome).\\n\\t\\tposition: fixed;\\n\\t\\tinset-block-start: var(--header-height);\\n\\t\\tinset-inline: 0;\\n\\t\\tinset-block-end: 0;\\n\\t\\tmargin-block-start: 0;\\n\\t}\\n\\n\\t.unified-search-modal__container {\\n\\t\\twidth: 100%;\\n\\t\\tmax-width: initial;\\n\\t\\theight: 100%;\\n\\t\\tmax-height: initial;\\n\\t\\tborder-radius: 0;\\n\\t}\\n}\\n\\n// Open/close animation: the backdrop fades while the panel slides down from the top\\n.unified-search-modal-enter-active,\\n.unified-search-modal-leave-active {\\n\\ttransition: opacity 250ms;\\n}\\n\\n.unified-search-modal-enter,\\n.unified-search-modal-leave-to {\\n\\topacity: 0;\\n}\\n\\n.unified-search-modal-enter .unified-search-modal__container,\\n.unified-search-modal-leave-to .unified-search-modal__container {\\n\\ttransform: translateY(-6px);\\n}\\n\\n// Respect reduced-motion: keep the backdrop cross-fade (opacity is not motion) but\\n// drop the panel slide so nothing moves on open/close.\\n@media (prefers-reduced-motion: reduce) {\\n\\t.unified-search-modal__container {\\n\\t\\ttransition: none;\\n\\t}\\n\\n\\t.unified-search-modal-enter .unified-search-modal__container,\\n\\t.unified-search-modal-leave-to .unified-search-modal__container {\\n\\t\\ttransform: none;\\n\\t}\\n}\\n\\n.unified-search-modal {\\n\\t&__header {\\n\\t\\t// Add background to prevent leaking scrolled content (because of sticky position)\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t// Fix padding to have the input centered\\n\\t\\tpadding-inline: 12px;\\n\\t\\t// Some padding to make elements scrolled under sticky position look nicer\\n\\t\\tpadding-block: 12px;\\n\\t\\t// Make it sticky with the input margin for the label\\n\\t\\tposition: sticky;\\n\\t\\ttop: 6px;\\n\\t}\\n\\n\\t&__mobile-input {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tgap: 4px;\\n\\t\\tmargin-block-end: 8px;\\n\\n\\t\\t:deep(.input-field) {\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t}\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tgap: 4px;\\n\\t\\tjustify-content: start;\\n\\t\\tpadding-top: 4px;\\n\\t}\\n\\n\\t&__search-external-resources {\\n\\t\\t:deep(span.checkbox-content) {\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t\\tpadding-bottom: 0;\\n\\t\\t}\\n\\n\\t\\t:deep(.checkbox-content__icon) {\\n\\t\\t\\tmargin: auto !important;\\n\\t\\t}\\n\\n\\t\\t&--aligned {\\n\\t\\t\\tmargin-inline-start: auto;\\n\\t\\t}\\n\\t}\\n\\n\\t&__filters-applied {\\n\\t\\tpadding-top: 4px;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t}\\n\\n\\t&__no-content {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmargin-top: 0.5em;\\n\\t\\theight: 70%;\\n\\t}\\n\\n\\t&__results {\\n\\t\\t// Take the remaining panel height and scroll internally (container has a max-height)\\n\\t\\tflex: 1 1 auto;\\n\\t\\tmin-height: 0;\\n\\t\\toverflow: hidden auto;\\n\\t\\t// Adjust padding to match container but keep the scrollbar on the very end\\n\\t\\tpadding-inline: 12px;\\n\\t\\tpadding-block: 0 12px;\\n\\n\\t\\t.result {\\n\\t\\t\\t&-title {\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\tfont-size: 16px;\\n\\t\\t\\t\\tmargin-block: 8px 4px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-footer {\\n\\t\\t\\t\\tjustify-content: space-between;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--unfiltered {\\n\\t\\t\\t\\topacity: 0.7;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t}\\n\\n\\t&__unfiltered-header {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 2px;\\n\\t\\tmargin-block: 16px 8px;\\n\\t\\tpadding-block: 12px 0;\\n\\t\\tborder-top: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__unfiltered-label {\\n\\t\\tfont-weight: bold;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\\n.filter-button__icon {\\n\\theight: 20px;\\n\\twidth: 20px;\\n\\tobject-fit: contain;\\n\\tfilter: var(--background-invert-if-bright);\\n\\tpadding: 11px; // align with text to fit at least 44px\\n}\\n\\n// Ensure modal is accessible on small devices\\n@media only screen and (max-height: 400px) {\\n\\t.unified-search-modal__results {\\n\\t\\toverflow: unset;\\n\\t}\\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-menu[data-v-786997b4]{position:relative;display:flex;align-items:center;justify-content:center}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnifiedSearch.vue\"],\"names\":[],\"mappings\":\"AAEA,sCAEC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n// this is needed to allow us overriding component styles (focus-visible)\\n.unified-search-menu {\\n\\t// Positioning context so the results popover can anchor under the input\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\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 = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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 = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6776;","__webpack_require__.b = (typeof document !== 'undefined' && 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\t6776: 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 = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\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((id) => (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 = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\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, [4208], () => (__webpack_require__(87925)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","vue_material_design_icons_Magnifyvue_type_script_lang_js","name","emits","props","title","type","String","fillColor","default","size","Number","Magnify","componentNormalizer","A","_vm","this","_c","_self","_b","staticClass","attrs","role","on","click","$event","$emit","$attrs","fill","width","height","viewBox","d","_v","_s","_e","UnifiedSearch_UnifiedSearchInputvue_type_script_setup_true_lang_ts","_defineComponent","__name","expanded","Boolean","query","setup","__props","emit","isSmallMobile","useIsSmallMobile","placeholderText","t","inputRef","ref","isFocused","isActive","computed","value","length","__sfc","onInput","event","target","clearQuery","focus","l10n_dist","NcButton","NcHeaderButton","NcHeaderButton_GtIbBhEd","N","IconClose","Close","IconMagnify","options","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","UnifiedSearchInputvue_type_style_index_0_id_4fc6c0ec_prod_lang_scss_scoped_true","locals","UnifiedSearchInput","_setup","_setupProxy","class","id","ariaLabel","scopedSlots","_u","key","fn","proxy","domProps","blur","input","variant","UnifiedSearch_UnifiedSearchLocalSearchBarvue_type_script_lang_ts_setup_true","open","_useCssVars","dfb017de","searchGlobalButtonCSSWidth","searchInput","watchEffect","isMobile","useIsMobile","searchGlobalButton","searchGlobalButtonWidth","useElementSize","clearAndCloseSearch","mdiClose","mdi","hyP","mdiCloudSearchOutline","ydM","Tl","NcIconSvgWrapper","NcInputField","UnifiedSearchLocalSearchBarvue_type_style_index_0_id_2b577e50_prod_scoped_true_lang_scss_options","UnifiedSearchLocalSearchBarvue_type_style_index_0_id_2b577e50_prod_scoped_true_lang_scss","UnifiedSearchLocalSearchBar","placeholder","path","vue_material_design_icons_CalendarRangeOutlinevue_type_script_lang_js","CalendarRangeOutline","vue_material_design_icons_Filtervue_type_script_lang_js","Filter","vue_material_design_icons_ListBoxvue_type_script_lang_js","ListBox","vue_material_design_icons_CalendarRangevue_type_script_lang_js","CalendarRange","UnifiedSearch_CustomDateRangeModalvue_type_script_lang_js","components","NcModal","CalendarRangeIcon","NcDateTimePicker","isOpen","required","data","dateFilter","startFrom","endAt","isModalOpen","get","set","methods","closeModal","applyCustomRange","CustomDateRangeModalvue_type_style_index_0_id_2907014b_prod_lang_scss_scoped_true_options","CustomDateRangeModalvue_type_style_index_0_id_2907014b_prod_lang_scss_scoped_true","CustomDateRangeModal","show","close","label","model","callback","$$v","$set","expression","vue_material_design_icons_AlertCircleOutlinevue_type_script_lang_js","AlertCircleOutline","UnifiedSearch_SearchableListvue_type_script_lang_js","IconAlertCircleOutline","NcAvatar","NcEmptyContent","NcPopover","NcTextField","labelText","searchList","Array","emptyContentText","opened","error","searchTerm","filteredList","filter","element","toLowerCase","some","prop","includes","clearSearch","itemSelected","searchTermChanged","term","SearchableListvue_type_style_index_0_id_37b50471_prod_lang_scss_scoped_true_options","SearchableListvue_type_style_index_0_id_37b50471_prod_lang_scss_scoped_true","SearchableList","shown","hide","_t","_l","displayName","alignment","wide","isUser","user","UnifiedSearch_SearchFilterChipvue_type_script_lang_js","CloseIcon","text","pretext","deleteChip","SearchFilterChipvue_type_style_index_0_id_60a863d2_prod_lang_scss_scoped_true_options","SearchFilterChipvue_type_style_index_0_id_60a863d2_prod_lang_scss_scoped_true","SearchFilterChip","UnifiedSearch_SearchResultvue_type_script_lang_js","NcListItem","thumbnailUrl","subline","resourceUrl","icon","rounded","focused","thumbnailHasError","watch","isValidIconOrPreviewUrl","url","test","startsWith","thumbnailErrorHandler","SearchResultvue_type_style_index_0_id_ca416b22_prod_lang_scss_scoped_true_options","SearchResultvue_type_style_index_0_id_ca416b22_prod_lang_scss_scoped_true","SearchResult","bold","href","style","backgroundImage","src","logger","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","unifiedSearchLogger","detectUser","async","getProviders","axios","generateOcsUrl","params","from","window","location","pathname","replace","search","ocs","isArray","getContacts","contacts","post","generateUrl","authenticatedUser","fullName","emailAddresses","unshift","useSearchStore","defineStore","state","externalFilters","actions","registerExternalFilter","appId","searchFrom","push","isPluginFilter","UnifiedSearch_UnifiedSearchModalvue_type_script_lang_ts","defineComponent","IconArrowRight","ArrowRight","IconAccountGroup","AccountGroupOutline","IconCalendarRange","IconDotsHorizontal","DotsHorizontal","IconFilter","IconListBox","FilterChip","NcActions","NcActionButton","NcCheckboxRadioSwitch","localSearch","currentLocation","useBrowserLocation","searchStore","providers","providerActionMenuIsOpen","dateActionMenuIsOpen","providerResultLimit","personFilter","filteredProviders","searching","searchQuery","lastSearchQuery","placessearchTerm","dateTimeFilter","filters","results","showDateRangeModal","initialized","searchExternalResources","minSearchLength","loadState","focusTrap","isEmptySearch","hasNoResults","isSearchQueryTooShort","showEmptyContentInfo","emptyContentMessage","n","userContacts","debouncedFind","debounce","find","debouncedFilterContacts","filterContacts","hasExternalResources","provider","isExternalProvider","hasContentFilters","isOverlayOpen","filteredResults","isInFolderAtRoot","result","extraParams","supportsActiveFilters","filteredResultUrls","urls","Set","forEach","entry","add","unfilteredResults","map","has","document","addEventListener","onEscapeKey","$nextTick","activateFocusTrap","Promise","all","then","groupProvidersByApp","mapContacts","debug","catch","removeEventListener","deactivateFocusTrap","immediate","handler","mounted","subscribe","handlePluginFilter","onUpdateOpen","onMobileSearchInput","preventDefault","panel","$refs","menu","$el","closest","inputContainer","querySelector","containers","markRaw","createFocusTrap","initialFocus","escapeDeactivates","allowOutsideClick","activate","deactivate","syncFocusTrapToOverlays","overlayOpen","pause","unpause","searchLocally","providersToSearchOverride","newResults","cursor","extraQueries","contentFilterTypes","f","every","providerIsCompatibleWithFilters","baseProvider","p","since","until","person","limit","shouldSkipSearch","wasManuallySelected","filteredProvider","request","cancelToken","CancelToken","source","token","cancel","unifiedSearch","response","entries","updateResults","updatedResults","newResult","existingResultIndex","findIndex","splice","sortedResults","slice","sort","a","b","aProvider","bProvider","order","contact","isNoUser","subname","applyPersonFilter","existingPersonFilter","loadMoreResultsForProvider","addProviderFilter","providerFilter","isProviderFilterApplied","existingFilterIndex","existing","syncProviderFilters","removeFilter","i","firstArray","secondArray","synchronizedArray","item","index","itemId","secondItem","updateDateFilter","currFilterIndex","applyQuickDateRange","range","today","Date","startDate","endDate","getFullYear","getMonth","getDate","setCustomDateRange","toLocaleDateString","getCanonicalLocale","addFilterEvent","filterUpdateText","compatibleProviderIndex","filterParams","groupedByProviderApp","flattenedArray","Object","values","group","filterIds","filterId","undefined","enableAllProviders","_","disabled","UnifiedSearchModalvue_type_style_index_0_id_1f99d7d9_prod_lang_scss_scoped_true_options","UnifiedSearchModalvue_type_style_index_0_id_1f99d7d9_prod_lang_scss_scoped_true","UnifiedSearchModal","appear","modelValue","showTrailingButton","trailingButtonLabel","alt","closeAfterClick","searchTermChange","delete","disableMenu","hideUserStatus","hideFavorite","providerResult","inAppSearch","views_UnifiedSearchvue_type_script_lang_ts","queryText","showUnifiedSearch","showLocalSearch","debouncedQueryUpdate","emitUpdatedQuery","supportsLocalSearch","appHandlesSearchShortcut","OCP","Accessibility","disableKeyboardShortcuts","onKeyDown","beforeUnmount","ctrlKey","toggleUnifiedSearch","openModal","UnifiedSearchvue_type_style_index_0_id_786997b4_prod_lang_scss_scoped_true_options","UnifiedSearchvue_type_style_index_0_id_786997b4_prod_lang_scss_scoped_true","UnifiedSearch","globalSearch","__webpack_nonce__","getCSPNonce","Vue","mixin","OCA","registerFilterAction","use","PiniaVuePlugin","pinia","createPinia","el","unified_search_pinia","render","h","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","module","version","sources","names","mappings","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","keys","r","getter","__esModule","definition","o","defineProperty","enumerable","e","resolve","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","globalThis","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"core-unified-search.js?v=ee5c4e33fba993b73d50","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/node_modules/vue-material-design-icons/Magnify.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Magnify.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Magnify.vue?0775","webpack:///nextcloud/node_modules/vue-material-design-icons/Magnify.vue?vue&type=template&id=194dfb2a","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchInput.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchInput.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchInput.vue?c476","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchInput.vue?8fd4","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue?vue&type=script&lang=ts&setup=true","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue?3651","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue?395a","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchModal.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRangeOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRangeOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CalendarRangeOutline.vue?8e99","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRangeOutline.vue?vue&type=template&id=57d00bd1","webpack:///nextcloud/node_modules/vue-material-design-icons/Filter.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/Filter.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/Filter.vue?3711","webpack:///nextcloud/node_modules/vue-material-design-icons/Filter.vue?vue&type=template&id=be2cf3ce","webpack:///nextcloud/node_modules/vue-material-design-icons/ListBox.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/ListBox.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ListBox.vue?d9c9","webpack:///nextcloud/node_modules/vue-material-design-icons/ListBox.vue?vue&type=template&id=4e2b82c8","webpack://nextcloud/./core/src/components/UnifiedSearch/CustomDateRangeModal.vue?b7cc","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRange.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRange.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CalendarRange.vue?f09e","webpack:///nextcloud/node_modules/vue-material-design-icons/CalendarRange.vue?vue&type=template&id=5868fd9e","webpack:///nextcloud/core/src/components/UnifiedSearch/CustomDateRangeModal.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/UnifiedSearch/CustomDateRangeModal.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/CustomDateRangeModal.vue?0fb6","webpack://nextcloud/./core/src/components/UnifiedSearch/CustomDateRangeModal.vue?92fe","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchableList.vue?a21f","webpack:///nextcloud/node_modules/vue-material-design-icons/AlertCircleOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AlertCircleOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/AlertCircleOutline.vue?730b","webpack:///nextcloud/node_modules/vue-material-design-icons/AlertCircleOutline.vue?vue&type=template&id=da40788e","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchableList.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchableList.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchableList.vue?cd03","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchableList.vue?4344","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchFilterChip.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchFilterChip.vue","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchFilterChip.vue?6432","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchFilterChip.vue?fc0d","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchFilterChip.vue?2352","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?1b5b","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?32d3","webpack://nextcloud/./core/src/components/UnifiedSearch/SearchResult.vue?e4b5","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/services/UnifiedSearchService.js","webpack:///nextcloud/core/src/store/unified-search-external-filters.js","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchModal.vue?vue&type=script&lang=ts","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchModal.vue?b4ba","webpack://nextcloud/./core/src/components/UnifiedSearch/UnifiedSearchModal.vue?0132","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=script&lang=ts","webpack:///nextcloud/core/src/views/UnifiedSearch.vue","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?5467","webpack://nextcloud/./core/src/views/UnifiedSearch.vue?1990","webpack:///nextcloud/core/src/unified-search.ts","webpack:///nextcloud/core/src/components/UnifiedSearch/CustomDateRangeModal.vue?vue&type=style&index=0&id=2907014b&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchFilterChip.vue?vue&type=style&index=0&id=60a863d2&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchResult.vue?vue&type=style&index=0&id=ca416b22&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/SearchableList.vue?vue&type=style&index=0&id=37b50471&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchInput.vue?vue&type=style&index=0&id=4fc6c0ec&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue?vue&type=style&index=0&id=2b577e50&prod&scoped=true&lang=scss","webpack:///nextcloud/core/src/components/UnifiedSearch/UnifiedSearchModal.vue?vue&type=style&index=0&id=1f99d7d9&prod&lang=scss&scoped=true","webpack:///nextcloud/core/src/views/UnifiedSearch.vue?vue&type=style&index=0&id=786997b4&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/ensure chunk","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 = (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, fn, priority] = deferred[i];\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((key) => (__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 \n \n {{ title }}\n \n \n \n\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Magnify.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Magnify.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Magnify.vue?vue&type=template&id=194dfb2a\"\nimport script from \"./Magnify.vue?vue&type=script&lang=js\"\nexport * from \"./Magnify.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon magnify-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchInput.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchInput.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('search',{staticClass:\"unified-search-input\",class:{ 'unified-search-input--mobile': _setup.isSmallMobile }},[(_setup.isSmallMobile)?_c(_setup.NcHeaderButton,{attrs:{\"id\":\"unified-search-trigger\",\"ariaLabel\":_setup.placeholderText,\"aria-haspopup\":\"dialog\",\"aria-expanded\":_vm.expanded ? 'true' : 'false'},on:{\"click\":function($event){return _vm.$emit('click', $event)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.IconMagnify,{attrs:{\"size\":20}})]},proxy:true}],null,false,1795316816)}):_c('div',{staticClass:\"unified-search-input__field\",class:{ 'unified-search-input__field--active': _setup.isActive }},[_c('div',{staticClass:\"unified-search-input__resting\",class:{ 'unified-search-input__resting--filled': _vm.query.length > 0 },attrs:{\"aria-hidden\":\"true\"}},[_c(_setup.IconMagnify,{attrs:{\"size\":20}}),_vm._v(\" \"),_c('span',{staticClass:\"unified-search-input__label\"},[_vm._v(_vm._s(_setup.placeholderText))])],1),_vm._v(\" \"),_c('input',{ref:\"inputRef\",staticClass:\"unified-search-input__input\",attrs:{\"type\":\"text\",\"role\":\"combobox\",\"aria-autocomplete\":\"list\",\"aria-expanded\":_vm.expanded ? 'true' : 'false',\"aria-label\":_setup.placeholderText},domProps:{\"value\":_vm.query},on:{\"focus\":function($event){_setup.isFocused = true},\"blur\":function($event){_setup.isFocused = false},\"input\":_setup.onInput}}),_vm._v(\" \"),(_vm.query.length > 0)?_c(_setup.NcButton,{staticClass:\"unified-search-input__clear\",attrs:{\"variant\":\"tertiary-no-background\",\"aria-label\":_setup.t('core', 'Clear search')},on:{\"click\":_setup.clearQuery},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.IconClose,{attrs:{\"size\":20}})]},proxy:true}],null,false,4099733813)}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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!./UnifiedSearchInput.vue?vue&type=style&index=0&id=4fc6c0ec&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UnifiedSearchInput.vue?vue&type=style&index=0&id=4fc6c0ec&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearchInput.vue?vue&type=template&id=4fc6c0ec&scoped=true\"\nimport script from \"./UnifiedSearchInput.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UnifiedSearchInput.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./UnifiedSearchInput.vue?vue&type=style&index=0&id=4fc6c0ec&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 \"4fc6c0ec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Transition',[(_vm.open)?_c('div',{staticClass:\"local-unified-search animated-width\",class:{ 'local-unified-search--open': _vm.open }},[_c(_setup.NcInputField,{ref:\"searchInput\",staticClass:\"local-unified-search__input animated-width\",attrs:{\"aria-label\":_setup.t('core', 'Search in current app'),\"placeholder\":_setup.t('core', 'Search in current app'),\"show-trailing-button\":\"\",\"trailing-button-label\":_setup.t('core', 'Clear search'),\"model-value\":_vm.query},on:{\"update:value\":function($event){return _vm.$emit('update:query', $event)},\"trailing-button-click\":_setup.clearAndCloseSearch},scopedSlots:_vm._u([{key:\"trailing-button-icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiClose}})]},proxy:true}],null,false,3585538455)}),_vm._v(\" \"),_c(_setup.NcButton,{ref:\"searchGlobalButton\",staticClass:\"local-unified-search__global-search\",attrs:{\"aria-label\":_setup.t('core', 'Search everywhere'),\"title\":_setup.t('core', 'Search everywhere'),\"variant\":\"tertiary-no-background\"},on:{\"click\":function($event){return _vm.$emit('global-search')}},scopedSlots:_vm._u([(!_setup.isMobile)?{key:\"default\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('core', 'Search everywhere'))+\"\\n\\t\\t\\t\")]},proxy:true}:null,{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiCloudSearchOutline}})]},proxy:true}],null,true)})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchLocalSearchBar.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchLocalSearchBar.vue?vue&type=script&lang=ts&setup=true\"","\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!./UnifiedSearchLocalSearchBar.vue?vue&type=style&index=0&id=2b577e50&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UnifiedSearchLocalSearchBar.vue?vue&type=style&index=0&id=2b577e50&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearchLocalSearchBar.vue?vue&type=template&id=2b577e50&scoped=true\"\nimport script from \"./UnifiedSearchLocalSearchBar.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./UnifiedSearchLocalSearchBar.vue?vue&type=script&lang=ts&setup=true\"\nimport style0 from \"./UnifiedSearchLocalSearchBar.vue?vue&type=style&index=0&id=2b577e50&prod&scoped=true&lang=scss\"\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 \"2b577e50\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('transition',{attrs:{\"name\":\"unified-search-modal\",\"appear\":\"\"}},[(_vm.open)?_c('div',{staticClass:\"unified-search-modal-root\"},[_c('CustomDateRangeModal',{staticClass:\"unified-search__date-range\",attrs:{\"isOpen\":_vm.showDateRangeModal},on:{\"set:customDateRange\":_vm.setCustomDateRange,\"update:isOpen\":function($event){_vm.showDateRangeModal = $event}}}),_vm._v(\" \"),_c('div',{ref:\"panel\",staticClass:\"unified-search-modal__container\"},[_c('div',{staticClass:\"unified-search-modal__header\"},[(_vm.isSmallMobile)?_c('div',{staticClass:\"unified-search-modal__mobile-input\"},[_c('NcTextField',{attrs:{\"type\":\"search\",\"label\":_vm.t('core', 'Apps, files, messages, and more'),\"modelValue\":_vm.searchQuery,\"showTrailingButton\":_vm.searchQuery.length > 0,\"trailingButtonLabel\":_vm.t('core', 'Clear search')},on:{\"update:modelValue\":_vm.onMobileSearchInput,\"trailing-button-click\":function($event){_vm.searchQuery = ''}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"aria-label\":_vm.t('core', 'Close search')},on:{\"click\":function($event){return _vm.onUpdateOpen(false)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconClose',{attrs:{\"size\":20}})]},proxy:true}],null,false,2888946197)})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-modal__filters\",attrs:{\"data-cy-unified-search-filters\":\"\"}},[_c('NcActions',{attrs:{\"open\":_vm.providerActionMenuIsOpen,\"menu-name\":_vm.t('core', 'Places'),\"data-cy-unified-search-filter\":\"places\"},on:{\"update:open\":function($event){_vm.providerActionMenuIsOpen=$event}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconListBox',{attrs:{\"size\":20}})]},proxy:true}],null,false,815538004)},[_vm._v(\" \"),_vm._l((_vm.providers),function(provider){return _c('NcActionButton',{key:`${provider.id}-${provider.name.replace(/\\s/g, '')}`,attrs:{\"disabled\":provider.disabled},on:{\"click\":function($event){return _vm.addProviderFilter(provider)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('img',{staticClass:\"filter-button__icon\",attrs:{\"src\":provider.icon,\"alt\":\"\"}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(provider.name)+\"\\n\\t\\t\\t\\t\\t\\t\")])})],2),_vm._v(\" \"),_c('NcActions',{attrs:{\"open\":_vm.dateActionMenuIsOpen,\"menu-name\":_vm.t('core', 'Date'),\"data-cy-unified-search-filter\":\"date\"},on:{\"update:open\":function($event){_vm.dateActionMenuIsOpen=$event}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconCalendarRange',{attrs:{\"size\":20}})]},proxy:true}],null,false,3013027470)},[_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('today')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Today'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('7days')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Last 7 days'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('30days')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Last 30 days'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('thisyear')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'This year'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('lastyear')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Last year'))+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"closeAfterClick\":true},on:{\"click\":function($event){return _vm.applyQuickDateRange('custom')}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Custom date range'))+\"\\n\\t\\t\\t\\t\\t\\t\")])],1),_vm._v(\" \"),_c('SearchableList',{attrs:{\"labelText\":_vm.t('core', 'Search people'),\"searchList\":_vm.userContacts,\"emptyContentText\":_vm.t('core', 'Not found'),\"data-cy-unified-search-filter\":\"people\"},on:{\"searchTermChange\":_vm.debouncedFilterContacts,\"itemSelected\":_vm.applyPersonFilter},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('NcButton',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconAccountGroup',{attrs:{\"size\":20}})]},proxy:true}],null,false,2121133277)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'People'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")])]},proxy:true}],null,false,1181243480)}),_vm._v(\" \"),(_vm.localSearch)?_c('NcButton',{attrs:{\"data-cy-unified-search-filter\":\"current-view\"},on:{\"click\":_vm.searchLocally},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconFilter',{attrs:{\"size\":20}})]},proxy:true}],null,false,4275912387)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Filter in current view'))+\"\\n\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasExternalResources)?_c('NcCheckboxRadioSwitch',{staticClass:\"unified-search-modal__search-external-resources\",class:{ 'unified-search-modal__search-external-resources--aligned': _vm.localSearch },attrs:{\"type\":\"switch\"},model:{value:(_vm.searchExternalResources),callback:function ($$v) {_vm.searchExternalResources=$$v},expression:\"searchExternalResources\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search connected services'))+\"\\n\\t\\t\\t\\t\\t\")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-modal__filters-applied\"},_vm._l((_vm.filters),function(filter){return _c('FilterChip',{key:filter.id,attrs:{\"text\":filter.name ?? filter.text,\"pretext\":\"\"},on:{\"delete\":function($event){return _vm.removeFilter(filter)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(filter.type === 'person')?_c('NcAvatar',{attrs:{\"user\":filter.user,\"size\":24,\"disableMenu\":\"\",\"hideUserStatus\":\"\",\"hideFavorite\":false}}):(filter.type === 'date')?_c('IconCalendarRange'):_c('img',{attrs:{\"src\":filter.icon,\"alt\":\"\"}})]},proxy:true}],null,true)})}),1)]),_vm._v(\" \"),(_vm.showEmptyContentInfo)?_c('div',{staticClass:\"unified-search-modal__no-content\"},[_c('NcEmptyContent',{attrs:{\"name\":_vm.emptyContentMessage},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconMagnify',{attrs:{\"size\":64}})]},proxy:true}],null,false,125778896)})],1):_c('div',{staticClass:\"unified-search-modal__results\"},[_c('h3',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Results'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_vm._l((_vm.filteredResults),function(providerResult){return _c('div',{key:providerResult.id,staticClass:\"result\"},[_c('h4',{staticClass:\"result-title\",attrs:{\"id\":`unified-search-result-${providerResult.id}`}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(providerResult.name)+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ul',{staticClass:\"result-items\",attrs:{\"aria-labelledby\":`unified-search-result-${providerResult.id}`}},_vm._l((providerResult.results),function(result,index){return _c('SearchResult',_vm._b({key:index},'SearchResult',result,false))}),1),_vm._v(\" \"),_c('div',{staticClass:\"result-footer\"},[(providerResult.results.length === providerResult.limit)?_c('NcButton',{attrs:{\"variant\":\"tertiary-no-background\"},on:{\"click\":function($event){return _vm.loadMoreResultsForProvider(providerResult)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconDotsHorizontal',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Load more results'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(providerResult.inAppSearch)?_c('NcButton',{attrs:{\"alignment\":\"end-reverse\",\"variant\":\"tertiary-no-background\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search in'))+\" \"+_vm._s(providerResult.name)+\"\\n\\t\\t\\t\\t\\t\\t\\t\")]):_vm._e()],1)])}),_vm._v(\" \"),(_vm.unfilteredResults.length > 0)?[_c('div',{staticClass:\"unified-search-modal__unfiltered-header\"},[_c('span',{staticClass:\"unified-search-modal__unfiltered-label\"},[_vm._v(_vm._s(_vm.t('core', 'Partial matches')))])]),_vm._v(\" \"),_vm._l((_vm.unfilteredResults),function(providerResult){return _c('div',{key:`unfiltered-${providerResult.id}`,staticClass:\"result result--unfiltered\"},[_c('h4',{staticClass:\"result-title\",attrs:{\"id\":`unified-search-result-unfiltered-${providerResult.id}`}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(providerResult.name)+\"\\n\\t\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('ul',{staticClass:\"result-items\",attrs:{\"aria-labelledby\":`unified-search-result-unfiltered-${providerResult.id}`}},_vm._l((providerResult.results),function(result,index){return _c('SearchResult',_vm._b({key:index},'SearchResult',result,false))}),1),_vm._v(\" \"),_c('div',{staticClass:\"result-footer\"},[(providerResult.results.length === providerResult.limit)?_c('NcButton',{attrs:{\"variant\":\"tertiary-no-background\"},on:{\"click\":function($event){return _vm.loadMoreResultsForProvider(providerResult)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconDotsHorizontal',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Load more results'))+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(providerResult.inAppSearch)?_c('NcButton',{attrs:{\"alignment\":\"end-reverse\",\"variant\":\"tertiary-no-background\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search in'))+\" \"+_vm._s(providerResult.name)+\"\\n\\t\\t\\t\\t\\t\\t\\t\\t\")]):_vm._e()],1)])})]:_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-modal__scrim\",on:{\"click\":function($event){return _vm.onUpdateOpen(false)}}})],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarRangeOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarRangeOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CalendarRangeOutline.vue?vue&type=template&id=57d00bd1\"\nimport script from \"./CalendarRangeOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CalendarRangeOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon calendar-range-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 11H9V13H7V11M21 5V19C21 20.11 20.11 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.9 3.9 3 5 3H6V1H8V3H16V1H18V3H19C20.11 3 21 3.9 21 5M5 7H19V5H5V7M19 19V9H5V19H19M15 13H17V11H15V13M11 13H13V11H11V13Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Filter.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Filter.vue?vue&type=template&id=be2cf3ce\"\nimport script from \"./Filter.vue?vue&type=script&lang=js\"\nexport * from \"./Filter.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon filter-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M14,12V19.88C14.04,20.18 13.94,20.5 13.71,20.71C13.32,21.1 12.69,21.1 12.3,20.71L10.29,18.7C10.06,18.47 9.96,18.16 10,17.87V12H9.97L4.21,4.62C3.87,4.19 3.95,3.56 4.38,3.22C4.57,3.08 4.78,3 5,3V3H19V3C19.22,3 19.43,3.08 19.62,3.22C20.05,3.56 20.13,4.19 19.79,4.62L14.03,12H14Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ListBox.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ListBox.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ListBox.vue?vue&type=template&id=4e2b82c8\"\nimport script from \"./ListBox.vue?vue&type=script&lang=js\"\nexport * from \"./ListBox.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon list-box-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M7 7H9V9H7V7M7 11H9V13H7V11M7 15H9V17H7V15M17 17H11V15H17V17M17 13H11V11H17V13M17 9H11V7H17V9Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.isModalOpen)?_c('NcModal',{attrs:{\"id\":\"unified-search\",\"name\":_vm.t('core', 'Custom date range'),\"show\":_vm.isModalOpen,\"size\":\"small\",\"clear-view-delay\":0,\"title\":_vm.t('core', 'Custom date range')},on:{\"update:show\":function($event){_vm.isModalOpen=$event},\"close\":_vm.closeModal}},[_c('div',{staticClass:\"unified-search-custom-date-modal\"},[_c('h1',[_vm._v(_vm._s(_vm.t('core', 'Custom date range')))]),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-custom-date-modal__pickers\"},[_c('NcDateTimePicker',{attrs:{\"id\":\"unifiedsearch-custom-date-range-start\",\"label\":_vm.t('core', 'Pick start date'),\"type\":\"date\"},model:{value:(_vm.dateFilter.startFrom),callback:function ($$v) {_vm.$set(_vm.dateFilter, \"startFrom\", $$v)},expression:\"dateFilter.startFrom\"}}),_vm._v(\" \"),_c('NcDateTimePicker',{attrs:{\"id\":\"unifiedsearch-custom-date-range-end\",\"label\":_vm.t('core', 'Pick end date'),\"type\":\"date\"},model:{value:(_vm.dateFilter.endAt),callback:function ($$v) {_vm.$set(_vm.dateFilter, \"endAt\", $$v)},expression:\"dateFilter.endAt\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"unified-search-custom-date-modal__footer\"},[_c('NcButton',{on:{\"click\":_vm.applyCustomRange},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('CalendarRangeIcon',{attrs:{\"size\":20}})]},proxy:true}],null,false,3084610734)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Search in date range'))+\"\\n\\t\\t\\t\\t\")])],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarRange.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CalendarRange.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CalendarRange.vue?vue&type=template&id=5868fd9e\"\nimport script from \"./CalendarRange.vue?vue&type=script&lang=js\"\nexport * from \"./CalendarRange.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon calendar-range-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9,10H7V12H9V10M13,10H11V12H13V10M17,10H15V12H17V10M19,3H18V1H16V3H8V1H6V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M19,19H5V8H19V19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_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!./CustomDateRangeModal.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!./CustomDateRangeModal.vue?vue&type=script&lang=js\"","\n\n\n\n\n\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!./CustomDateRangeModal.vue?vue&type=style&index=0&id=2907014b&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./CustomDateRangeModal.vue?vue&type=style&index=0&id=2907014b&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./CustomDateRangeModal.vue?vue&type=template&id=2907014b&scoped=true\"\nimport script from \"./CustomDateRangeModal.vue?vue&type=script&lang=js\"\nexport * from \"./CustomDateRangeModal.vue?vue&type=script&lang=js\"\nimport style0 from \"./CustomDateRangeModal.vue?vue&type=style&index=0&id=2907014b&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 \"2907014b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcPopover',{attrs:{\"shown\":_vm.opened},on:{\"show\":function($event){_vm.opened = true},\"hide\":function($event){_vm.opened = false}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_vm._t(\"trigger\")]},proxy:true}],null,true)},[_vm._v(\" \"),_c('div',{staticClass:\"searchable-list__wrapper\"},[_c('NcTextField',{attrs:{\"label\":_vm.labelText,\"trailing-button-icon\":\"close\",\"show-trailing-button\":_vm.searchTerm !== ''},on:{\"update:value\":_vm.searchTermChanged,\"trailing-button-click\":_vm.clearSearch},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}},[_c('IconMagnify',{attrs:{\"size\":20}})],1),_vm._v(\" \"),(_vm.filteredList.length > 0)?_c('ul',{staticClass:\"searchable-list__list\"},_vm._l((_vm.filteredList),function(element){return _c('li',{key:element.id,attrs:{\"title\":element.displayName,\"role\":\"button\"}},[_c('NcButton',{attrs:{\"alignment\":\"start\",\"variant\":\"tertiary\",\"wide\":true},on:{\"click\":function($event){return _vm.itemSelected(element)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(element.isUser)?_c('NcAvatar',{attrs:{\"user\":element.user,\"hide-user-status\":\"\"}}):_c('NcAvatar',{attrs:{\"is-no-user\":true,\"display-name\":element.displayName,\"hide-user-status\":\"\"}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(element.displayName)+\"\\n\\t\\t\\t\\t\")])],1)}),0):_c('div',{staticClass:\"searchable-list__empty-content\"},[_c('NcEmptyContent',{attrs:{\"name\":_vm.emptyContentText},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}])})],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircleOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AlertCircleOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AlertCircleOutline.vue?vue&type=template&id=da40788e\"\nimport script from \"./AlertCircleOutline.vue?vue&type=script&lang=js\"\nexport * from \"./AlertCircleOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon alert-circle-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M11,15H13V17H11V15M11,7H13V13H11V7M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_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!./SearchableList.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!./SearchableList.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\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!./SearchableList.vue?vue&type=style&index=0&id=37b50471&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./SearchableList.vue?vue&type=style&index=0&id=37b50471&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchableList.vue?vue&type=template&id=37b50471&scoped=true\"\nimport script from \"./SearchableList.vue?vue&type=script&lang=js\"\nexport * from \"./SearchableList.vue?vue&type=script&lang=js\"\nimport style0 from \"./SearchableList.vue?vue&type=style&index=0&id=37b50471&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 \"37b50471\",\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!./SearchFilterChip.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!./SearchFilterChip.vue?vue&type=script&lang=js\"","\n\n\n\n\n\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!./SearchFilterChip.vue?vue&type=style&index=0&id=60a863d2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./SearchFilterChip.vue?vue&type=style&index=0&id=60a863d2&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./SearchFilterChip.vue?vue&type=template&id=60a863d2&scoped=true\"\nimport script from \"./SearchFilterChip.vue?vue&type=script&lang=js\"\nexport * from \"./SearchFilterChip.vue?vue&type=script&lang=js\"\nimport style0 from \"./SearchFilterChip.vue?vue&type=style&index=0&id=60a863d2&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 \"60a863d2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"chip\"},[_c('span',{staticClass:\"icon\"},[_vm._t(\"icon\"),_vm._v(\" \"),(_vm.pretext.length)?_c('span',[_vm._v(\" \"+_vm._s(_vm.pretext)+\" : \")]):_vm._e()],2),_vm._v(\" \"),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(_vm.text))]),_vm._v(\" \"),_c('span',{staticClass:\"close-icon\",on:{\"click\":_vm.deleteChip}},[_c('CloseIcon',{attrs:{\"size\":18}})],1)])\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\n\n\n\n\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=ca416b22&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=ca416b22&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=ca416b22&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=ca416b22&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 \"ca416b22\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcListItem',{staticClass:\"result-item\",attrs:{\"name\":_vm.title,\"bold\":false,\"href\":_vm.resourceUrl,\"target\":\"_self\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"result-item__icon\",class:{\n\t\t\t\t'result-item__icon--rounded': _vm.rounded,\n\t\t\t\t'result-item__icon--no-preview': !_vm.isValidIconOrPreviewUrl(_vm.thumbnailUrl),\n\t\t\t\t'result-item__icon--with-thumbnail': _vm.isValidIconOrPreviewUrl(_vm.thumbnailUrl),\n\t\t\t\t[_vm.icon]: !_vm.isValidIconOrPreviewUrl(_vm.icon),\n\t\t\t},style:({\n\t\t\t\tbackgroundImage: _vm.isValidIconOrPreviewUrl(_vm.icon) ? `url(${_vm.icon})` : '',\n\t\t\t}),attrs:{\"aria-hidden\":\"true\"}},[(_vm.isValidIconOrPreviewUrl(_vm.thumbnailUrl) && !_vm.thumbnailHasError)?_c('img',{attrs:{\"src\":_vm.thumbnailUrl},on:{\"error\":_vm.thumbnailErrorHandler}}):_vm._e()])]},proxy:true},{key:\"subname\",fn:function(){return [_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.subline)+\"\\n\\t\")]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\n/**\n *\n * @param user\n */\nfunction getLogger(user) {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl, generateUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\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}\n */\nexport async function getProviders() {\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\tlogger.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 term\n * @param {number|string|null} [options.cursor] the offset for paginated searches\n * @param {string} [options.since] start of the date-range filter\n * @param {string} [options.until] end of the date-range filter\n * @param {string} [options.limit] maximum number of results\n * @param {string} [options.person] filter results by person\n * @param {object} [options.extraQueries] additional queries to filter search results\n * @return {object} {request: Promise, cancel: Promise}\n */\nexport function search({ type, query, cursor, since, until, limit, person, extraQueries = {} }) {\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\tsince,\n\t\t\tuntil,\n\t\t\tlimit,\n\t\t\tperson,\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\t...extraQueries,\n\t\t},\n\t})\n\n\treturn {\n\t\trequest,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\n/**\n * Get the list of active contacts\n *\n * @param {object} filter filter contacts by string\n * @param {string} filter.searchTerm the query\n * @return {object} {request: Promise}\n */\nexport async function getContacts({ searchTerm }) {\n\tconst { data: { contacts } } = await axios.post(generateUrl('/contactsmenu/contacts'), {\n\t\tfilter: searchTerm,\n\t})\n\t/*\n\t * Add authenticated user to list of contacts for search filter\n\t * If authtenicated user is searching/filtering, do not add them to the list\n\t */\n\tif (!searchTerm) {\n\t\tlet authenticatedUser = getCurrentUser()\n\t\tauthenticatedUser = {\n\t\t\tid: authenticatedUser.uid,\n\t\t\tfullName: authenticatedUser.displayName,\n\t\t\temailAddresses: [],\n\t\t}\n\t\tcontacts.unshift(authenticatedUser)\n\t\treturn contacts\n\t}\n\n\treturn contacts\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia'\n\nexport const useSearchStore = defineStore('search', {\n\tstate: () => ({\n\t\texternalFilters: [],\n\t}),\n\n\tactions: {\n\t\tregisterExternalFilter({ id, appId, searchFrom, label, callback, icon }) {\n\t\t\tthis.externalFilters.push({ id, appId, searchFrom, name: label, callback, icon, isPluginFilter: true })\n\t\t},\n\t},\n})\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearchModal.vue?vue&type=script&lang=ts\"","\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!./UnifiedSearchModal.vue?vue&type=style&index=0&id=1f99d7d9&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./UnifiedSearchModal.vue?vue&type=style&index=0&id=1f99d7d9&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UnifiedSearchModal.vue?vue&type=template&id=1f99d7d9&scoped=true\"\nimport script from \"./UnifiedSearchModal.vue?vue&type=script&lang=ts\"\nexport * from \"./UnifiedSearchModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UnifiedSearchModal.vue?vue&type=style&index=0&id=1f99d7d9&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 \"1f99d7d9\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UnifiedSearch.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"unified-search-menu\"},[_c('UnifiedSearchInput',{attrs:{\"query\":_vm.queryText,\"expanded\":_vm.showUnifiedSearch || _vm.showLocalSearch},on:{\"click\":_vm.openModal,\"update:query\":function($event){_vm.queryText = $event}}}),_vm._v(\" \"),(_vm.supportsLocalSearch)?_c('UnifiedSearchLocalSearchBar',{attrs:{\"open\":_vm.showLocalSearch,\"query\":_vm.queryText},on:{\"globalSearch\":_vm.openModal,\"update:open\":function($event){_vm.showLocalSearch = $event},\"update:query\":function($event){_vm.queryText = $event}}}):_vm._e(),_vm._v(\" \"),_c('UnifiedSearchModal',{attrs:{\"localSearch\":_vm.supportsLocalSearch,\"query\":_vm.queryText,\"open\":_vm.showUnifiedSearch},on:{\"update:query\":function($event){_vm.queryText = $event},\"update:open\":function($event){_vm.showUnifiedSearch = $event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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=786997b4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=786997b4&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=786997b4&scoped=true\"\nimport script from \"./UnifiedSearch.vue?vue&type=script&lang=ts\"\nexport * from \"./UnifiedSearch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UnifiedSearch.vue?vue&type=style&index=0&id=786997b4&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 \"786997b4\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { translatePlural as n, translate as t } from '@nextcloud/l10n';\nimport { getLoggerBuilder } from '@nextcloud/logger';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport UnifiedSearch from './views/UnifiedSearch.vue';\nimport { useSearchStore } from '../src/store/unified-search-external-filters.js';\n__webpack_nonce__ = getCSPNonce();\nconst logger = getLoggerBuilder()\n .setApp('unified-search')\n .detectUser()\n .build();\nVue.mixin({\n data() {\n return {\n logger,\n };\n },\n methods: {\n t,\n n,\n },\n});\n// Register the add/register filter action API globally\nwindow.OCA = window.OCA || {};\nwindow.OCA.UnifiedSearch = {\n registerFilterAction: ({ id, appId, searchFrom, label, callback, icon }) => {\n const searchStore = useSearchStore();\n searchStore.registerExternalFilter({ id, appId, searchFrom, label, callback, icon });\n },\n};\nVue.use(PiniaVuePlugin);\nconst pinia = createPinia();\nexport default new Vue({\n el: '#unified-search',\n pinia,\n name: 'UnifiedSearchRoot',\n render: (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, `.unified-search-custom-date-modal[data-v-2907014b]{padding:10px 20px 10px 20px}.unified-search-custom-date-modal h1[data-v-2907014b]{font-size:16px;font-weight:bolder;line-height:2em}.unified-search-custom-date-modal__pickers[data-v-2907014b]{display:flex;flex-direction:column}.unified-search-custom-date-modal__footer[data-v-2907014b]{display:flex;justify-content:end}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/CustomDateRangeModal.vue\"],\"names\":[],\"mappings\":\"AACA,mDACC,2BAAA,CAEA,sDACC,cAAA,CACA,kBAAA,CACA,eAAA,CAGD,4DACC,YAAA,CACA,qBAAA,CAGD,2DACC,YAAA,CACA,mBAAA\",\"sourcesContent\":[\"\\n.unified-search-custom-date-modal {\\n\\tpadding: 10px 20px 10px 20px;\\n\\n\\th1 {\\n\\t\\tfont-size: 16px;\\n\\t\\tfont-weight: bolder;\\n\\t\\tline-height: 2em;\\n\\t}\\n\\n\\t&__pickers {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n\\n\\t&__footer {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: end;\\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, `.chip[data-v-60a863d2]{display:flex;align-items:center;padding:2px 4px;border:1px solid var(--color-primary-element-light);border-radius:20px;background-color:var(--color-primary-element-light);margin:2px}.chip .icon[data-v-60a863d2]{display:flex;align-items:center;padding-inline-end:5px}.chip .icon img[data-v-60a863d2]{width:20px;padding:2px;border-radius:20px;filter:var(--background-invert-if-bright)}.chip .text[data-v-60a863d2]{margin:0 2px}.chip .close-icon[data-v-60a863d2]{cursor:pointer}.chip .close-icon[data-v-60a863d2] :hover{filter:invert(20%)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchFilterChip.vue\"],\"names\":[],\"mappings\":\"AACA,uBACI,YAAA,CACA,kBAAA,CACA,eAAA,CACA,mDAAA,CACA,kBAAA,CACA,mDAAA,CACA,UAAA,CAEA,6BACI,YAAA,CACA,kBAAA,CACA,sBAAA,CAEA,iCACI,UAAA,CACA,WAAA,CACA,kBAAA,CACA,yCAAA,CAIR,6BACI,YAAA,CAGJ,mCACI,cAAA,CAEA,0CACI,kBAAA\",\"sourcesContent\":[\"\\n.chip {\\n display: flex;\\n align-items: center;\\n padding: 2px 4px;\\n border: 1px solid var(--color-primary-element-light);\\n border-radius: 20px;\\n background-color: var(--color-primary-element-light);\\n margin: 2px;\\n\\n .icon {\\n display: flex;\\n align-items: center;\\n padding-inline-end: 5px;\\n\\n img {\\n width: 20px;\\n padding: 2px;\\n border-radius: 20px;\\n filter: var(--background-invert-if-bright);\\n }\\n }\\n\\n .text {\\n margin: 0 2px;\\n }\\n\\n .close-icon {\\n cursor: pointer ;\\n\\n :hover {\\n filter: invert(20%);\\n }\\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, `.result-item[data-v-ca416b22] a{border:2px solid rgba(0,0,0,0);border-radius:var(--border-radius-large) !important}.result-item[data-v-ca416b22] a:active,.result-item[data-v-ca416b22] a:hover,.result-item[data-v-ca416b22] a:focus{background-color:var(--color-background-hover);border:2px solid var(--color-border-maxcontrast)}.result-item[data-v-ca416b22] a *{cursor:pointer}.result-item__icon[data-v-ca416b22]{overflow:hidden;width:var(--default-clickable-area);height:var(--default-clickable-area);border-radius:var(--border-radius);background-repeat:no-repeat;background-position:center center;background-size:32px}.result-item__icon--rounded[data-v-ca416b22]{border-radius:calc(var(--default-clickable-area)/2)}.result-item__icon--no-preview[data-v-ca416b22]{background-size:32px}.result-item__icon--with-thumbnail[data-v-ca416b22]{background-size:cover}.result-item__icon--with-thumbnail[data-v-ca416b22]:not(.result-item__icon--rounded){border:1px solid var(--color-border);max-height:calc(var(--default-clickable-area) - 2px);max-width:calc(var(--default-clickable-area) - 2px)}.result-item__icon img[data-v-ca416b22]{width:100%;height:100%;object-fit:cover;object-position:center}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchResult.vue\"],\"names\":[],\"mappings\":\"AAEC,gCACC,8BAAA,CACA,mDAAA,CAEA,mHAGC,8CAAA,CACA,gDAAA,CAGD,kCACC,cAAA,CAIF,oCACC,eAAA,CACA,mCAAA,CACA,oCAAA,CACA,kCAAA,CACA,2BAAA,CACA,iCAAA,CACA,oBAAA,CAEA,6CACC,mDAAA,CAGD,gDACC,oBAAA,CAGD,oDACC,qBAAA,CAGD,qFACC,oCAAA,CAEA,oDAAA,CACA,mDAAA,CAGD,wCAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n.result-item {\\n\\t:deep(a) {\\n\\t\\tborder: 2px solid transparent;\\n\\t\\tborder-radius: var(--border-radius-large) !important;\\n\\n\\t\\t&:active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder: 2px solid var(--color-border-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t* {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: var(--default-clickable-area);\\n\\t\\theight: var(--default-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\\n\\t\\t&--rounded {\\n\\t\\t\\tborder-radius: calc(var(--default-clickable-area) / 2);\\n\\t\\t}\\n\\n\\t\\t&--no-preview {\\n\\t\\t\\tbackground-size: 32px;\\n\\t\\t}\\n\\n\\t\\t&--with-thumbnail {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\n\\t\\t&--with-thumbnail:not(#{&}--rounded) {\\n\\t\\t\\tborder: 1px solid var(--color-border);\\n\\t\\t\\t// compensate for border\\n\\t\\t\\tmax-height: calc(var(--default-clickable-area) - 2px);\\n\\t\\t\\tmax-width: calc(var(--default-clickable-area) - 2px);\\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\"],\"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, `.searchable-list__wrapper[data-v-37b50471]{padding:calc(var(--default-grid-baseline)*3);display:flex;flex-direction:column;align-items:center;width:250px}.searchable-list__list[data-v-37b50471]{width:100%;max-height:284px;overflow-y:auto;margin-top:var(--default-grid-baseline);padding:var(--default-grid-baseline)}.searchable-list__list[data-v-37b50471] .button-vue{border-radius:var(--border-radius-large) !important}.searchable-list__list[data-v-37b50471] .button-vue span{font-weight:initial}.searchable-list__empty-content[data-v-37b50471]{margin-top:calc(var(--default-grid-baseline)*3)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/SearchableList.vue\"],\"names\":[],\"mappings\":\"AAEC,2CACC,4CAAA,CACA,YAAA,CACA,qBAAA,CACA,kBAAA,CACA,WAAA,CAGD,wCACC,UAAA,CACA,gBAAA,CACA,eAAA,CACA,uCAAA,CACA,oCAAA,CAEA,oDACC,mDAAA,CACA,yDACC,mBAAA,CAKH,iDACC,+CAAA\",\"sourcesContent\":[\"\\n.searchable-list {\\n\\t&__wrapper {\\n\\t\\tpadding: calc(var(--default-grid-baseline) * 3);\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\talign-items: center;\\n\\t\\twidth: 250px;\\n\\t}\\n\\n\\t&__list {\\n\\t\\twidth: 100%;\\n\\t\\tmax-height: 284px;\\n\\t\\toverflow-y: auto;\\n\\t\\tmargin-top: var(--default-grid-baseline);\\n\\t\\tpadding: var(--default-grid-baseline);\\n\\n\\t\\t:deep(.button-vue) {\\n\\t\\t\\tborder-radius: var(--border-radius-large) !important;\\n\\t\\t\\tspan {\\n\\t\\t\\t\\tfont-weight: initial;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__empty-content {\\n\\t\\tmargin-top: calc(var(--default-grid-baseline) * 3);\\n\\t}\\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-input[data-v-4fc6c0ec]{position:relative;z-index:51}.unified-search-input[data-v-4fc6c0ec]:not(.unified-search-input--mobile){display:flex;align-items:center;width:clamp(200px,35vw,600px);max-width:calc(100% - 32px)}.unified-search-input--mobile[data-v-4fc6c0ec]{display:contents}.unified-search-input__field[data-v-4fc6c0ec]{--resting-background: rgba(0, 0, 0, 0.15);--resting-background-hover: rgba(0, 0, 0, 0.22);--search-icon-pad: 12px;--search-icon-size: 20px;--search-icon-gap: 8px;--search-anim-duration: 240ms;--search-anim-easing: cubic-bezier(0.22, 1, 0.36, 1);position:relative;container-type:inline-size;display:flex;align-items:center;height:var(--default-clickable-area);width:100%;border-radius:var(--border-radius-element, 8px);box-shadow:inset 0 2px 0 rgba(0,0,0,.12);background-color:var(--resting-background);-webkit-backdrop-filter:var(--filter-background-blur);backdrop-filter:var(--filter-background-blur);transition:background-color var(--search-anim-duration) var(--search-anim-easing),box-shadow var(--search-anim-duration) var(--search-anim-easing)}.unified-search-input__field[data-v-4fc6c0ec]:hover:not(.unified-search-input__field--active){background-color:var(--resting-background-hover)}.unified-search-input__field--active[data-v-4fc6c0ec]{background-color:var(--color-main-background);box-shadow:none}.unified-search-input__resting[data-v-4fc6c0ec]{--slide-sign: 1;position:absolute;inset-block:0;inset-inline-start:var(--search-icon-pad);max-width:calc(100% - 2*var(--search-icon-pad));display:flex;align-items:center;gap:var(--search-icon-gap);pointer-events:none;color:color-mix(in srgb, var(--color-background-plain-text) 70%, var(--color-background-plain));transform:translateX(calc(var(--slide-sign) * (50cqi - 50% - var(--search-icon-pad))));transition:transform var(--search-anim-duration) var(--search-anim-easing),color var(--search-anim-duration) var(--search-anim-easing)}.unified-search-input__field--active .unified-search-input__resting[data-v-4fc6c0ec]{transform:translateX(0);color:var(--color-text-maxcontrast)}.unified-search-input__label[data-v-4fc6c0ec]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;transition:opacity var(--search-anim-duration) var(--search-anim-easing)}.unified-search-input__resting--filled .unified-search-input__label[data-v-4fc6c0ec]{opacity:0}.unified-search-input__resting[data-v-4fc6c0ec] .material-design-icon__svg{display:block;transform:translateY(1px)}.unified-search-input__input[data-v-4fc6c0ec]{flex:1;min-width:0;height:100%;margin:0;padding-inline:calc(var(--search-icon-pad) + var(--search-icon-size) + var(--search-icon-gap)) var(--search-icon-pad);border:none !important;border-radius:0 !important;box-shadow:none !important;background-color:rgba(0,0,0,0);color:var(--color-main-text);font-size:var(--default-font-size)}.unified-search-input__input[data-v-4fc6c0ec]::placeholder{opacity:1;color:var(--color-text-maxcontrast)}.unified-search-input__input[data-v-4fc6c0ec]:focus-visible{outline:none}.unified-search-input__clear[data-v-4fc6c0ec]{flex-shrink:0;margin-inline-end:2px}[data-theme-dark] .unified-search-input__field[data-v-4fc6c0ec],[data-theme-dark-highcontrast] .unified-search-input__field[data-v-4fc6c0ec]{--resting-background: color-mix(in srgb, var(--color-primary-element) 16%, transparent);--resting-background-hover: color-mix(in srgb, var(--color-primary-element) 22%, transparent)}[dir=rtl] .unified-search-input__resting[data-v-4fc6c0ec]{--slide-sign: -1}@media(prefers-reduced-motion: reduce){.unified-search-input__resting[data-v-4fc6c0ec],.unified-search-input__resting span[data-v-4fc6c0ec]{transition:none}}.unified-search-input--mobile[data-v-4fc6c0ec] .header-menu{height:var(--default-clickable-area)}.unified-search-input--mobile[data-v-4fc6c0ec] .header-menu__trigger{--button-size: var(--default-clickable-area) !important;height:var(--default-clickable-area) !important}.unified-search-input--mobile[data-v-4fc6c0ec] .button-vue{--color-main-text: var(--color-background-plain-text);color:var(--color-background-plain-text);border-radius:var(--border-radius-element) !important}.unified-search-input--mobile[data-v-4fc6c0ec] .button-vue:hover:not(:disabled){background-color:rgba(0,0,0,.1) !important}.unified-search-input--mobile[data-v-4fc6c0ec] .button-vue:active:not(:disabled){background-color:rgba(0,0,0,.15) !important}.unified-search-input--mobile[data-v-4fc6c0ec] .button-vue:focus-visible{background-color:rgba(0,0,0,.1) !important;outline:none !important;box-shadow:inset 0 0 0 2px var(--color-background-plain-text) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/UnifiedSearchInput.vue\"],\"names\":[],\"mappings\":\"AACA,uCAGC,iBAAA,CACA,UAAA,CAEA,0EACC,YAAA,CACA,kBAAA,CACA,6BAAA,CACA,2BAAA,CAGD,+CACC,gBAAA,CAGD,8CACC,yCAAA,CACA,+CAAA,CAGA,uBAAA,CACA,wBAAA,CACA,sBAAA,CAGA,6BAAA,CACA,oDAAA,CACA,iBAAA,CAEA,0BAAA,CACA,YAAA,CACA,kBAAA,CAGA,oCAAA,CACA,UAAA,CACA,+CAAA,CACA,wCAAA,CAEA,0CAAA,CACA,qDAAA,CACA,6CAAA,CAEA,kJACC,CAGD,8FACC,gDAAA,CAID,sDACC,6CAAA,CACA,eAAA,CAQF,gDACC,eAAA,CACA,iBAAA,CACA,aAAA,CACA,yCAAA,CACA,+CAAA,CACA,YAAA,CACA,kBAAA,CACA,0BAAA,CACA,mBAAA,CACA,+FAAA,CACA,sFAAA,CACA,sIACC,CAGD,qFACC,uBAAA,CACA,mCAAA,CAOF,8CACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,wEAAA,CAGD,qFACC,SAAA,CAOD,2EACC,aAAA,CACA,yBAAA,CAKD,8CACC,MAAA,CACA,WAAA,CACA,WAAA,CACA,QAAA,CAGA,qHAAA,CAIA,sBAAA,CACA,0BAAA,CACA,0BAAA,CACA,8BAAA,CACA,4BAAA,CACA,kCAAA,CAEA,2DACC,SAAA,CACA,mCAAA,CAGD,4DACC,YAAA,CAIF,8CACC,aAAA,CACA,qBAAA,CAMF,6IAEC,uFAAA,CACA,6FAAA,CAKD,0DACC,gBAAA,CAKD,uCACC,qGAEC,eAAA,CAAA,CAKF,4DACC,oCAAA,CAGD,qEACC,uDAAA,CACA,+CAAA,CAGD,2DACC,qDAAA,CACA,wCAAA,CACA,qDAAA,CAEA,gFACC,0CAAA,CAGD,iFACC,2CAAA,CAGD,yEACC,0CAAA,CACA,uBAAA,CACA,wEAAA\",\"sourcesContent\":[\"\\n.unified-search-input {\\n\\t// Paints above the modal root (z-index: 50) so the header input stays clickable\\n\\t// over the scrim while the popover is open. Keep 51 one above that value.\\n\\tposition: relative;\\n\\tz-index: 51;\\n\\n\\t&:not(.unified-search-input--mobile) {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\twidth: clamp(200px, 35vw, 600px);\\n\\t\\tmax-width: calc(100% - 32px);\\n\\t}\\n\\n\\t&--mobile {\\n\\t\\tdisplay: contents;\\n\\t}\\n\\n\\t&__field {\\n\\t\\t--resting-background: rgba(0, 0, 0, 0.15);\\n\\t\\t--resting-background-hover: rgba(0, 0, 0, 0.22);\\n\\t\\t// Shared geometry: the resting group and the input's leading padding read the\\n\\t\\t// same tokens so the placeholder and the typed value line up.\\n\\t\\t--search-icon-pad: 12px;\\n\\t\\t--search-icon-size: 20px;\\n\\t\\t--search-icon-gap: 8px;\\n\\t\\t// One shared timing for every focus transition (background, the icon/label\\n\\t\\t// slide, the recolour) so they move together. easeOutQuart = soft landing.\\n\\t\\t--search-anim-duration: 240ms;\\n\\t\\t--search-anim-easing: cubic-bezier(0.22, 1, 0.36, 1);\\n\\t\\tposition: relative;\\n\\t\\t// Query container so the resting group can centre itself with cqi units\\n\\t\\tcontainer-type: inline-size;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\t// Match the default clickable area so the inner (which the global\\n\\t\\t// input reset forces to that height) fills the field without an override.\\n\\t\\theight: var(--default-clickable-area);\\n\\t\\twidth: 100%;\\n\\t\\tborder-radius: var(--border-radius-element, 8px);\\n\\t\\tbox-shadow: inset 0 2px 0 rgba(0, 0, 0, 0.12);\\n\\t\\t// Resting: subdued \\\"button\\\" look that sits on the themed header\\n\\t\\tbackground-color: var(--resting-background);\\n\\t\\t-webkit-backdrop-filter: var(--filter-background-blur);\\n\\t\\tbackdrop-filter: var(--filter-background-blur);\\n\\t\\t// Blue tint -> white surface on the shared timing, in step with the slide.\\n\\t\\ttransition:\\n\\t\\t\\tbackground-color var(--search-anim-duration) var(--search-anim-easing),\\n\\t\\t\\tbox-shadow var(--search-anim-duration) var(--search-anim-easing);\\n\\n\\t\\t&:hover:not(.unified-search-input__field--active) {\\n\\t\\t\\tbackground-color: var(--resting-background-hover);\\n\\t\\t}\\n\\n\\t\\t// Active: real input surface once focused or filled\\n\\t\\t&--active {\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tbox-shadow: none;\\n\\t\\t}\\n\\t}\\n\\n\\t// Anchored at the leading edge and translated to the centre while at rest; on\\n\\t// focus (--active) the translate goes to 0 and it slides into place. Centre offset\\n\\t// is pure CSS: half the field (50cqi) minus half the group (50%) minus the pad, so\\n\\t// it self-corrects for any placeholder length or field width.\\n\\t&__resting {\\n\\t\\t--slide-sign: 1;\\n\\t\\tposition: absolute;\\n\\t\\tinset-block: 0;\\n\\t\\tinset-inline-start: var(--search-icon-pad);\\n\\t\\tmax-width: calc(100% - 2 * var(--search-icon-pad));\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tgap: var(--search-icon-gap);\\n\\t\\tpointer-events: none;\\n\\t\\tcolor: color-mix(in srgb, var(--color-background-plain-text) 70%, var(--color-background-plain));\\n\\t\\ttransform: translateX(calc(var(--slide-sign) * (50cqi - 50% - var(--search-icon-pad))));\\n\\t\\ttransition:\\n\\t\\t\\ttransform var(--search-anim-duration) var(--search-anim-easing),\\n\\t\\t\\tcolor var(--search-anim-duration) var(--search-anim-easing);\\n\\n\\t\\t.unified-search-input__field--active & {\\n\\t\\t\\ttransform: translateX(0);\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\n\\t// Placeholder text inside the resting group. Ellipsised, and hidden once typing\\n\\t// starts so it doesn't overlap the value. Scoped to the label class so the sibling\\n\\t// magnifier (also rendered as a ) stays visible.\\n\\t&__label {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\ttransition: opacity var(--search-anim-duration) var(--search-anim-easing);\\n\\t}\\n\\n\\t&__resting--filled &__label {\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t// The material-design icon is inline (baseline-aligned), which leaves a\\n\\t// descender gap and makes the glyph sit high even when its box is centred.\\n\\t// Render it as a block so it fills its box, then nudge 1px down to sit on the\\n\\t// text's optical centre (a geometrically centred glyph reads slightly high).\\n\\t&__resting :deep(.material-design-icon__svg) {\\n\\t\\tdisplay: block;\\n\\t\\ttransform: translateY(1px);\\n\\t}\\n\\n\\t// Only visible once active (at rest it's empty and covered by the overlay),\\n\\t// so it's styled for the active/white surface throughout.\\n\\t&__input {\\n\\t\\tflex: 1;\\n\\t\\tmin-width: 0;\\n\\t\\theight: 100%;\\n\\t\\tmargin: 0;\\n\\t\\t// Leading space so the placeholder/value starts one gap past the magnifier,\\n\\t\\t// matching the resting group exactly. Trailing padding mirrors the leading pad.\\n\\t\\tpadding-inline: calc(var(--search-icon-pad) + var(--search-icon-size) + var(--search-icon-gap)) var(--search-icon-pad);\\n\\t\\t// Opt out of NC's global input chrome (core/css/inputs.scss adds a border,\\n\\t\\t// radius and focus box-shadow to any text input not in its exclusion list).\\n\\t\\t// !important because that global focus rule outweighs a scoped class.\\n\\t\\tborder: none !important;\\n\\t\\tborder-radius: 0 !important;\\n\\t\\tbox-shadow: none !important;\\n\\t\\tbackground-color: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tfont-size: var(--default-font-size);\\n\\n\\t\\t&::placeholder {\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t&:focus-visible {\\n\\t\\t\\toutline: none;\\n\\t\\t}\\n\\t}\\n\\n\\t&__clear {\\n\\t\\tflex-shrink: 0;\\n\\t\\tmargin-inline-end: 2px;\\n\\t}\\n}\\n\\n// On dark themes the plain overlay is nearly invisible on the header, so tint\\n// the resting background with the primary colour instead.\\n[data-theme-dark] .unified-search-input__field,\\n[data-theme-dark-highcontrast] .unified-search-input__field {\\n\\t--resting-background: color-mix(in srgb, var(--color-primary-element) 16%, transparent);\\n\\t--resting-background-hover: color-mix(in srgb, var(--color-primary-element) 22%, transparent);\\n}\\n\\n// translateX is physical, so flip the resting slide under RTL to keep it moving\\n// toward the leading (right) edge.\\n[dir=rtl] .unified-search-input__resting {\\n\\t--slide-sign: -1;\\n}\\n\\n// Respect reduced-motion: keep the end states but drop the slide/fade so nothing\\n// animates on focus.\\n@media (prefers-reduced-motion: reduce) {\\n\\t.unified-search-input__resting,\\n\\t.unified-search-input__resting span {\\n\\t\\ttransition: none;\\n\\t}\\n}\\n\\n// Mobile: NcHeaderButton styling to match the other header items\\n.unified-search-input--mobile :deep(.header-menu) {\\n\\theight: var(--default-clickable-area);\\n}\\n\\n.unified-search-input--mobile :deep(.header-menu__trigger) {\\n\\t--button-size: var(--default-clickable-area) !important;\\n\\theight: var(--default-clickable-area) !important;\\n}\\n\\n.unified-search-input--mobile :deep(.button-vue) {\\n\\t--color-main-text: var(--color-background-plain-text);\\n\\tcolor: var(--color-background-plain-text);\\n\\tborder-radius: var(--border-radius-element) !important;\\n\\n\\t&:hover:not(:disabled) {\\n\\t\\tbackground-color: rgba(0, 0, 0, 0.1) !important;\\n\\t}\\n\\n\\t&:active:not(:disabled) {\\n\\t\\tbackground-color: rgba(0, 0, 0, 0.15) !important;\\n\\t}\\n\\n\\t&:focus-visible {\\n\\t\\tbackground-color: rgba(0, 0, 0, 0.1) !important;\\n\\t\\toutline: none !important;\\n\\t\\tbox-shadow: inset 0 0 0 2px var(--color-background-plain-text) !important;\\n\\t}\\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, `.local-unified-search[data-v-2b577e50]{--local-search-width: min(calc(250px + var(--dfb017de)), 95vw);box-sizing:border-box;position:relative;height:var(--header-height);width:var(--local-search-width);display:flex;align-items:center;z-index:10;padding-inline:var(--border-width-input-focused);overflow:hidden;inset-inline-end:0}.local-unified-search .local-unified-search__global-search[data-v-2b577e50]{position:absolute;inset-inline-end:var(--default-clickable-area)}.local-unified-search .local-unified-search__input[data-v-2b577e50]{box-sizing:border-box;margin:0;width:var(--local-search-width)}.local-unified-search .local-unified-search__input[data-v-2b577e50] input{padding-inline-end:calc(var(--dfb017de) + var(--default-clickable-area))}.animated-width[data-v-2b577e50]{transition:width var(--animation-quick) linear}.v-leave-active[data-v-2b577e50]{position:absolute !important}.v-enter.local-unified-search[data-v-2b577e50],.v-leave-to.local-unified-search[data-v-2b577e50]{--local-search-width: var(--clickable-area-large)}@media screen and (max-width: 500px){.local-unified-search.local-unified-search--open[data-v-2b577e50]{--local-search-width: 100vw;padding-inline:var(--default-grid-baseline)}.unified-search-menu:has(.local-unified-search--open){position:absolute !important;inset-inline:0}.header-end:has(.local-unified-search--open) > :not(.unified-search-menu){display:none}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/UnifiedSearchLocalSearchBar.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,8DAAA,CACA,qBAAA,CACA,iBAAA,CACA,2BAAA,CACA,+BAAA,CACA,YAAA,CACA,kBAAA,CAEA,UAAA,CAEA,gDAAA,CAEA,eAAA,CAEA,kBAAA,CAEA,4EACC,iBAAA,CACA,8CAAA,CAGD,oEACC,qBAAA,CAEA,QAAA,CACA,+BAAA,CAIA,0EAEC,wEAAA,CAKH,iCACC,8CAAA,CAKD,iCACC,4BAAA,CAKA,iGAEC,iDAAA,CAIF,qCACC,kEAEC,2BAAA,CACA,2CAAA,CAID,sDACC,4BAAA,CACA,cAAA,CAGD,0EACC,YAAA,CAAA\",\"sourcesContent\":[\"\\n.local-unified-search {\\n\\t--local-search-width: min(calc(250px + v-bind('searchGlobalButtonCSSWidth')), 95vw);\\n\\tbox-sizing: border-box;\\n\\tposition: relative;\\n\\theight: var(--header-height);\\n\\twidth: var(--local-search-width);\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\t// Ensure it overlays the other entries\\n\\tz-index: 10;\\n\\t// add some padding for the focus visible outline\\n\\tpadding-inline: var(--border-width-input-focused);\\n\\t// hide the overflow - needed for the transition\\n\\toverflow: hidden;\\n\\t// Ensure the position is fixed also during \\\"position: absolut\\\" (transition)\\n\\tinset-inline-end: 0;\\n\\n\\t#{&} &__global-search {\\n\\t\\tposition: absolute;\\n\\t\\tinset-inline-end: var(--default-clickable-area);\\n\\t}\\n\\n\\t#{&} &__input {\\n\\t\\tbox-sizing: border-box;\\n\\t\\t// override some nextcloud-vue styles\\n\\t\\tmargin: 0;\\n\\t\\twidth: var(--local-search-width);\\n\\n\\t\\t// Fixup the spacing so we can fit in the \\\"search globally\\\" button\\n\\t\\t// this can break at any time the component library changes\\n\\t\\t:deep(input) {\\n\\t\\t\\t// search global width + close button width\\n\\t\\t\\tpadding-inline-end: calc(v-bind('searchGlobalButtonCSSWidth') + var(--default-clickable-area));\\n\\t\\t}\\n\\t}\\n}\\n\\n.animated-width {\\n\\ttransition: width var(--animation-quick) linear;\\n}\\n\\n// Make the position absolute during the transition\\n// this is needed to \\\"hide\\\" the button behind it\\n.v-leave-active {\\n\\tposition: absolute !important;\\n}\\n\\n.v-enter,\\n.v-leave-to {\\n\\t&.local-unified-search {\\n\\t\\t// Start with only the overlay button\\n\\t\\t--local-search-width: var(--clickable-area-large);\\n\\t}\\n}\\n\\n@media screen and (max-width: 500px) {\\n\\t.local-unified-search.local-unified-search--open {\\n\\t\\t// 100% but still show the menu toggle on the very right\\n\\t\\t--local-search-width: 100vw;\\n\\t\\tpadding-inline: var(--default-grid-baseline);\\n\\t}\\n\\n\\t// when open we need to position it absolute to allow overlay the full bar\\n\\t:global(.unified-search-menu:has(.local-unified-search--open)) {\\n\\t\\tposition: absolute !important;\\n\\t\\tinset-inline: 0;\\n\\t}\\n\\t// Hide all other entries, especially the user menu as it might leak pixels\\n\\t:global(.header-end:has(.local-unified-search--open) > :not(.unified-search-menu)) {\\n\\t\\tdisplay: none;\\n\\t}\\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-modal-root[data-v-1f99d7d9]{position:absolute;inset-block-start:100%;inset-inline:0;z-index:50 !important;margin-block-start:6px;display:flex;justify-content:center}.unified-search-modal__scrim[data-v-1f99d7d9]{position:fixed;inset:0;z-index:0;--backdrop-color: 0, 0, 0;background-color:rgba(var(--backdrop-color), 0.5)}.unified-search-modal__container[data-v-1f99d7d9]{position:relative;z-index:1;display:flex;flex-direction:column;flex-shrink:0;width:600px;max-width:90vw;max-height:calc(90vh - var(--header-height));border-radius:var(--border-radius-container, var(--border-radius-rounded));overflow:hidden;background-color:var(--color-main-background);color:var(--color-main-text);box-shadow:0 0 40px rgba(0,0,0,.2);transition:transform 240ms cubic-bezier(0.22, 1, 0.36, 1)}@media only screen and ((max-width: 512px) or (max-height: 400px)){.unified-search-modal-root[data-v-1f99d7d9]{position:fixed;inset-block-start:var(--header-height);inset-inline:0;inset-block-end:0;margin-block-start:0}.unified-search-modal__container[data-v-1f99d7d9]{width:100%;max-width:initial;height:100%;max-height:initial;border-radius:0}}.unified-search-modal-enter-active[data-v-1f99d7d9],.unified-search-modal-leave-active[data-v-1f99d7d9]{transition:opacity 250ms}.unified-search-modal-enter[data-v-1f99d7d9],.unified-search-modal-leave-to[data-v-1f99d7d9]{opacity:0}.unified-search-modal-enter .unified-search-modal__container[data-v-1f99d7d9],.unified-search-modal-leave-to .unified-search-modal__container[data-v-1f99d7d9]{transform:translateY(-6px)}@media(prefers-reduced-motion: reduce){.unified-search-modal__container[data-v-1f99d7d9]{transition:none}.unified-search-modal-enter .unified-search-modal__container[data-v-1f99d7d9],.unified-search-modal-leave-to .unified-search-modal__container[data-v-1f99d7d9]{transform:none}}.unified-search-modal__header[data-v-1f99d7d9]{background-color:var(--color-main-background);padding-inline:12px;padding-block:12px;position:sticky;top:6px}.unified-search-modal__mobile-input[data-v-1f99d7d9]{display:flex;align-items:center;gap:4px;margin-block-end:8px}.unified-search-modal__mobile-input[data-v-1f99d7d9] .input-field{flex:1 1 auto}.unified-search-modal__filters[data-v-1f99d7d9]{display:flex;flex-wrap:wrap;gap:4px;justify-content:start;padding-top:4px}.unified-search-modal__search-external-resources[data-v-1f99d7d9] span.checkbox-content{padding-top:0;padding-bottom:0}.unified-search-modal__search-external-resources[data-v-1f99d7d9] .checkbox-content__icon{margin:auto !important}.unified-search-modal__search-external-resources--aligned[data-v-1f99d7d9]{margin-inline-start:auto}.unified-search-modal__filters-applied[data-v-1f99d7d9]{padding-top:4px;display:flex;flex-wrap:wrap}.unified-search-modal__no-content[data-v-1f99d7d9]{display:flex;align-items:center;margin-top:.5em;height:70%}.unified-search-modal__results[data-v-1f99d7d9]{flex:1 1 auto;min-height:0;overflow:hidden auto;padding-inline:12px;padding-block:0 12px}.unified-search-modal__results .result-title[data-v-1f99d7d9]{color:var(--color-primary-element);font-size:16px;margin-block:8px 4px}.unified-search-modal__results .result-footer[data-v-1f99d7d9]{justify-content:space-between;align-items:center;display:flex}.unified-search-modal__results .result--unfiltered[data-v-1f99d7d9]{opacity:.7}.unified-search-modal__unfiltered-header[data-v-1f99d7d9]{display:flex;flex-direction:column;gap:2px;margin-block:16px 8px;padding-block:12px 0;border-top:1px solid var(--color-border)}.unified-search-modal__unfiltered-label[data-v-1f99d7d9]{font-weight:bold;color:var(--color-text-maxcontrast)}.filter-button__icon[data-v-1f99d7d9]{height:20px;width:20px;object-fit:contain;filter:var(--background-invert-if-bright);padding:11px}@media only screen and (max-height: 400px){.unified-search-modal__results[data-v-1f99d7d9]{overflow:unset}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/UnifiedSearch/UnifiedSearchModal.vue\"],\"names\":[],\"mappings\":\"AAKA,4CACC,iBAAA,CACA,sBAAA,CACA,cAAA,CAGA,qBAAA,CACA,sBAAA,CACA,YAAA,CACA,sBAAA,CAKD,8CACC,cAAA,CACA,OAAA,CACA,SAAA,CACA,yBAAA,CACA,iDAAA,CAKD,kDACC,iBAAA,CACA,SAAA,CACA,YAAA,CACA,qBAAA,CAGA,aAAA,CACA,WAAA,CACA,cAAA,CAEA,4CAAA,CACA,0EAAA,CAEA,eAAA,CACA,6CAAA,CACA,4BAAA,CACA,kCAAA,CAGA,yDAAA,CAID,mEACC,4CAGC,cAAA,CACA,sCAAA,CACA,cAAA,CACA,iBAAA,CACA,oBAAA,CAGD,kDACC,UAAA,CACA,iBAAA,CACA,WAAA,CACA,kBAAA,CACA,eAAA,CAAA,CAKF,wGAEC,wBAAA,CAGD,6FAEC,SAAA,CAGD,+JAEC,0BAAA,CAKD,uCACC,kDACC,eAAA,CAGD,+JAEC,cAAA,CAAA,CAKD,+CAEC,6CAAA,CAEA,mBAAA,CAEA,kBAAA,CAEA,eAAA,CACA,OAAA,CAGD,qDACC,YAAA,CACA,kBAAA,CACA,OAAA,CACA,oBAAA,CAEA,kEACC,aAAA,CAIF,gDACC,YAAA,CACA,cAAA,CACA,OAAA,CACA,qBAAA,CACA,eAAA,CAIA,wFACC,aAAA,CACA,gBAAA,CAGD,0FACC,sBAAA,CAGD,2EACC,wBAAA,CAIF,wDACC,eAAA,CACA,YAAA,CACA,cAAA,CAGD,mDACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,UAAA,CAGD,gDAEC,aAAA,CACA,YAAA,CACA,oBAAA,CAEA,mBAAA,CACA,oBAAA,CAGC,8DACC,kCAAA,CACA,cAAA,CACA,oBAAA,CAGD,+DACC,6BAAA,CACA,kBAAA,CACA,YAAA,CAGD,oEACC,UAAA,CAMH,0DACC,YAAA,CACA,qBAAA,CACA,OAAA,CACA,qBAAA,CACA,oBAAA,CACA,wCAAA,CAGD,yDACC,gBAAA,CACA,mCAAA,CAIF,sCACC,WAAA,CACA,UAAA,CACA,kBAAA,CACA,yCAAA,CACA,YAAA,CAID,2CACC,gDACC,cAAA,CAAA\",\"sourcesContent\":[\"\\n\\n// Anchor the popover under the header input (the .unified-search-menu parent is\\n// the positioning context) instead of centering it in the viewport. The scrim is\\n// fixed separately so it still dims the whole page.\\n.unified-search-modal-root {\\n\\tposition: absolute;\\n\\tinset-block-start: 100%;\\n\\tinset-inline: 0;\\n\\t// One below the header input (z-index: 51) and above the page. !important wins\\n\\t// the stacking cascade inside the themed #header.\\n\\tz-index: 50 !important;\\n\\tmargin-block-start: 6px;\\n\\tdisplay: flex;\\n\\tjustify-content: center;\\n}\\n\\n// Backdrop, mirrors NcModal's .modal-mask. Fixed so it covers the whole viewport\\n// regardless of the anchored root.\\n.unified-search-modal__scrim {\\n\\tposition: fixed;\\n\\tinset: 0;\\n\\tz-index: 0;\\n\\t--backdrop-color: 0, 0, 0;\\n\\tbackground-color: rgba(var(--backdrop-color), 0.5);\\n}\\n\\n// Dialog panel: NcModal's \\\"normal\\\" chrome, but width-matched to the header input\\n// and anchored under it, growing downward and scrolling internally when tall.\\n.unified-search-modal__container {\\n\\tposition: relative;\\n\\tz-index: 1;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\t// Match the previous unified-search modal (NcModal \\\"normal\\\" size). flex-shrink: 0\\n\\t// stops the flex parent from collapsing it below 600px when the menu is narrower.\\n\\tflex-shrink: 0;\\n\\twidth: 600px;\\n\\tmax-width: 90vw;\\n\\t// Leave ~10vh below the panel so it does not reach the bottom of the page\\n\\tmax-height: calc(90vh - var(--header-height));\\n\\tborder-radius: var(--border-radius-container, var(--border-radius-rounded));\\n\\t// Clip the header/results to the rounded corners\\n\\toverflow: hidden;\\n\\tbackground-color: var(--color-main-background);\\n\\tcolor: var(--color-main-text);\\n\\tbox-shadow: 0 0 40px rgba(0, 0, 0, 0.2);\\n\\t// The panel slides down into place; the enter/leave classes set the start offset.\\n\\t// Same easeOutQuart curve as the header input so the whole search UI moves in step.\\n\\ttransition: transform 240ms cubic-bezier(0.22, 1, 0.36, 1);\\n}\\n\\n// Fullscreen on small viewports, mirrors NcModal's responsive breakpoint\\n@media only screen and ((max-width: 512px) or (max-height: 400px)) {\\n\\t.unified-search-modal-root {\\n\\t\\t// Fill the viewport below the header bar, leaving it visible and interactive\\n\\t\\t// (matches the previous unified search and the rest of the mobile chrome).\\n\\t\\tposition: fixed;\\n\\t\\tinset-block-start: var(--header-height);\\n\\t\\tinset-inline: 0;\\n\\t\\tinset-block-end: 0;\\n\\t\\tmargin-block-start: 0;\\n\\t}\\n\\n\\t.unified-search-modal__container {\\n\\t\\twidth: 100%;\\n\\t\\tmax-width: initial;\\n\\t\\theight: 100%;\\n\\t\\tmax-height: initial;\\n\\t\\tborder-radius: 0;\\n\\t}\\n}\\n\\n// Open/close animation: the backdrop fades while the panel slides down from the top\\n.unified-search-modal-enter-active,\\n.unified-search-modal-leave-active {\\n\\ttransition: opacity 250ms;\\n}\\n\\n.unified-search-modal-enter,\\n.unified-search-modal-leave-to {\\n\\topacity: 0;\\n}\\n\\n.unified-search-modal-enter .unified-search-modal__container,\\n.unified-search-modal-leave-to .unified-search-modal__container {\\n\\ttransform: translateY(-6px);\\n}\\n\\n// Respect reduced-motion: keep the backdrop cross-fade (opacity is not motion) but\\n// drop the panel slide so nothing moves on open/close.\\n@media (prefers-reduced-motion: reduce) {\\n\\t.unified-search-modal__container {\\n\\t\\ttransition: none;\\n\\t}\\n\\n\\t.unified-search-modal-enter .unified-search-modal__container,\\n\\t.unified-search-modal-leave-to .unified-search-modal__container {\\n\\t\\ttransform: none;\\n\\t}\\n}\\n\\n.unified-search-modal {\\n\\t&__header {\\n\\t\\t// Add background to prevent leaking scrolled content (because of sticky position)\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t// Fix padding to have the input centered\\n\\t\\tpadding-inline: 12px;\\n\\t\\t// Some padding to make elements scrolled under sticky position look nicer\\n\\t\\tpadding-block: 12px;\\n\\t\\t// Make it sticky with the input margin for the label\\n\\t\\tposition: sticky;\\n\\t\\ttop: 6px;\\n\\t}\\n\\n\\t&__mobile-input {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tgap: 4px;\\n\\t\\tmargin-block-end: 8px;\\n\\n\\t\\t:deep(.input-field) {\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t}\\n\\t}\\n\\n\\t&__filters {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t\\tgap: 4px;\\n\\t\\tjustify-content: start;\\n\\t\\tpadding-top: 4px;\\n\\t}\\n\\n\\t&__search-external-resources {\\n\\t\\t:deep(span.checkbox-content) {\\n\\t\\t\\tpadding-top: 0;\\n\\t\\t\\tpadding-bottom: 0;\\n\\t\\t}\\n\\n\\t\\t:deep(.checkbox-content__icon) {\\n\\t\\t\\tmargin: auto !important;\\n\\t\\t}\\n\\n\\t\\t&--aligned {\\n\\t\\t\\tmargin-inline-start: auto;\\n\\t\\t}\\n\\t}\\n\\n\\t&__filters-applied {\\n\\t\\tpadding-top: 4px;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-wrap: wrap;\\n\\t}\\n\\n\\t&__no-content {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmargin-top: 0.5em;\\n\\t\\theight: 70%;\\n\\t}\\n\\n\\t&__results {\\n\\t\\t// Take the remaining panel height and scroll internally (container has a max-height)\\n\\t\\tflex: 1 1 auto;\\n\\t\\tmin-height: 0;\\n\\t\\toverflow: hidden auto;\\n\\t\\t// Adjust padding to match container but keep the scrollbar on the very end\\n\\t\\tpadding-inline: 12px;\\n\\t\\tpadding-block: 0 12px;\\n\\n\\t\\t.result {\\n\\t\\t\\t&-title {\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t\\tfont-size: 16px;\\n\\t\\t\\t\\tmargin-block: 8px 4px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-footer {\\n\\t\\t\\t\\tjustify-content: space-between;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--unfiltered {\\n\\t\\t\\t\\topacity: 0.7;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t}\\n\\n\\t&__unfiltered-header {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 2px;\\n\\t\\tmargin-block: 16px 8px;\\n\\t\\tpadding-block: 12px 0;\\n\\t\\tborder-top: 1px solid var(--color-border);\\n\\t}\\n\\n\\t&__unfiltered-label {\\n\\t\\tfont-weight: bold;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n}\\n\\n.filter-button__icon {\\n\\theight: 20px;\\n\\twidth: 20px;\\n\\tobject-fit: contain;\\n\\tfilter: var(--background-invert-if-bright);\\n\\tpadding: 11px; // align with text to fit at least 44px\\n}\\n\\n// Ensure modal is accessible on small devices\\n@media only screen and (max-height: 400px) {\\n\\t.unified-search-modal__results {\\n\\t\\toverflow: unset;\\n\\t}\\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-menu[data-v-786997b4]{position:relative;display:flex;align-items:center;justify-content:center}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/UnifiedSearch.vue\"],\"names\":[],\"mappings\":\"AAEA,sCAEC,iBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n// this is needed to allow us overriding component styles (focus-visible)\\n.unified-search-menu {\\n\\t// Positioning context so the results popover can anchor under the input\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\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 = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (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};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (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 = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6776;","__webpack_require__.b = (typeof document !== 'undefined' && 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\t6776: 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 = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\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((id) => (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 = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\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, [4208], () => (__webpack_require__(87925)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","vue_material_design_icons_Magnifyvue_type_script_lang_js","name","emits","props","title","type","String","fillColor","default","size","Number","Magnify","componentNormalizer","A","_vm","this","_c","_self","_b","staticClass","attrs","role","on","click","$event","$emit","$attrs","fill","width","height","viewBox","d","_v","_s","_e","UnifiedSearch_UnifiedSearchInputvue_type_script_setup_true_lang_ts","_defineComponent","__name","expanded","Boolean","query","setup","__props","emit","isSmallMobile","useIsSmallMobile","placeholderText","t","inputRef","ref","isFocused","isActive","computed","value","length","__sfc","onInput","event","target","clearQuery","focus","l10n_dist","NcButton","NcHeaderButton","NcHeaderButton_GtIbBhEd","N","IconClose","Close","IconMagnify","options","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","UnifiedSearchInputvue_type_style_index_0_id_4fc6c0ec_prod_lang_scss_scoped_true","locals","UnifiedSearchInput","_setup","_setupProxy","class","id","ariaLabel","scopedSlots","_u","key","fn","proxy","domProps","blur","input","variant","UnifiedSearch_UnifiedSearchLocalSearchBarvue_type_script_lang_ts_setup_true","open","_useCssVars","dfb017de","searchGlobalButtonCSSWidth","searchInput","watchEffect","isMobile","useIsMobile","searchGlobalButton","searchGlobalButtonWidth","useElementSize","clearAndCloseSearch","mdiClose","mdi","hyP","mdiCloudSearchOutline","ydM","Tl","NcIconSvgWrapper","NcInputField","UnifiedSearchLocalSearchBarvue_type_style_index_0_id_2b577e50_prod_scoped_true_lang_scss_options","UnifiedSearchLocalSearchBarvue_type_style_index_0_id_2b577e50_prod_scoped_true_lang_scss","UnifiedSearchLocalSearchBar","placeholder","path","vue_material_design_icons_CalendarRangeOutlinevue_type_script_lang_js","CalendarRangeOutline","vue_material_design_icons_Filtervue_type_script_lang_js","Filter","vue_material_design_icons_ListBoxvue_type_script_lang_js","ListBox","vue_material_design_icons_CalendarRangevue_type_script_lang_js","CalendarRange","UnifiedSearch_CustomDateRangeModalvue_type_script_lang_js","components","NcModal","CalendarRangeIcon","NcDateTimePicker","isOpen","required","data","dateFilter","startFrom","endAt","isModalOpen","get","set","methods","closeModal","applyCustomRange","CustomDateRangeModalvue_type_style_index_0_id_2907014b_prod_lang_scss_scoped_true_options","CustomDateRangeModalvue_type_style_index_0_id_2907014b_prod_lang_scss_scoped_true","CustomDateRangeModal","show","close","label","model","callback","$$v","$set","expression","vue_material_design_icons_AlertCircleOutlinevue_type_script_lang_js","AlertCircleOutline","UnifiedSearch_SearchableListvue_type_script_lang_js","IconAlertCircleOutline","NcAvatar","NcEmptyContent","NcPopover","NcTextField","labelText","searchList","Array","emptyContentText","opened","error","searchTerm","filteredList","filter","element","toLowerCase","some","prop","includes","clearSearch","itemSelected","searchTermChanged","term","SearchableListvue_type_style_index_0_id_37b50471_prod_lang_scss_scoped_true_options","SearchableListvue_type_style_index_0_id_37b50471_prod_lang_scss_scoped_true","SearchableList","shown","hide","_t","_l","displayName","alignment","wide","isUser","user","UnifiedSearch_SearchFilterChipvue_type_script_lang_js","CloseIcon","text","pretext","deleteChip","SearchFilterChipvue_type_style_index_0_id_60a863d2_prod_lang_scss_scoped_true_options","SearchFilterChipvue_type_style_index_0_id_60a863d2_prod_lang_scss_scoped_true","SearchFilterChip","UnifiedSearch_SearchResultvue_type_script_lang_js","NcListItem","thumbnailUrl","subline","resourceUrl","icon","rounded","focused","thumbnailHasError","watch","isValidIconOrPreviewUrl","url","test","startsWith","thumbnailErrorHandler","SearchResultvue_type_style_index_0_id_ca416b22_prod_lang_scss_scoped_true_options","SearchResultvue_type_style_index_0_id_ca416b22_prod_lang_scss_scoped_true","SearchResult","bold","href","style","backgroundImage","src","logger","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","unifiedSearchLogger","detectUser","async","getProviders","axios","generateOcsUrl","params","from","window","location","pathname","replace","search","ocs","isArray","getContacts","contacts","post","generateUrl","authenticatedUser","fullName","emailAddresses","unshift","useSearchStore","defineStore","state","externalFilters","actions","registerExternalFilter","appId","searchFrom","push","isPluginFilter","UnifiedSearch_UnifiedSearchModalvue_type_script_lang_ts","defineComponent","IconArrowRight","ArrowRight","IconAccountGroup","AccountGroupOutline","IconCalendarRange","IconDotsHorizontal","DotsHorizontal","IconFilter","IconListBox","FilterChip","NcActions","NcActionButton","NcCheckboxRadioSwitch","localSearch","currentLocation","useBrowserLocation","searchStore","providers","providerActionMenuIsOpen","dateActionMenuIsOpen","providerResultLimit","personFilter","filteredProviders","searching","searchQuery","lastSearchQuery","placessearchTerm","dateTimeFilter","filters","results","showDateRangeModal","initialized","searchExternalResources","minSearchLength","loadState","focusTrap","isEmptySearch","hasNoResults","isSearchQueryTooShort","showEmptyContentInfo","emptyContentMessage","n","userContacts","debouncedFind","debounce","find","debouncedFilterContacts","filterContacts","hasExternalResources","provider","isExternalProvider","hasContentFilters","isOverlayOpen","filteredResults","isInFolderAtRoot","result","extraParams","supportsActiveFilters","filteredResultUrls","urls","Set","forEach","entry","add","unfilteredResults","map","has","document","addEventListener","onEscapeKey","$nextTick","activateFocusTrap","Promise","all","then","groupProvidersByApp","mapContacts","debug","catch","removeEventListener","deactivateFocusTrap","immediate","handler","mounted","subscribe","handlePluginFilter","onUpdateOpen","onMobileSearchInput","preventDefault","panel","$refs","menu","$el","closest","inputContainer","querySelector","containers","markRaw","createFocusTrap","initialFocus","escapeDeactivates","allowOutsideClick","activate","deactivate","syncFocusTrapToOverlays","overlayOpen","pause","unpause","searchLocally","providersToSearchOverride","newResults","cursor","extraQueries","contentFilterTypes","f","every","providerIsCompatibleWithFilters","baseProvider","p","since","until","person","limit","shouldSkipSearch","wasManuallySelected","filteredProvider","request","cancelToken","CancelToken","source","token","cancel","unifiedSearch","response","entries","updateResults","updatedResults","newResult","existingResultIndex","findIndex","splice","sortedResults","slice","sort","a","b","aProvider","bProvider","order","contact","isNoUser","subname","applyPersonFilter","existingPersonFilter","loadMoreResultsForProvider","addProviderFilter","providerFilter","isProviderFilterApplied","existingFilterIndex","existing","syncProviderFilters","removeFilter","i","firstArray","secondArray","synchronizedArray","item","index","itemId","secondItem","updateDateFilter","currFilterIndex","applyQuickDateRange","range","today","Date","startDate","endDate","getFullYear","getMonth","getDate","setCustomDateRange","toLocaleDateString","getCanonicalLocale","addFilterEvent","filterUpdateText","compatibleProviderIndex","filterParams","groupedByProviderApp","flattenedArray","Object","values","group","filterIds","filterId","undefined","enableAllProviders","_","disabled","UnifiedSearchModalvue_type_style_index_0_id_1f99d7d9_prod_lang_scss_scoped_true_options","UnifiedSearchModalvue_type_style_index_0_id_1f99d7d9_prod_lang_scss_scoped_true","UnifiedSearchModal","appear","modelValue","showTrailingButton","trailingButtonLabel","alt","closeAfterClick","searchTermChange","delete","disableMenu","hideUserStatus","hideFavorite","providerResult","inAppSearch","views_UnifiedSearchvue_type_script_lang_ts","queryText","showUnifiedSearch","showLocalSearch","debouncedQueryUpdate","emitUpdatedQuery","supportsLocalSearch","appHandlesSearchShortcut","OCP","Accessibility","disableKeyboardShortcuts","onKeyDown","beforeUnmount","ctrlKey","toggleUnifiedSearch","openModal","UnifiedSearchvue_type_style_index_0_id_786997b4_prod_lang_scss_scoped_true_options","UnifiedSearchvue_type_style_index_0_id_786997b4_prod_lang_scss_scoped_true","UnifiedSearch","globalSearch","__webpack_nonce__","getCSPNonce","Vue","mixin","OCA","registerFilterAction","use","PiniaVuePlugin","pinia","createPinia","el","unified_search_pinia","render","h","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","module","version","sources","names","mappings","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","keys","r","getter","__esModule","definition","o","defineProperty","enumerable","e","resolve","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","baseURI","self","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","globalThis","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file