From a6392e8c787b1c5c3ebeb26128064af831bdc5bd Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Tue, 8 Sep 2026 19:28:06 +0200 Subject: [PATCH 1/2] fix(files): bring back ownership transfer of all files This was a feature available to allow transfering all files in one go. It was dropped by acciendent in Nextcloud 34. Bringing back the feature as well as adding e2e tests (regression tests) for the overall ownership transfer. AI assisted for the tests part: Assisted-by: ClaudeCode:claude-opus-5 Signed-off-by: Ferdinand Thiessen --- .../components/TransferOwnershipDialogue.vue | 2 +- .../e2e/files/transfer-ownership.spec.ts | 136 +++++++++++++++++ .../fixtures/transfer-ownership-page.ts | 86 +++++++++++ .../BackgroundFilePickerDialogPage.ts | 32 +--- .../support/sections/FilePickerDialogPage.ts | 74 ++++++++++ .../support/sections/TransferOwnershipPage.ts | 138 ++++++++++++++++++ .../support/utils/transferOwnership.ts | 128 ++++++++++++++++ 7 files changed, 567 insertions(+), 29 deletions(-) create mode 100644 tests/playwright/e2e/files/transfer-ownership.spec.ts create mode 100644 tests/playwright/support/fixtures/transfer-ownership-page.ts create mode 100644 tests/playwright/support/sections/FilePickerDialogPage.ts create mode 100644 tests/playwright/support/sections/TransferOwnershipPage.ts create mode 100644 tests/playwright/support/utils/transferOwnership.ts diff --git a/apps/files/src/components/TransferOwnershipDialogue.vue b/apps/files/src/components/TransferOwnershipDialogue.vue index c8aa55224db9f..0bda9e68d631e 100644 --- a/apps/files/src/components/TransferOwnershipDialogue.vue +++ b/apps/files/src/components/TransferOwnershipDialogue.vue @@ -31,7 +31,7 @@ const picker = getFilePickerBuilder(t('files', 'Choose a file or folder to trans .allowDirectories() .setMultiSelect(false) .setButtonFactory(([node]) => { - const canPick = !!node?.path && node.path !== '/' && node.owner === getCurrentUser()!.uid + const canPick = !!node?.path && node.owner === getCurrentUser()!.uid return [{ label: canPick ? t('files', 'Transfer "{path}"', { path: node.displayname }) diff --git a/tests/playwright/e2e/files/transfer-ownership.spec.ts b/tests/playwright/e2e/files/transfer-ownership.spec.ts new file mode 100644 index 0000000000000..fed78012840b7 --- /dev/null +++ b/tests/playwright/e2e/files/transfer-ownership.spec.ts @@ -0,0 +1,136 @@ +/* + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import type { User } from '@nextcloud/e2e-test-server' +import type { FilesListPage } from '../../support/sections/FilesListPage.ts' + +import { expect, test } from '../../support/fixtures/transfer-ownership-page.ts' +import { getFileContent, mkdir, rm, uploadContent } from '../../support/utils/dav.ts' +import { getToast } from '../../support/utils/toast.ts' +import { completeOwnershipTransfer, transferFolderPattern } from '../../support/utils/transferOwnership.ts' + +/** + * Assert that the only entry in the current list is the folder a transfer from + * `source` created, and return its name — it carries the time of the transfer. + * + * @param filesList - The files list of the new owner, showing their root + * @param source - The user the files were transferred from + */ +async function expectSingleTransferFolder(filesList: FilesListPage, source: User): Promise { + await expect.poll(() => filesList.getRowNames()) + .toEqual([expect.stringMatching(transferFolderPattern(source))]) + + const [name] = await filesList.getRowNames() + return name +} + +test.describe('Files: Transfer ownership', () => { + // Accepting the transfer and running its background job shell out to occ, + // which takes considerably longer than the browser interaction itself + test.slow() + + test.beforeEach(async ({ page, user, recipient, recipientPage }) => { + // Both accounts start with a welcome.txt — remove it so the transferred + // files are the only content of either account + await rm(page.request, user, '/welcome.txt') + await rm(recipientPage.request, recipient, '/welcome.txt') + }) + + test('transfers a single file', async ({ page, user, filesListPage, recipient, recipientFilesList, recipientPage, recipientRequest, transferOwnershipPage }) => { + await uploadContent(page.request, user, 'transferred content', 'text/plain', '/document.txt') + await uploadContent(page.request, user, 'kept content', 'text/plain', '/other.txt') + + await transferOwnershipPage.open() + await expect(transferOwnershipPage.getSubmitButton()).toBeDisabled() + await expect(transferOwnershipPage.getMissingNodeHint()).toHaveCount(1) + await expect(transferOwnershipPage.getMissingOwnerHint()).toHaveCount(1) + + await transferOwnershipPage.selectFile('document.txt') + await expect(transferOwnershipPage.getMissingNodeHint()).toHaveCount(0) + + await transferOwnershipPage.selectNewOwner(recipient) + await expect(transferOwnershipPage.getMissingOwnerHint()).toHaveCount(0) + + await expect(transferOwnershipPage.getSubmitButton()) + .toHaveAccessibleName(`Transfer document.txt to ${recipient.userId}`) + await transferOwnershipPage.submit() + + await expect(getToast(page, 'Ownership transfer request sent')).toBeVisible() + // The form is reset, ready for the next transfer + await expect(transferOwnershipPage.getSubmitButton()).toBeDisabled() + await expect(transferOwnershipPage.getMissingNodeHint()).toHaveCount(1) + await expect(transferOwnershipPage.getMissingOwnerHint()).toHaveCount(1) + + await completeOwnershipTransfer(recipientRequest, user, recipient) + + // The previous owner keeps everything but the transferred file + await filesListPage.open() + await expect(filesListPage.getRowForFile('other.txt')).toBeVisible() + await expect(filesListPage.getRowForFile('document.txt')).toHaveCount(0) + + // The new owner received it, with its content, in the transfer folder + await recipientFilesList.open() + const transferFolder = await expectSingleTransferFolder(recipientFilesList, user) + await recipientFilesList.navigateToFolder(transferFolder) + await expect(recipientFilesList.getRowForFile('document.txt')).toBeVisible() + expect(await getFileContent(recipientPage.request, recipient, `${transferFolder}/document.txt`)) + .toBe('transferred content') + }) + + test('transfers a folder with all of its content', async ({ page, user, filesListPage, recipient, recipientFilesList, recipientRequest, transferOwnershipPage }) => { + await mkdir(page.request, user, '/project') + await uploadContent(page.request, user, 'readme', 'text/plain', '/project/readme.md') + await mkdir(page.request, user, '/project/notes') + await uploadContent(page.request, user, 'todo', 'text/plain', '/project/notes/todo.md') + + await transferOwnershipPage.open() + await transferOwnershipPage.selectFolder('project') + await transferOwnershipPage.selectNewOwner(recipient) + await transferOwnershipPage.submit() + await expect(getToast(page, 'Ownership transfer request sent')).toBeVisible() + + await completeOwnershipTransfer(recipientRequest, user, recipient) + + // The folder is gone for the previous owner + await filesListPage.open() + await expect(filesListPage.getRows()).toHaveCount(0) + + // The new owner received the folder with its whole tree + await recipientFilesList.open() + const transferFolder = await expectSingleTransferFolder(recipientFilesList, user) + await recipientFilesList.navigateToFolder(`${transferFolder}/project`) + await expect(recipientFilesList.getRowForFile('readme.md')).toBeVisible() + + await recipientFilesList.navigateToFolder('notes') + await expect(recipientFilesList.getRowForFile('todo.md')).toBeVisible() + }) + + test('transfers all files at once', async ({ page, user, filesListPage, recipient, recipientFilesList, recipientRequest, transferOwnershipPage }) => { + await uploadContent(page.request, user, 'text', 'text/plain', '/document.txt') + await mkdir(page.request, user, '/pictures') + await uploadContent(page.request, user, 'image', 'image/png', '/pictures/image.png') + + await transferOwnershipPage.open() + await transferOwnershipPage.selectAllFiles(user) + await transferOwnershipPage.selectNewOwner(recipient) + await transferOwnershipPage.submit() + await expect(getToast(page, 'Ownership transfer request sent')).toBeVisible() + + await completeOwnershipTransfer(recipientRequest, user, recipient) + + // The previous owner is left with an empty account + await filesListPage.open() + await expect(filesListPage.getRows()).toHaveCount(0) + + // Everything they owned is now in the new owners transfer folder + await recipientFilesList.open() + const transferFolder = await expectSingleTransferFolder(recipientFilesList, user) + await recipientFilesList.navigateToFolder(transferFolder) + await expect(recipientFilesList.getRowForFile('document.txt')).toBeVisible() + + await recipientFilesList.navigateToFolder('pictures') + await expect(recipientFilesList.getRowForFile('image.png')).toBeVisible() + }) +}) diff --git a/tests/playwright/support/fixtures/transfer-ownership-page.ts b/tests/playwright/support/fixtures/transfer-ownership-page.ts new file mode 100644 index 0000000000000..6db18102daf0d --- /dev/null +++ b/tests/playwright/support/fixtures/transfer-ownership-page.ts @@ -0,0 +1,86 @@ +/* + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import type { User } from '@nextcloud/e2e-test-server' +import type { APIRequestContext, Page } from '@playwright/test' + +import { runOcc } from '@nextcloud/e2e-test-server/docker' +import { createRandomUser, login } from '@nextcloud/e2e-test-server/playwright' +import { FilesListPage } from '../sections/FilesListPage.ts' +import { TransferOwnershipPage } from '../sections/TransferOwnershipPage.ts' +import { test as filesTest } from './files-page.ts' + +type TransferOwnershipFixtures = { + /** A second account, receiving the ownership of the files of `user`. */ + recipient: User + /** + * A request context authenticated as `recipient` via basic auth, with no + * browser session cookies — cookies would otherwise win over basic auth and + * the request would run as the user logged into `page` instead. + */ + recipientRequest: APIRequestContext + /** A second browser session, logged in as `recipient`. */ + recipientPage: Page + /** The files list as seen by `recipient`. */ + recipientFilesList: FilesListPage + /** The ownership transfer form in the personal settings of `user`. */ + transferOwnershipPage: TransferOwnershipPage +} + +/** + * Files fixtures for the ownership transfer: the browser is logged in as `user`, + * who owns the files and requests the transfer, and `recipient` is the account + * receiving them. + */ +export const test = filesTest.extend({ + recipient: async ({}, use) => { + let recipient: User + try { + recipient = await createRandomUser() + } catch { + // Retry once on transient failure, as the `user` fixture does + await new Promise((resolve) => setTimeout(resolve, 800)) + recipient = await createRandomUser() + } + await use(recipient) + await runOcc(['user:delete', recipient.userId], { failOnError: false }) + }, + + recipientRequest: async ({ playwright, recipient, baseURL }, use) => { + const context = await playwright.request.newContext({ + baseURL, + // send: 'always' — the OCS API doesn't issue a Basic auth challenge, so + // credentials must be sent preemptively (DAV would challenge, OCS won't) + httpCredentials: { username: recipient.userId, password: recipient.password, send: 'always' }, + }) + await use(context) + await context.dispose() + }, + + recipientPage: async ({ browser, recipient }, use) => { + const context = await browser.newContext() + const recipientPage = await context.newPage() + try { + await login(recipientPage.request, recipient) + } catch (error) { + // Same transient failure the session of `user` is retried for + console.info('Failed to authenticate as recipient, retrying', error) + await new Promise((resolve) => setTimeout(resolve, 800)) + await login(recipientPage.request, recipient) + } + await use(recipientPage) + await context.close() + }, + + recipientFilesList: async ({ recipientPage }, use) => { + await use(new FilesListPage(recipientPage)) + }, + + transferOwnershipPage: async ({ page }, use) => { + await use(new TransferOwnershipPage(page)) + }, +}) + +export { expect } from '../matchers.ts' diff --git a/tests/playwright/support/sections/BackgroundFilePickerDialogPage.ts b/tests/playwright/support/sections/BackgroundFilePickerDialogPage.ts index bbeec863414ef..ca494ef06669c 100644 --- a/tests/playwright/support/sections/BackgroundFilePickerDialogPage.ts +++ b/tests/playwright/support/sections/BackgroundFilePickerDialogPage.ts @@ -3,39 +3,15 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ -import type { Locator, Page } from '@playwright/test' +import { FilePickerDialogPage } from './FilePickerDialogPage.ts' /** * The file-picker dialog opened by the "Custom background" card/button on * Personal settings > Appearance and accessibility > Background and color */ -export class BackgroundFilePickerDialogPage { - constructor(private readonly page: Page) {} - - /** The open file-picker dialog. */ - dialog(): Locator { - return this.page.getByRole('dialog') - } - - /** - * Returns a row (file or folder) from inside the picker. - */ - getRow(name: string): Locator { - return this.dialog().getByTestId('row-name').filter({ hasText: name }) - } - - /** Navigate into a folder. */ - async openFolder(name: string): Promise { - await this.getRow(name).click() - } - - /** Select a file row. */ - async selectFile(name: string): Promise { - await this.getRow(name).click() - } - +export class BackgroundFilePickerDialogPage extends FilePickerDialogPage { /** Confirm the current selection as the new background. */ - async confirm(): Promise { - await this.dialog().getByRole('button', { name: 'Select background', exact: true }).click() + override async confirm(): Promise { + await super.confirm('Select background') } } diff --git a/tests/playwright/support/sections/FilePickerDialogPage.ts b/tests/playwright/support/sections/FilePickerDialogPage.ts new file mode 100644 index 0000000000000..67d3b400765d9 --- /dev/null +++ b/tests/playwright/support/sections/FilePickerDialogPage.ts @@ -0,0 +1,74 @@ +/* + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import type { Locator, Page } from '@playwright/test' + +import { expect } from '@playwright/test' +import { DAV_FILES_ENDPOINT } from '../utils/dav.ts' + +/** + * The file picker dialog of `@nextcloud/dialogs`, used by every feature that + * lets the user choose a file or folder (custom background, ownership + * transfer, …). + * + * The confirm button is provided by the feature opening the picker, so its + * label is passed to {@link confirm} instead of being hardcoded here. + */ +export class FilePickerDialogPage { + constructor(protected readonly page: Page) {} + + /** The open file picker dialog. */ + dialog(): Locator { + return this.page.getByRole('dialog') + } + + /** + * A file or folder entry of the directory currently listed. + * + * Rows are matched by their text rather than by accessible name: the picker + * renders the base name and the extension of a file as two elements, which + * the accessible name computation joins with a space ("file .txt"). + * + * @param name - The name of the file or folder + */ + getRow(name: string): Locator { + return this.dialog().getByRole('row').filter({ hasText: name }) + } + + /** + * Navigate into a folder and wait for its content to be listed. + * + * Clicking a folder always navigates into it — a folder cannot be selected, + * it is picked by navigating into it and confirming with no selection. + * + * @param name - The name of the folder to enter + */ + async openFolder(name: string): Promise { + const listed = this.page.waitForResponse((r) => r.request().method() === 'PROPFIND' && DAV_FILES_ENDPOINT.test(r.url())) + await this.getRow(name).click() + await listed + } + + /** + * Select a file row (only files can be selected, see {@link openFolder}). + * + * @param name - The name of the file to select + */ + async selectFile(name: string): Promise { + const row = this.getRow(name) + await row.click() + await expect(row).toHaveAttribute('aria-selected', 'true') + } + + /** + * Confirm the picker with the button carrying the given label. + * + * @param label - The label of the confirmation button + */ + async confirm(label: string | RegExp): Promise { + await this.dialog().getByRole('button', { name: label }).click() + await expect(this.dialog()).toBeHidden() + } +} diff --git a/tests/playwright/support/sections/TransferOwnershipPage.ts b/tests/playwright/support/sections/TransferOwnershipPage.ts new file mode 100644 index 0000000000000..7f7cf2ce85c19 --- /dev/null +++ b/tests/playwright/support/sections/TransferOwnershipPage.ts @@ -0,0 +1,138 @@ +/* + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import type { User } from '@nextcloud/e2e-test-server' +import type { Locator, Page } from '@playwright/test' + +import { expect } from '@playwright/test' +import { FilePickerDialogPage } from './FilePickerDialogPage.ts' + +/** + * The "Transfer ownership of a file or folder" form of the files app, rendered + * in the personal sharing settings. + */ +export class TransferOwnershipPage { + private readonly filePicker: FilePickerDialogPage + + constructor(private readonly page: Page) { + this.filePicker = new FilePickerDialogPage(page) + } + + /** Open the personal settings section hosting the transfer form. */ + async open(): Promise { + await this.page.goto('settings/user/sharing') + await expect(this.getSection()).toBeVisible() + } + + /** The form, rendered as a labelled fieldset. */ + getSection(): Locator { + return this.page.getByRole('group', { name: 'Transfer ownership of a file or folder' }) + } + + /** The button opening the file picker. */ + getNodeButton(): Locator { + return this.getSection().getByRole('button', { name: 'File or folder to transfer' }) + } + + /** The user search picking the account to transfer the ownership to. */ + getNewOwnerCombobox(): Locator { + return this.getSection().getByRole('combobox', { name: 'New owner' }) + } + + /** + * The submit button. Its label names both the file and the new owner as soon + * as the form is complete, which is the only accessible confirmation of what + * is about to be transferred — the description of {@link getNodeButton} is + * not part of the button. + */ + getSubmitButton(): Locator { + return this.getSection().getByRole('button', { name: /^Transfer\b/ }) + } + + /** + * The hints of the live region naming what is still missing to submit. They + * are rendered only while the respective input is empty, so assert on their + * count: being visually hidden they always count as visible. + */ + getMissingNodeHint(): Locator { + return this.getSection().getByText('You need to select a file or folder to transfer ownership.') + } + + /** See {@link getMissingNodeHint}. */ + getMissingOwnerHint(): Locator { + return this.getSection().getByText('You need to select a new owner for the file or folder.') + } + + /** + * Pick a file of the users root folder for transfer. + * + * @param name - The name of the file to transfer + */ + async selectFile(name: string): Promise { + await this.openFilePicker() + await this.filePicker.selectFile(name) + await this.filePicker.confirm(`Transfer "${name}"`) + } + + /** + * Pick a folder for transfer. + * + * The picker has no way to select a folder, so the folder is navigated into + * and then confirmed as the current directory. + * + * @param path - The path of the folder, relative to the users root folder + */ + async selectFolder(path: string): Promise { + const segments = path.split('/').filter(Boolean) + await this.openFilePicker() + for (const segment of segments) { + await this.filePicker.openFolder(segment) + } + await this.filePicker.confirm(`Transfer "${segments.at(-1)}"`) + } + + /** + * Pick the users root folder — transferring all of their files at once. + * It is confirmed as the picker's initial directory, without a selection. + * + * @param user - The owner of the files, whose id names their root folder + */ + async selectAllFiles(user: User): Promise { + await this.openFilePicker() + await this.filePicker.confirm(`Transfer "${user.userId}"`) + } + + /** + * Search for a user and pick them as the new owner. The suggestions are + * fetched from the sharees API, debounced, so the request is awaited before + * the matching option is picked. + * + * @param user - The user to receive the ownership + */ + async selectNewOwner(user: User): Promise { + const suggestions = this.page.waitForResponse((r) => r.url().includes('/apps/files_sharing/api/v1/sharees') + && new URL(r.url()).searchParams.get('search') === user.userId) + + await this.getNewOwnerCombobox().fill(user.userId) + await suggestions + + await this.page.getByRole('option', { name: user.userId }).click() + } + + /** Submit the form and wait for the transfer request to be created. */ + async submit(): Promise { + const requested = this.page.waitForResponse((r) => r.request().method() === 'POST' + && r.url().includes('/apps/files/api/v1/transferownership')) + + await this.getSubmitButton().click() + + expect((await requested).status()).toBe(200) + } + + private async openFilePicker(): Promise { + await this.getNodeButton().click() + await expect(this.filePicker.dialog()).toBeVisible() + } +} diff --git a/tests/playwright/support/utils/transferOwnership.ts b/tests/playwright/support/utils/transferOwnership.ts new file mode 100644 index 0000000000000..6f114f48ec80d --- /dev/null +++ b/tests/playwright/support/utils/transferOwnership.ts @@ -0,0 +1,128 @@ +/* + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import type { User } from '@nextcloud/e2e-test-server' +import type { APIRequestContext } from '@playwright/test' + +import { runExec } from '@nextcloud/e2e-test-server/docker' + +const TRANSFER_JOB_CLASS = 'OCA\\Files\\BackgroundJob\\TransferOwnership' + +/** + * Carry out the ownership transfer a user requested: accept it as the new owner + * and run the background job that moves the files. + * + * Returns once the files have been moved, so callers can assert on the result + * without polling. + * + * @param request - A request context authenticated as `target` + * @param source - The user who requested the transfer + * @param target - The user receiving the ownership + */ +export async function completeOwnershipTransfer( + request: APIRequestContext, + source: User, + target: User, +): Promise { + const transferId = await getPendingTransferId(source, target) + await acceptOwnershipTransfer(request, transferId) + await runTransferJob(transferId) +} + +/** + * The name of the folder an ownership transfer creates in the new owners root, + * as a pattern — the folder is suffixed with the time of the transfer. + * + * @param source - The user who transferred the files + */ +export function transferFolderPattern(source: User): RegExp { + return new RegExp(`^Transferred from ${source.userId} on `) +} + +/** + * Read the id of the ownership transfer pending between two users. + * + * A transfer is normally accepted from the notification it creates, but the + * notifications app is not installed on the test instance, so there is no API + * to look the id up with and it is read from the database instead. + * + * @param source - The user who requested the transfer + * @param target - The user receiving the ownership + */ +async function getPendingTransferId(source: User, target: User): Promise { + const script = ` + require_once "/var/www/html/lib/base.php"; + $query = \\OCP\\Server::get(\\OCP\\IDBConnection::class)->getQueryBuilder(); + $query->select("id") + ->from("user_transfer_owner") + ->where($query->expr()->eq("source_user", $query->createNamedParameter($argv[1]))) + ->andWhere($query->expr()->eq("target_user", $query->createNamedParameter($argv[2]))); + echo json_encode(array_column($query->executeQuery()->fetchAll(), "id")); + ` + const stdout = await run(['php', '-r', script, '--', source.userId, target.userId], { retry: true }) + + const ids = JSON.parse(stdout.trim()) as number[] + if (ids.length !== 1) { + throw new Error(`Expected one pending transfer from ${source.userId} to ${target.userId}, found ${ids.length}`) + } + return Number(ids[0]) +} + +/** + * Accept an ownership transfer, which queues the job doing the actual transfer. + * + * @param request - A request context authenticated as the receiving user + * @param transferId - The id of the transfer to accept + */ +async function acceptOwnershipTransfer(request: APIRequestContext, transferId: number): Promise { + const response = await request.post(`/ocs/v2.php/apps/files/api/v1/transferownership/${transferId}`, { + headers: { + Accept: 'application/json', + 'OCS-APIRequest': 'true', + }, + }) + const meta = (await response.json()).ocs?.meta + if (meta?.statuscode !== 200) { + throw new Error(`Accepting transfer ${transferId} failed: ${meta?.statuscode} ${meta?.message}`) + } +} + +/** + * Run the queued background job of a transfer. + * + * The job is addressed by its id instead of running a worker for the job class, + * so that parallel tests never execute each others transfers. + * + * @param transferId - The id of the accepted transfer + */ +async function runTransferJob(transferId: number): Promise { + const stdout = await run(['php', 'occ', 'background-job:list', '--class', TRANSFER_JOB_CLASS, '--output', 'json'], { retry: true }) + const jobs = JSON.parse(stdout) as { id: number, argument: string }[] + const job = jobs.find(({ argument }) => JSON.parse(argument).id === transferId) + if (!job) { + throw new Error(`No background job queued for transfer ${transferId}`) + } + + await run(['php', 'occ', 'background-job:execute', String(job.id), '--force-execute']) +} + +/** + * Run a command in the Nextcloud container, reporting its output on failure. + * + * @param command - The command to run + * @param options - Whether to run the command a second time if it failed. Only + * for commands that read, they can fail spuriously when the SQLite database + * of the test instance is busy with the transfers of parallel tests. + */ +async function run(command: string[], { retry = false } = {}): Promise { + const { stdout, stderr, exitCode } = await runExec(command, { failOnError: false }) + if (exitCode === 0) { + return stdout + } + if (retry) { + return await run(command) + } + throw new Error(`"${command.join(' ')}" exited with ${exitCode}: ${stderr || stdout}`) +} From f434976debe2e0be09e748910515971fa46b12de Mon Sep 17 00:00:00 2001 From: nextcloud-command Date: Wed, 16 Sep 2026 12:53:30 +0000 Subject: [PATCH 2/2] chore(assets): Recompile assets Signed-off-by: nextcloud-command --- dist/files-settings-personal.js | 4 ++-- dist/files-settings-personal.js.map | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/files-settings-personal.js b/dist/files-settings-personal.js index 648012d9c7fe4..6eb032e0f5cbb 100644 --- a/dist/files-settings-personal.js +++ b/dist/files-settings-personal.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e={77396(e,t,r){var n=r(21777),s=r(53334),o=r(85471),a=r(4164),i=r(32806),l=r(61744),c=r(59837),u=r(41937),d=r(13741),f=r(80997),p=r(66102),h=r(42135),m=r(15502),g=r(58582),v=r(32702),w=r(62251),N=r(47611),b=r(10363),y=r(3440),A=r(92752),_=r(54048),x=r(39892),S=r(27345),O=r(13238),T=r(48090),F=r(79250),C=r(57454),U=r(542),B=r(58397),k=r(78359),P=r(51464),D=r(60930),E=r(50017),q=r(60258),L=r(64344),M=r(36295),I=r(3172),j=r(25473),W=r(57229),G=r(20252),X=r(47853),$=r(40032),R=r(58611),K=r(6382),Y=r(81283),Q=r(32415),z=r(90429),H=r(3491),V=r(73196),J=r(44025),Z=r(51252),ee=r(48198),te=r(27506),re=r(54092),ne=r(83194),se=r(40133),oe=r(48943),ae=r(83138),ie=r(14304),le=r(77003),ce=r(86882),ue=r(42097),de=r(44117),fe=r(18724),pe=r(39689),he=r(26145),me=r(51550),ge=r(10632),ve=r(86637),we=r(48191),Ne=r(52151),be=r(56582),ye=r(49570),Ae=r(88289),_e=r(83947),xe=r(48240),Se=r(13971),Oe=r(6026),Te=r(35290),Fe=r(61456),Ce=r(24301),Ue=r(63315),Be=r(26797),ke=r(62330),Pe=r(44368),De=(r(25778),r(34163),r(27994),r(3168),r(47691)),Ee=r(3140),qe=r(28955),Le=(r(71323),r(71639)),Me=r(95967),Ie=r(30859),je=r(27971),We=r(817),Ge=r(72583),Xe=r(25479),$e=r(8256),Re=r(84202),Ke=r(47679),Ye=r(99835),Qe=r(23610),ze=(r(55581),r(94205),r(95462),r(23020),r(53429),r(23739),r(71409),r(29928),r(24706),r(18547),r(42892)),He=r(69885),Ve=(r(59656),r(92471),r(16406),r(34558));a.N,i.N,l.A,c.N,u.N,d.A,f.N,p.A,m.A,g.A,v.N,h.N,w.N,N.A,b.A,y.N,A.N,_.A,x.N,S.A,O.N,T.N,F.N,C.N,U.A,B.N,k.N,P.N,P.N,D.N,E.N,q.A,L.N,M.A,I.N,ke.N,j.N,W.N,G.N,X.N,$.N,R.N,K.N,Y.N,Q.N,z.N,H.N,V.N,J.N,Z.default,ee.A,te.N,re.N,ne.A,se.N,oe.A,ae.N,ie.N,le.N,ce.N,ue.N,de.N,fe.A,pe.N,he.N,me.N,ge.N,ve.N,we.N,Ne.N,be.N,ye.N,Ae.A,Be.N,_e.A,xe.A,Se.N,Oe.N,Te.N,Fe.N,Ce.N,Ue.N,ke.a,De.N,Le.N,Ee.N,Me.N,Ie.N,je.N,We.N,Ge.N,Xe.N,qe.N,$e.N,Re.N,Ke.N,Ye.N,Qe.A,Symbol.toStringTag,ze.A,He.A,Ve.yw,Symbol.toStringTag;var Je=r(9165),Ze=r(87485),et=r(85168),tt=r(63814),rt=r(22720),nt=r(74095),st=r(57268),ot=r(6695);const at=(0,r(35947).YK)().setApp("files").detectUser().build(),it=(0,o.pM)({__name:"TransferOwnershipDialogue",setup(e){const t=(0,Ze.F)().files_sharing.sharee.minSearchStringLength,r=(0,et.a1)((0,s.t)("files","Choose a file or folder to transfer")).allowDirectories().setMultiSelect(!1).setButtonFactory(([e])=>{const t=!!e?.path&&"/"!==e.path&&e.owner===(0,n.HW)().uid;return[{label:t?(0,s.t)("files",'Transfer "{path}"',{path:e.displayname}):(0,s.t)("files","Select file or folder"),callback:()=>{},disabled:!t,variant:"primary"}]}).build(),a=(0,o.KR)(),i=(0,o.KR)(!1),l=(0,o.KR)(),c=(0,o.KR)([]),u=(0,o.EW)(()=>!!a.value&&!!l.value),d=(0,o.EW)(()=>a.value&&l.value?(0,s.t)("files","Transfer {path} to {userid}",{path:a.value.displayname,userid:l.value.displayName}):(0,s.t)("files","Transfer"));(0,o.KC)(()=>p(""));const f=(0,rt.Q0)(p,500);async function p(e){if(!((e=e.trim()).length({displayName:e.label,id:e.value.shareWith,user:e.value.shareWith,subname:e.shareWithDisplayNameUnique}))}catch(e){at.error("could not fetch users",{error:e}),(0,et.Qg)((0,s.t)("files","Error while searching for users"))}finally{i.value=!1}}}return{__sfc:!0,minSearchStringLength:t,picker:r,nodeForTransfer:a,loadingUsers:i,selectedUser:l,userSuggestions:c,canSubmit:u,submitButtonText:d,chooseNodeForTransfer:async function(){try{const[e]=await r.pickNodes();a.value=e}catch(e){return e instanceof et.vT?void at.debug("Selecting object for transfer aborted",{error:e}):(a.value=void 0,at.error("Error while opening file picker for transfer ownership",{error:e}),void(0,et.Qg)((0,s.t)("files","Error while opening file picker for transfer ownership")))}},searchUsersDebounced:f,searchUsers:p,submit:async function(){u.value||at.warn("ignoring form submit");const e={path:a.value?.path,recipient:l.value?.user};at.debug("submit transfer ownership form",{requestParameters:e});try{const t=(0,tt.KT)("apps/files/api/v1/transferownership"),{data:r}=await Pe.Ay.post(t,e);at.info("Transfer ownership request sent",{data:r}),a.value=void 0,l.value=void 0,(0,et.Te)((0,s.t)("files","Ownership transfer request sent"))}catch(e){at.error("Could not send ownership transfer request",{error:e}),(0,Pe.F0)(e)&&403===e.response?.status?(0,et.Qg)((0,s.t)("files","Cannot transfer ownership of a file or folder you do not own")):(0,et.Qg)((0,s.t)("files","Error while sending ownership transfer request"))}},mdiFolderOutline:Je.B32,t:s.t,NcButton:nt.A,NcFormBox:st.A,NcFormBoxButton:le.N,NcFormGroup:de.N,NcIconSvgWrapper:ot.A,NcSelectUsers:Ie.N}}});var lt=r(85072),ct=r.n(lt),ut=r(97825),dt=r.n(ut),ft=r(77659),pt=r.n(ft),ht=r(55056),mt=r.n(ht),gt=r(10540),vt=r.n(gt),wt=r(41113),Nt=r.n(wt),bt=r(6141),yt={};yt.styleTagTransform=Nt(),yt.setAttributes=mt(),yt.insert=pt().bind(null,"head"),yt.domAPI=dt(),yt.insertStyleElement=vt(),ct()(bt.A,yt);const At=bt.A&&bt.A.locals?bt.A.locals:void 0;var _t=r(14486),xt=(0,_t.A)(it,function(){var e=this,t=e._self._c,r=e._self._setupProxy;return t("form",{on:{submit:function(e){return e.preventDefault(),r.submit.apply(null,arguments)}}},[t(r.NcFormGroup,{class:e.$style.transferOwnership__group,attrs:{label:r.t("files","Transfer ownership of a file or folder")}},[t(r.NcFormBox,{scopedSlots:e._u([{key:"default",fn:function({itemClass:n}){return[t(r.NcFormBoxButton,{attrs:{"inverted-accent":"",label:r.t("files","File or folder to transfer"),description:r.nodeForTransfer?.displayname??r.t("files","No file or folder selected")},on:{click:r.chooseNodeForTransfer},scopedSlots:e._u([{key:"icon",fn:function(){return[t(r.NcIconSvgWrapper,{attrs:{path:r.mdiFolderOutline}})]},proxy:!0}],null,!0)}),e._v(" "),t("div",{class:[n,e.$style.transferOwnership__newOwner]},[t(r.NcSelectUsers,{class:e.$style.transferOwnership__newOwnerSelect,attrs:{"input-label":r.t("files","New owner"),loading:r.loadingUsers,options:r.userSuggestions},on:{search:r.searchUsersDebounced},model:{value:r.selectedUser,callback:function(e){r.selectedUser=e},expression:"selectedUser"}})],1),e._v(" "),t(r.NcButton,{attrs:{disabled:!r.canSubmit,type:"submit",variant:"primary",wide:""}},[e._v("\n\t\t\t\t"+e._s(r.submitButtonText)+"\n\t\t\t")])]}}])}),e._v(" "),t("p",{staticClass:"hidden-visually",attrs:{"aria-live":"polite"}},[r.nodeForTransfer?e._e():t("span",[e._v(e._s(r.t("files","You need to select a file or folder to transfer ownership.")))]),e._v(" "),r.selectedUser?e._e():t("span",[e._v(e._s(r.t("files","You need to select a new owner for the file or folder.")))])])],1)],1)},[],!1,function(e){this.$style=At.locals||At},null,null);const St=xt.exports,Ot=(0,o.pM)({__name:"PersonalSettings",setup:e=>({__sfc:!0,t:s.t,NcSettingsSection:We.N,TransferOwnershipDialogue:St})}),Tt=(0,_t.A)(Ot,function(){var e=this._self._c,t=this._self._setupProxy;return e(t.NcSettingsSection,{attrs:{name:t.t("files","Files")}},[e(t.TransferOwnershipDialogue)],1)},[],!1,null,null,null).exports;r.nc=(0,n.aV)(),o.Ay.prototype.t=s.t,(new(o.Ay.extend(Tt))).$mount("#files-personal-settings")},6141(e,t,r){var n=r(71354),s=r.n(n),o=r(76314),a=r.n(o)()(s());a.push([e.id,"\n._transferOwnership__group_lSDrv {\n\tmax-width: 512px;\n}\n._transferOwnership__newOwner_qBBCY {\n\tbackground-color: var(--color-primary-element-light);\n\tpadding-block: var(--default-grid-baseline);\n\tpadding-inline: calc(var(--border-radius-element) + var(--default-grid-baseline));\n}\n._transferOwnership__newOwnerSelect_Mt32B {\n\twidth: 100%;\n}\n._transferOwnership__newOwner_qBBCY .vs--open .vs__dropdown-toggle {\n\tbackground-color: var(--color-main-background);\n}\n","",{version:3,sources:["webpack://./apps/files/src/components/TransferOwnershipDialogue.vue"],names:[],mappings:";AAuMA;CACA,gBAAA;AACA;AAEA;CACA,oDAAA;CACA,2CAAA;CACA,iFAAA;AACA;AAEA;CACA,WAAA;AACA;AAEA;CACA,8CAAA;AACA",sourcesContent:["\x3c!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"transferOwnership__group\": `_transferOwnership__group_lSDrv`,\n\t\"transferOwnership__newOwner\": `_transferOwnership__newOwner_qBBCY`,\n\t\"transferOwnership__newOwnerSelect\": `_transferOwnership__newOwnerSelect_Mt32B`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst 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\tconst 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","const deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority ||= 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\tlet notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tlet [chunkIds, fn, priority] = deferred[i];\n\t\tlet 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\tconst r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tconst 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};","// wrap a concatenated module body as a lazy, memoized accessor; mod is\n// set before the body runs so re-entrant calls (require cycles) observe\n// the partial exports like Node.js\n__webpack_require__.cw = (body) => {\n\tvar mod;\n\treturn () => {\n\t\tif (body) {\n\t\t\tvar fn = body;\n\t\t\tbody = 0;\n\t\t\tmod = { exports: {} };\n\t\t\tfn.call(mod.exports, mod, mod.exports);\n\t\t}\n\t\treturn mod.exports;\n\t};\n};","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tvar descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };\n\t\t\tif(!__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, descriptor);\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => (chunkId + \"-\" + chunkId + \".js?v=\" + {\"4005\":\"aee79e7f1049b5e8188f\",\"4017\":\"d1523b8db423fbe47986\",\"5236\":\"ffeb871fa5beda99d3b3\",\"5862\":\"37458a2557f9c8bf7cee\",\"6798\":\"38b417c535f358052c1a\",\"7471\":\"34493087eb2469ae6e25\",\"7859\":\"0aa7564896cee7ea552c\",\"8259\":\"e914ef6a65a38374620a\",\"8374\":\"e925f5901b71aeaa37db\",\"8689\":\"5fcce4026be999b251c3\"}[chunkId] + \"\");","__webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop));","const inProgress = {};\nconst dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tlet script, needAttach;\n\tif(key !== undefined) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tconst s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tconst onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tconst doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode?.removeChild(script);\n\t\tdoneFns?.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tconst timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\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 = 5671;","// set .name for anonymous default exports per ES spec\n// skipped when the property is non-configurable (pre-ES2015 engines),\n// where Object.defineProperty would throw\n__webpack_require__.dn = (x) => {\n\tvar descriptor = Object.getOwnPropertyDescriptor(x, \"name\");\n\tif (!descriptor || (!descriptor.writable && descriptor.configurable)) Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","let scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nconst document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript?.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tlet i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^https?:/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:|[?#].*$/g, \"\").replace(/\\/[^/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__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\nconst installedChunks = {\n\t5671: 0,\n\t7471: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tlet installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tconst promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tconst error = new Error();\n\t\t\t\t\tconst loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tconst errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tconst realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\terror.event = event;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(__webpack_require__.p + __webpack_require__.u(chunkId), loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\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\nconst webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tlet [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\nconst chunkLoadingGlobal = 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\nlet __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(77396)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["NcActionButton_D7uypboC","N","NcActionButtonGroup_B95wg_Q6","NcActionCaption","A","NcActionCheckbox_Cbg5yktN","NcActionInput_Xepxb1Nk","NcActionLink","NcActionRadio_B2bgbBHw","NcActionRouter","NcActionSeparator","NcActionText","NcActionTextEditable_BykT5Byh","NcActions_JnumflF4","NcAppContent_BScPRxTJ","NcAppContentDetails","NcAppContentList","NcAppNavigation_C4iIEWY3","NcAppNavigationCaption_BJnvmftc","NcAppNavigationIconBullet","NcAppNavigationItem_DRaKry_f","NcAppNavigationList","NcAppNavigationNew_BOfIdgIu","NcAppNavigationNewItem_KbbB_8vX","NcAppNavigationSearch_CI_e6Rva","NcAppNavigationSettings_BN3w_BCp","NcAppNavigationSpacer","NcAppSettingsDialog_C7Oywy1u","NcAppSettingsSection_CsGyNFSh","NcAppSettingsShortcutsSection_D3ylJW58","NcAppSidebar_CEo2tgBa","NcAppSidebarHeader_CBE4tNYb","NcAppSidebarTab","NcAssistantButton_CHiZT_vH","NcAssistantContent","NcAssistantIcon_mcLe7umL","NcRichContenteditable_CG7oWfBl","NcAvatar_BBqomFJ3","NcBlurHash_CP2UBH_9","NcBreadcrumb_BN1Qrbjc","NcBreadcrumbs_OySgLqXi","NcButton_D6Swkr1k","NcCheckboxRadioSwitch_Ddl_QlRN","NcCollectionList_q7zkDwqG","NcColorPicker_DlAxFoRr","NcContent_BgMXU5Dv","NcCounterBubble_oxV8oMlX","NcDashboardWidget_oyS_D_B","NcDashboardWidgetItem_uYQMYeJS","NcDateTime_enXYuwj8","NcDateTimePicker","NcDateTimePickerNative","NcDialog_DmRqcm3W","NcDialogButton_Bqjj_wmb","NcEllipsisedOption","NcEmojiPicker_ClkGGFdW","NcEmptyContent","NcFilePicker_B57HJpaE","NcFormBox_Bd7m8ffs","NcFormBoxButton_CRL7kucw","NcFormBoxCopyButton_BOENrJAS","NcFormBoxSwitch_bdRBjKGq","NcFormGroup_tW_MwPUj","NcGuestContent","NcHeaderButton_MEyDJghO","NcHeaderMenu_jHItu4LV","index_CxTT94_h","NcHotkey_CpgacYSd","NcHotkeyList_BYFbKo6_","NcIconSvgWrapper_Bui9PhAS","NcInputField_BrzZ8Bne","NcListItem_Ciok4H4t","NcListItemIcon_DdkIQyoP","NcLoadingIcon","index_BCqXu_og","NcModal","NcNoteCard","NcPasswordField_CSeFP0Uz","NcPopover_BzTp7LfM","NcProgressBar_D7zYeXBH","NcRadioGroup_D4kc6Jjr","NcRadioGroupButton_B8a5TW2l","NcRelatedResourcesPanel_CFp3GPty","a","NcRichText_C3Nj11Wy","NcSavingIndicatorIcon_U7AIamCl","NcSelect_DrKzKPZL","NcSelectTags_D8pmnLor","NcSelectUsers_z2bZafO2","NcSettingsInputText_BwnkZzWL","NcSettingsSection_DV_x6Ag7","NcSettingsSelectGroup_CFvLzGNf","NcTextArea_C82D8CSK","NcTextField_BPhf3E7g","NcThemeProvider_BA_zMjAf","NcTimezonePicker_D4xfdT9T","NcUserBubble_CuCNjhc8","NcUserStatusIcon_DdPPN_cP","NcVNodes","Symbol","toStringTag","Focus","Linkify","floating_vue_es","yw","logger","getLoggerBuilder","setApp","detectUser","build","components_TransferOwnershipDialoguevue_type_script_setup_true_lang_ts","_defineComponent","__name","setup","__props","minSearchStringLength","getCapabilities","files_sharing","sharee","picker","getFilePickerBuilder","t","allowDirectories","setMultiSelect","setButtonFactory","node","canPick","path","owner","getCurrentUser","uid","label","displayname","callback","disabled","variant","nodeForTransfer","ref","loadingUsers","selectedUser","userSuggestions","canSubmit","computed","value","submitButtonText","userid","displayName","onBeforeMount","searchUsers","searchUsersDebounced","useDebounceFn","async","query","trim","length","response","axios","get","generateOcsUrl","params","format","itemType","search","perPage","lookup","data","ocs","exact","users","map","user","id","shareWith","subname","shareWithDisplayNameUnique","error","showError","__sfc","chooseNodeForTransfer","pickNodes","FilePickerClosed","debug","undefined","submit","warn","requestParameters","recipient","url","post","info","showSuccess","isAxiosError","status","mdiFolderOutline","mdi","B32","l10n_dist","NcButton","NcFormBox","NcFormBoxButton","NcFormGroup","NcIconSvgWrapper","NcSelectUsers","options","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","TransferOwnershipDialoguevue_type_style_index_0_id_b4a4d722_prod_module_true_lang_css","components_TransferOwnershipDialoguevue_type_style_index_0_id_b4a4d722_prod_module_true_lang_css","locals","component","componentNormalizer","_vm","this","_c","_self","_setup","_setupProxy","on","$event","preventDefault","apply","arguments","class","$style","transferOwnership__group","attrs","scopedSlots","_u","key","fn","itemClass","description","click","proxy","_v","transferOwnership__newOwner","transferOwnership__newOwnerSelect","loading","model","$$v","expression","type","wide","_s","staticClass","_e","context","TransferOwnershipDialogue","components_PersonalSettingsvue_type_script_setup_true_lang_ts","NcSettingsSection","PersonalSettings","name","__webpack_nonce__","getCSPNonce","Vue","prototype","extend","$mount","___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","push","module","version","sources","names","mappings","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","deferred","O","result","chunkIds","priority","i","notFulfilled","Infinity","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","cw","body","mod","definition","Array","isArray","binding","descriptor","enumerable","o","defineProperty","f","e","chunkId","Promise","all","reduce","promises","u","obj","prop","hasOwn","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","setTimeout","target","head","appendChild","nmd","paths","children","dn","x","getOwnPropertyDescriptor","writable","configurable","scriptUrl","globalThis","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","loadingEnded","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files-settings-personal.js?v=9a37c7d2b6ce5d87e475","mappings":"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","sources":["webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue","webpack:///nextcloud/apps/files/src/utils/logger.ts","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/TransferOwnershipDialogue.vue?7b8a","webpack://nextcloud/./apps/files/src/components/TransferOwnershipDialogue.vue?2a1f","webpack:///nextcloud/apps/files/src/components/PersonalSettings.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/components/PersonalSettings.vue","webpack://nextcloud/./apps/files/src/components/PersonalSettings.vue?7d7e","webpack:///nextcloud/apps/files/src/main-settings-personal.ts","webpack:///nextcloud/apps/files/src/components/TransferOwnershipDialogue.vue?vue&type=style&index=0&id=100e34dc&prod&module=true&lang=css","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/concatenation wrap","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/set anonymous default export name","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["import { N as NcActionButton } from \"./chunks/NcActionButton-D7uypboC.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-B95wg_Q6.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-Cbg5yktN.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-Xepxb1Nk.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-B2bgbBHw.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-JnumflF4.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-BykT5Byh.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-BScPRxTJ.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-C4iIEWY3.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-BJnvmftc.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-DRaKry-f.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport { N as NcAppNavigationNew } from \"./chunks/NcAppNavigationNew-BOfIdgIu.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-KbbB-8vX.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-CI_e6Rva.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-BN3w-BCp.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-C7Oywy1u.mjs\";\nimport { N as NcAppSettingsSection } from \"./chunks/NcAppSettingsSection-CsGyNFSh.mjs\";\nimport { N as NcAppSettingsShortcutsSection } from \"./chunks/NcAppSettingsShortcutsSection-D3ylJW58.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-CEo2tgBa.mjs\";\nimport { N as NcAppSidebarHeader } from \"./chunks/NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAssistantButton } from \"./chunks/NcAssistantButton-CHiZT-vH.mjs\";\nimport NcAssistantContent from \"./Components/NcAssistantContent.mjs\";\nimport { N as NcAssistantIcon } from \"./chunks/NcAssistantIcon-mcLe7umL.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-BBqomFJ3.mjs\";\nimport { u } from \"./chunks/NcAvatar-BBqomFJ3.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-CP2UBH-9.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-BN1Qrbjc.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-OySgLqXi.mjs\";\nimport { N as NcButton } from \"./chunks/NcButton-D6Swkr1k.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-Ddl_QlRN.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-q7zkDwqG.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-DlAxFoRr.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-BgMXU5Dv.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-oxV8oMlX.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-oyS__D-B.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-uYQMYeJS.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-enXYuwj8.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-DmRqcm3W.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-Bqjj-wmb.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-ClkGGFdW.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport { N as NcFilePicker } from \"./chunks/NcFilePicker-B57HJpaE.mjs\";\nimport { N as NcFormBox } from \"./chunks/NcFormBox-Bd7m8ffs.mjs\";\nimport { N as NcFormBoxButton } from \"./chunks/NcFormBoxButton-CRL7kucw.mjs\";\nimport { N as NcFormBoxCopyButton } from \"./chunks/NcFormBoxCopyButton-BOENrJAS.mjs\";\nimport { N as NcFormBoxSwitch } from \"./chunks/NcFormBoxSwitch-bdRBjKGq.mjs\";\nimport { N as NcFormGroup } from \"./chunks/NcFormGroup-tW-MwPUj.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport { N as NcHeaderButton } from \"./chunks/NcHeaderButton-MEyDJghO.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-jHItu4LV.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-CxTT94_h.mjs\";\nimport { N as NcHotkey } from \"./chunks/NcHotkey-CpgacYSd.mjs\";\nimport { N as NcHotkeyList } from \"./chunks/NcHotkeyList-BYFbKo6_.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-BrzZ8Bne.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-Ciok4H4t.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-DdkIQyoP.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-CSeFP0Uz.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-BzTp7LfM.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-D7zYeXBH.mjs\";\nimport { N as NcRadioGroup } from \"./chunks/NcRadioGroup-D4kc6Jjr.mjs\";\nimport { N as NcRadioGroupButton } from \"./chunks/NcRadioGroupButton-B8a5TW2l.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-CFp3GPty.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-BCqXu_og.mjs\";\nimport { r } from \"./chunks/index-BCqXu_og.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-CG7oWfBl.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a, g, b, c, s, d } from \"./chunks/referencePickerModal-DnsOMAHk.mjs\";\nimport \"./chunks/createElementId-DhjFt1I9.mjs\";\nimport { N, h, c as c2, i, e, r as r2, f, a as a2 } from \"./chunks/customPickerElements-BGmuXU7x.mjs\";\nimport \"unist-builder\";\nimport \"unist-util-visit-parents\";\nimport \"./chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-C3Nj11Wy.mjs\";\nimport { N as NcSelect } from \"./chunks/NcSelect-DrKzKPZL.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-BPhf3E7g.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-U7AIamCl.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-D8pmnLor.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-z2bZafO2.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-BwnkZzWL.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-DV-x6Ag7.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-CFvLzGNf.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-C82D8CSK.mjs\";\nimport { N as NcThemeProvider } from \"./chunks/NcThemeProvider-BA_zMjAf.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-D4xfdT9T.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-CuCNjhc8.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-DdPPN-cP.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { useFormatDateTime, useFormatRelativeTime, useFormatTime } from \"./Composables/useFormatDateTime.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e as e2, g as g2, s as s2 } from \"./chunks/emoji-Dtn2mDf7.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { usernameToColor } from \"./Functions/usernameToColor.mjs\";\nimport directive from \"./Directives/Focus.mjs\";\nimport directive$1 from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsSectionShortcuts: NcAppSettingsShortcutsSection,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsShortcutsSection as NcAppSettingsSectionShortcuts,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e2 as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b as getProvider,\n c as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n c2 as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n e as registerCustomPickerElement,\n r2 as registerWidget,\n f as renderCustomPickerElement,\n a2 as renderWidget,\n r as richEditor,\n s as searchProvider,\n s2 as setCurrentSkinTone,\n d as sortProviders,\n spawnDialog,\n useFormatDateTime,\n useFormatRelativeTime,\n useFormatTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _setup.submit.apply(null, arguments)}}},[_c(_setup.NcFormGroup,{class:_vm.$style.transferOwnership__group,attrs:{\"label\":_setup.t('files', 'Transfer ownership of a file or folder')}},[_c(_setup.NcFormBox,{scopedSlots:_vm._u([{key:\"default\",fn:function({ itemClass }){return [_c(_setup.NcFormBoxButton,{attrs:{\"inverted-accent\":\"\",\"label\":_setup.t('files', 'File or folder to transfer'),\"description\":_setup.nodeForTransfer?.displayname ?? _setup.t('files', 'No file or folder selected')},on:{\"click\":_setup.chooseNodeForTransfer},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFolderOutline}})]},proxy:true}],null,true)}),_vm._v(\" \"),_c('div',{class:[itemClass, _vm.$style.transferOwnership__newOwner]},[_c(_setup.NcSelectUsers,{class:_vm.$style.transferOwnership__newOwnerSelect,attrs:{\"input-label\":_setup.t('files', 'New owner'),\"loading\":_setup.loadingUsers,\"options\":_setup.userSuggestions},on:{\"search\":_setup.searchUsersDebounced},model:{value:(_setup.selectedUser),callback:function ($$v) {_setup.selectedUser=$$v},expression:\"selectedUser\"}})],1),_vm._v(\" \"),_c(_setup.NcButton,{attrs:{\"disabled\":!_setup.canSubmit,\"type\":\"submit\",\"variant\":\"primary\",\"wide\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.submitButtonText)+\"\\n\\t\\t\\t\")])]}}])}),_vm._v(\" \"),_c('p',{staticClass:\"hidden-visually\",attrs:{\"aria-live\":\"polite\"}},[(!_setup.nodeForTransfer)?_c('span',[_vm._v(_vm._s(_setup.t('files', 'You need to select a file or folder to transfer ownership.')))]):_vm._e(),_vm._v(\" \"),(!_setup.selectedUser)?_c('span',[_vm._v(_vm._s(_setup.t('files', 'You need to select a new owner for the file or folder.')))]):_vm._e()])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport const logger = getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\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!./TransferOwnershipDialogue.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!./TransferOwnershipDialogue.vue?vue&type=script&setup=true&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??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransferOwnershipDialogue.vue?vue&type=style&index=0&id=100e34dc&prod&module=true&lang=css\";\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??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TransferOwnershipDialogue.vue?vue&type=style&index=0&id=100e34dc&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./TransferOwnershipDialogue.vue?vue&type=template&id=100e34dc\"\nimport script from \"./TransferOwnershipDialogue.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./TransferOwnershipDialogue.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./TransferOwnershipDialogue.vue?vue&type=style&index=0&id=100e34dc&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\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 injectStyles,\n null,\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!./PersonalSettings.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!./PersonalSettings.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(_setup.NcSettingsSection,{attrs:{\"name\":_setup.t('files', 'Files')}},[_c(_setup.TransferOwnershipDialogue)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./PersonalSettings.vue?vue&type=template&id=03f6d298\"\nimport script from \"./PersonalSettings.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PersonalSettings.vue?vue&type=script&setup=true&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport PersonalSettings from './components/PersonalSettings.vue';\n__webpack_nonce__ = getCSPNonce();\nVue.prototype.t = t;\nconst View = Vue.extend(PersonalSettings);\nconst instance = new View();\ninstance.$mount('#files-personal-settings');\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, `\n._transferOwnership__group_lSDrv {\n\tmax-width: 512px;\n}\n._transferOwnership__newOwner_qBBCY {\n\tbackground-color: var(--color-primary-element-light);\n\tpadding-block: var(--default-grid-baseline);\n\tpadding-inline: calc(var(--border-radius-element) + var(--default-grid-baseline));\n}\n._transferOwnership__newOwnerSelect_Mt32B {\n\twidth: 100%;\n}\n._transferOwnership__newOwner_qBBCY .vs--open .vs__dropdown-toggle {\n\tbackground-color: var(--color-main-background);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/TransferOwnershipDialogue.vue\"],\"names\":[],\"mappings\":\";AAuMA;CACA,gBAAA;AACA;AAEA;CACA,oDAAA;CACA,2CAAA;CACA,iFAAA;AACA;AAEA;CACA,WAAA;AACA;AAEA;CACA,8CAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"transferOwnership__group\": `_transferOwnership__group_lSDrv`,\n\t\"transferOwnership__newOwner\": `_transferOwnership__newOwner_qBBCY`,\n\t\"transferOwnership__newOwnerSelect\": `_transferOwnership__newOwnerSelect_Mt32B`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst 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\tconst 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","const deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority ||= 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\tlet notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tlet [chunkIds, fn, priority] = deferred[i];\n\t\tlet 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\tconst r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tconst 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};","// wrap a concatenated module body as a lazy, memoized accessor; mod is\n// set before the body runs so re-entrant calls (require cycles) observe\n// the partial exports like Node.js\n__webpack_require__.cw = (body) => {\n\tvar mod;\n\treturn () => {\n\t\tif (body) {\n\t\t\tvar fn = body;\n\t\t\tbody = 0;\n\t\t\tmod = { exports: {} };\n\t\t\tfn.call(mod.exports, mod, mod.exports);\n\t\t}\n\t\treturn mod.exports;\n\t};\n};","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tvar descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };\n\t\t\tif(!__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, descriptor);\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => (chunkId + \"-\" + chunkId + \".js?v=\" + {\"4005\":\"aee79e7f1049b5e8188f\",\"4017\":\"d1523b8db423fbe47986\",\"5236\":\"ffeb871fa5beda99d3b3\",\"5862\":\"37458a2557f9c8bf7cee\",\"6798\":\"38b417c535f358052c1a\",\"7471\":\"34493087eb2469ae6e25\",\"7859\":\"0aa7564896cee7ea552c\",\"8259\":\"e914ef6a65a38374620a\",\"8374\":\"e925f5901b71aeaa37db\",\"8689\":\"5fcce4026be999b251c3\"}[chunkId] + \"\");","__webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop));","const inProgress = {};\nconst dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tlet script, needAttach;\n\tif(key !== undefined) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tconst s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tconst onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tconst doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode?.removeChild(script);\n\t\tdoneFns?.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tconst timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\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 = 5671;","// set .name for anonymous default exports per ES spec\n// skipped when the property is non-configurable (pre-ES2015 engines),\n// where Object.defineProperty would throw\n__webpack_require__.dn = (x) => {\n\tvar descriptor = Object.getOwnPropertyDescriptor(x, \"name\");\n\tif (!descriptor || (!descriptor.writable && descriptor.configurable)) Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","let scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nconst document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript?.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tlet i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^https?:/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:|[?#].*$/g, \"\").replace(/\\/[^/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__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\nconst installedChunks = {\n\t5671: 0,\n\t7471: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tlet installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tconst promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tconst error = new Error();\n\t\t\t\t\tconst loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tconst errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tconst realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\terror.event = event;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(__webpack_require__.p + __webpack_require__.u(chunkId), loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\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\nconst webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tlet [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\nconst chunkLoadingGlobal = 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\nlet __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(52968)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["NcActionButton_D7uypboC","N","NcActionButtonGroup_B95wg_Q6","NcActionCaption","A","NcActionCheckbox_Cbg5yktN","NcActionInput_Xepxb1Nk","NcActionLink","NcActionRadio_B2bgbBHw","NcActionRouter","NcActionSeparator","NcActionText","NcActionTextEditable_BykT5Byh","NcActions_JnumflF4","NcAppContent_BScPRxTJ","NcAppContentDetails","NcAppContentList","NcAppNavigation_C4iIEWY3","NcAppNavigationCaption_BJnvmftc","NcAppNavigationIconBullet","NcAppNavigationItem_DRaKry_f","NcAppNavigationList","NcAppNavigationNew_BOfIdgIu","NcAppNavigationNewItem_KbbB_8vX","NcAppNavigationSearch_CI_e6Rva","NcAppNavigationSettings_BN3w_BCp","NcAppNavigationSpacer","NcAppSettingsDialog_C7Oywy1u","NcAppSettingsSection_CsGyNFSh","NcAppSettingsShortcutsSection_D3ylJW58","NcAppSidebar_CEo2tgBa","NcAppSidebarHeader_CBE4tNYb","NcAppSidebarTab","NcAssistantButton_CHiZT_vH","NcAssistantContent","NcAssistantIcon_mcLe7umL","NcRichContenteditable_CG7oWfBl","NcAvatar_BBqomFJ3","NcBlurHash_CP2UBH_9","NcBreadcrumb_BN1Qrbjc","NcBreadcrumbs_OySgLqXi","NcButton_D6Swkr1k","NcCheckboxRadioSwitch_Ddl_QlRN","NcCollectionList_q7zkDwqG","NcColorPicker_DlAxFoRr","NcContent_BgMXU5Dv","NcCounterBubble_oxV8oMlX","NcDashboardWidget_oyS_D_B","NcDashboardWidgetItem_uYQMYeJS","NcDateTime_enXYuwj8","NcDateTimePicker","NcDateTimePickerNative","NcDialog_DmRqcm3W","NcDialogButton_Bqjj_wmb","NcEllipsisedOption","NcEmojiPicker_ClkGGFdW","NcEmptyContent","NcFilePicker_B57HJpaE","NcFormBox_Bd7m8ffs","NcFormBoxButton_CRL7kucw","NcFormBoxCopyButton_BOENrJAS","NcFormBoxSwitch_bdRBjKGq","NcFormGroup_tW_MwPUj","NcGuestContent","NcHeaderButton_MEyDJghO","NcHeaderMenu_jHItu4LV","index_CxTT94_h","NcHotkey_CpgacYSd","NcHotkeyList_BYFbKo6_","NcIconSvgWrapper_Bui9PhAS","NcInputField_BrzZ8Bne","NcListItem_Ciok4H4t","NcListItemIcon_DdkIQyoP","NcLoadingIcon","index_BCqXu_og","NcModal","NcNoteCard","NcPasswordField_CSeFP0Uz","NcPopover_BzTp7LfM","NcProgressBar_D7zYeXBH","NcRadioGroup_D4kc6Jjr","NcRadioGroupButton_B8a5TW2l","NcRelatedResourcesPanel_CFp3GPty","a","NcRichText_C3Nj11Wy","NcSavingIndicatorIcon_U7AIamCl","NcSelect_DrKzKPZL","NcSelectTags_D8pmnLor","NcSelectUsers_z2bZafO2","NcSettingsInputText_BwnkZzWL","NcSettingsSection_DV_x6Ag7","NcSettingsSelectGroup_CFvLzGNf","NcTextArea_C82D8CSK","NcTextField_BPhf3E7g","NcThemeProvider_BA_zMjAf","NcTimezonePicker_D4xfdT9T","NcUserBubble_CuCNjhc8","NcUserStatusIcon_DdPPN_cP","NcVNodes","Symbol","toStringTag","Focus","Linkify","floating_vue_es","yw","logger","getLoggerBuilder","setApp","detectUser","build","components_TransferOwnershipDialoguevue_type_script_setup_true_lang_ts","_defineComponent","__name","setup","__props","minSearchStringLength","getCapabilities","files_sharing","sharee","picker","getFilePickerBuilder","t","allowDirectories","setMultiSelect","setButtonFactory","node","canPick","path","owner","getCurrentUser","uid","label","displayname","callback","disabled","variant","nodeForTransfer","ref","loadingUsers","selectedUser","userSuggestions","canSubmit","computed","value","submitButtonText","userid","displayName","onBeforeMount","searchUsers","searchUsersDebounced","useDebounceFn","async","query","trim","length","response","axios","get","generateOcsUrl","params","format","itemType","search","perPage","lookup","data","ocs","exact","users","map","user","id","shareWith","subname","shareWithDisplayNameUnique","error","showError","__sfc","chooseNodeForTransfer","pickNodes","FilePickerClosed","debug","undefined","submit","warn","requestParameters","recipient","url","post","info","showSuccess","isAxiosError","status","mdiFolderOutline","mdi","B32","l10n_dist","NcButton","NcFormBox","NcFormBoxButton","NcFormGroup","NcIconSvgWrapper","NcSelectUsers","options","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","TransferOwnershipDialoguevue_type_style_index_0_id_100e34dc_prod_module_true_lang_css","components_TransferOwnershipDialoguevue_type_style_index_0_id_100e34dc_prod_module_true_lang_css","locals","component","componentNormalizer","_vm","this","_c","_self","_setup","_setupProxy","on","$event","preventDefault","apply","arguments","class","$style","transferOwnership__group","attrs","scopedSlots","_u","key","fn","itemClass","description","click","proxy","_v","transferOwnership__newOwner","transferOwnership__newOwnerSelect","loading","model","$$v","expression","type","wide","_s","staticClass","_e","context","TransferOwnershipDialogue","components_PersonalSettingsvue_type_script_setup_true_lang_ts","NcSettingsSection","PersonalSettings","name","__webpack_nonce__","getCSPNonce","Vue","prototype","extend","$mount","___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","push","module","version","sources","names","mappings","sourcesContent","sourceRoot","__WEBPACK_DEFAULT_EXPORT__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","deferred","O","result","chunkIds","priority","i","notFulfilled","Infinity","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","cw","body","mod","definition","Array","isArray","binding","descriptor","enumerable","o","defineProperty","f","e","chunkId","Promise","all","reduce","promises","u","obj","prop","hasOwn","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","setTimeout","target","head","appendChild","nmd","paths","children","dn","x","getOwnPropertyDescriptor","writable","configurable","scriptUrl","globalThis","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","loadingEnded","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file