diff --git a/apps/federation/js/settings-admin.js b/apps/federation/js/settings-admin.js deleted file mode 100644 index 44e7bd9dd6868..0000000000000 --- a/apps/federation/js/settings-admin.js +++ /dev/null @@ -1,116 +0,0 @@ -/*! - * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-FileCopyrightText: 2016 ownCloud, Inc. - * SPDX-License-Identifier: AGPL-3.0-only - */ - -/** - * @param $ - The jQuery instance - */ -(function($) { - // ocFederationAddServer - $.fn.ocFederationAddServer = function() { - /* Go easy on jquery and define some vars - ========================================================================== */ - - const $wrapper = $(this), - - // Buttons - $btnAddServer = $wrapper.find('#ocFederationAddServerButton'), - $btnSubmit = $wrapper.find('#ocFederationSubmit'), - - // Inputs - $inpServerUrl = $wrapper.find('#serverUrl'), - - // misc - $msgBox = $wrapper.find('#ocFederationAddServer .msg'), - $srvList = $wrapper.find('#listOfTrustedServers') - - /* Interaction - ========================================================================== */ - - $btnAddServer.on('click', function() { - $btnAddServer.addClass('hidden') - $wrapper.find('.serverUrl').removeClass('hidden') - $inpServerUrl - .focus() - }) - - // trigger server removal - $srvList.on('click', 'li > .icon-delete', function() { - const $this = $(this).parent() - const id = $this.attr('id') - - removeServer(id) - }) - - $btnSubmit.on('click', function() { - addServer($inpServerUrl.val()) - }) - - $inpServerUrl.on('change keyup', function(e) { - const url = $(this).val() - - // toggle add-button visibility based on input length - if (url.length > 0) { $btnSubmit.removeClass('hidden') } else { $btnSubmit.addClass('hidden') } - - if (e.keyCode === 13) { // add server on "enter" - addServer(url) - } else if (e.keyCode === 27) { // hide input filed again in ESC - $btnAddServer.removeClass('hidden') - $inpServerUrl.val('').addClass('hidden') - $btnSubmit.addClass('hidden') - } - }) - } - - /* private Functions - ========================================================================== */ - - /** - * - * @param url - */ - function addServer(url) { - OC.msg.startSaving('#ocFederationAddServer .msg') - - $.post( - OC.getRootPath() + '/ocs/v2.php/apps/federation/trusted-servers', - { - url, - }, - null, - 'json', - ).done(function({ ocs }) { - const data = ocs.data - $('#serverUrl').attr('value', '') - $('#listOfTrustedServers').prepend($('
  • ') - .attr('id', data.id) - .html('' - + data.url - + '')) - OC.msg.finishedSuccess('#ocFederationAddServer .msg', data.message) - }) - .fail(function(jqXHR) { - OC.msg.finishedError('#ocFederationAddServer .msg', JSON.parse(jqXHR.responseText).ocs.meta.message) - }) - } - - /** - * - * @param id - */ - function removeServer(id) { - $.ajax({ - url: OC.getRootPath() + '/ocs/v2.php/apps/federation/trusted-servers/' + id, - type: 'DELETE', - success: function(response) { - $('#ocFederationSettings').find('#' + id).remove() - }, - }) - } -})(jQuery) - -window.addEventListener('DOMContentLoaded', function() { - $('#ocFederationSettings').ocFederationAddServer() -}) diff --git a/apps/federation/lib/AppInfo/Application.php b/apps/federation/lib/AppInfo/Application.php index f6b3d8c26f512..737db41bfa1fb 100644 --- a/apps/federation/lib/AppInfo/Application.php +++ b/apps/federation/lib/AppInfo/Application.php @@ -18,11 +18,13 @@ class Application extends App implements IBootstrap { + public const APP_ID = 'federation'; + /** * @param array $urlParams */ public function __construct($urlParams = []) { - parent::__construct('federation', $urlParams); + parent::__construct(self::APP_ID, $urlParams); } public function register(IRegistrationContext $context): void { diff --git a/apps/federation/lib/Settings/Admin.php b/apps/federation/lib/Settings/Admin.php index 5cf5346bb85a3..892d21a626945 100644 --- a/apps/federation/lib/Settings/Admin.php +++ b/apps/federation/lib/Settings/Admin.php @@ -1,19 +1,25 @@ $this->trustedServers->getServers(), + 'docUrl' => $this->urlGenerator->linkToDocs('admin-sharing-federated') . '#configuring-trusted-nextcloud-servers', ]; - return new TemplateResponse('federation', 'settings-admin', $parameters, ''); + $this->initialState->provideInitialState('adminSettings', $parameters); + + Util::addStyle(Application::APP_ID, 'settings-admin'); + Util::addScript(Application::APP_ID, 'settings-admin'); + return new TemplateResponse(Application::APP_ID, 'settings-admin', renderAs: ''); } /** diff --git a/apps/federation/src/components/AddTrustedServerForm.vue b/apps/federation/src/components/AddTrustedServerForm.vue new file mode 100644 index 0000000000000..40217f9b77313 --- /dev/null +++ b/apps/federation/src/components/AddTrustedServerForm.vue @@ -0,0 +1,90 @@ + + + + + + + diff --git a/apps/federation/src/components/TrustedServer.vue b/apps/federation/src/components/TrustedServer.vue new file mode 100644 index 0000000000000..b47fa3772ce4b --- /dev/null +++ b/apps/federation/src/components/TrustedServer.vue @@ -0,0 +1,121 @@ + + + + + + + diff --git a/apps/federation/src/services/api.spec.ts b/apps/federation/src/services/api.spec.ts new file mode 100644 index 0000000000000..7d5656e88970a --- /dev/null +++ b/apps/federation/src/services/api.spec.ts @@ -0,0 +1,107 @@ +/*! + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { http, HttpResponse } from 'msw' +import { setupServer } from 'msw/node' +import { afterAll, afterEach, beforeAll, describe, expect, test } from 'vitest' +import { addServer, ApiError, deleteServer, TrustedServerStatus } from './api.ts' + +export const handlers = [ + http.post('/ocs/v2.php/apps/federation/trusted-servers', async ({ request }) => { + const { url } = (await request.json()) as { url: string } + if (url === 'https://network-error.com') { + return HttpResponse.error() + } + if (url === 'https://existing-server.com') { + return HttpResponse.json({ + ocs: { + meta: { + status: 'failure', + statuscode: 409, + message: 'Server already exists', + }, + }, + }, { status: 409 }) + } + + return HttpResponse.json({ + ocs: { + meta: { + status: 'ok', + }, + data: { + id: 1, + url, + }, + }, + }) + }), + http.delete('/ocs/v2.php/apps/federation/trusted-servers/:id', async ({ params }) => { + if (params.id === '1') { + return HttpResponse.json({ + ocs: { + meta: { + status: 'ok', + }, + }, + }) + } + if (params.id === '2') { + return HttpResponse.json({ + ocs: { + meta: { + status: 'failure', + statuscode: 404, + message: 'Server does not exist', + }, + }, + }, { status: 404 }) + } + + return HttpResponse.error() + }), +] + +const server = setupServer(...handlers) +beforeAll(() => server.listen()) +afterEach(() => server.resetHandlers()) +afterAll(() => server.close()) + +describe('addServer', () => { + test('returns a trusted server object on success', async () => { + const server = await addServer('https://trusted-server.com') + expect(server).toEqual({ + id: 1, + url: 'https://trusted-server.com', + status: TrustedServerStatus.STATUS_PENDING, + }) + }) + + test('throws API error when already added', async () => { + await expect(() => addServer('https://existing-server.com')).rejects.toThrowError(ApiError) + await expect(() => addServer('https://existing-server.com')).rejects.toThrow('Server already exists') + }) + + test('throws error when network error occurs', async () => { + await expect(() => addServer('https://network-error.com')).rejects.toThrowError(Error) + await expect(() => addServer('https://network-error.com')).rejects.not.toThrowError(ApiError) + }) +}) + +describe('deleteServer', () => { + test('resolves on success', async () => { + await expect(deleteServer(1)).resolves.not.toThrow() + }) + + test('throws API error when already added', async () => { + await expect(() => deleteServer(2)).rejects.toThrowError(ApiError) + await expect(() => deleteServer(2)).rejects.toThrow('Server does not exist') + }) + + test('throws error when network error occurs', async () => { + await expect(() => deleteServer(3)).rejects.toThrowError(Error) + await expect(() => deleteServer(3)).rejects.not.toThrowError(ApiError) + }) +}) diff --git a/apps/federation/src/services/api.ts b/apps/federation/src/services/api.ts new file mode 100644 index 0000000000000..1155471b59fe9 --- /dev/null +++ b/apps/federation/src/services/api.ts @@ -0,0 +1,74 @@ +/*! + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import type { OCSResponse } from '@nextcloud/typings/ocs' + +import axios, { isAxiosError } from '@nextcloud/axios' +import { generateOcsUrl } from '@nextcloud/router' + +export const TrustedServerStatus = Object.freeze({ + /** after a user list was exchanged at least once successfully */ + STATUS_OK: 1, + /** waiting for shared secret or initial user list exchange */ + STATUS_PENDING: 2, + /** something went wrong, misconfigured server, software bug,... user interaction needed */ + STATUS_FAILURE: 3, + /** remote server revoked access */ + STATUS_ACCESS_REVOKED: 4, +}) + +export interface ITrustedServer { + id: number + url: string + status: typeof TrustedServerStatus[keyof typeof TrustedServerStatus] +} + +export class ApiError extends Error {} + +/** + * Add a new trusted server + * + * @param url - The new URL to add + */ +export async function addServer(url: string): Promise { + try { + const { data } = await axios.post>>( + generateOcsUrl('apps/federation/trusted-servers'), + { url }, + ) + + const serverData = data.ocs.data + return { + id: serverData.id, + url: serverData.url, + status: TrustedServerStatus.STATUS_PENDING, + } + } catch (error) { + throw mapError(error) + } +} + +/** + * @param id - The id of the trusted server to remove + */ +export async function deleteServer(id: number): Promise { + try { + await axios.delete(generateOcsUrl(`apps/federation/trusted-servers/${id}`)) + } catch (error) { + throw mapError(error) + } +} + +/** + * Error handling for API calls + * + * @param error - The catch error + */ +function mapError(error: unknown): ApiError | unknown { + if (isAxiosError(error) && error.response?.data?.ocs) { + return new ApiError((error.response.data as OCSResponse).ocs.meta.message, { cause: error }) + } + return error +} diff --git a/apps/federation/src/services/logger.ts b/apps/federation/src/services/logger.ts new file mode 100644 index 0000000000000..aa5cefb321642 --- /dev/null +++ b/apps/federation/src/services/logger.ts @@ -0,0 +1,8 @@ +/*! + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { getLoggerBuilder } from '@nextcloud/logger' + +export const logger = getLoggerBuilder().setApp('federation').build() diff --git a/apps/federation/src/settings-admin.ts b/apps/federation/src/settings-admin.ts new file mode 100644 index 0000000000000..40b4055469f1e --- /dev/null +++ b/apps/federation/src/settings-admin.ts @@ -0,0 +1,10 @@ +/*! + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { createApp } from 'vue' +import AdminSettings from './views/AdminSettings.vue' + +const app = createApp(AdminSettings) +app.mount('#federation-admin-settings') diff --git a/apps/federation/src/views/AdminSettings.vue b/apps/federation/src/views/AdminSettings.vue new file mode 100644 index 0000000000000..0808903d61d70 --- /dev/null +++ b/apps/federation/src/views/AdminSettings.vue @@ -0,0 +1,91 @@ + + + + + + + diff --git a/apps/federation/templates/settings-admin.php b/apps/federation/templates/settings-admin.php index 857a8b23e372e..5f5976e4ae58c 100644 --- a/apps/federation/templates/settings-admin.php +++ b/apps/federation/templates/settings-admin.php @@ -1,64 +1,7 @@ linkToDocs('admin-sharing-federated') . '#configuring-trusted-nextcloud-servers'; -$documentationLabel = $l->t('External documentation for Federated Cloud Sharing'); ?> -
    -

    - t('Trusted servers')); ?> - -

    -

    t('Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share.')); ?>

    -

    t('Each server must validate the other. This process may require a few cron cycles.')); ?>

    - -
      - -
    • - - - - - - - - - -
    • - -
    - -
    - - -
    -
    +
    \ No newline at end of file diff --git a/apps/federation/tests/Settings/AdminTest.php b/apps/federation/tests/Settings/AdminTest.php index b879547a8cd5e..44c8b8ae3c4e8 100644 --- a/apps/federation/tests/Settings/AdminTest.php +++ b/apps/federation/tests/Settings/AdminTest.php @@ -10,24 +10,35 @@ use OCA\Federation\Settings\Admin; use OCA\Federation\TrustedServers; use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Services\IInitialState; use OCP\IL10N; +use OCP\IURLGenerator; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class AdminTest extends TestCase { private TrustedServers&MockObject $trustedServers; + private IInitialState&MockObject $initialState; + private IURLGenerator&MockObject $urlGenerator; private Admin $admin; protected function setUp(): void { parent::setUp(); $this->trustedServers = $this->createMock(TrustedServers::class); + $this->initialState = $this->createMock(IInitialState::class); + $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->admin = new Admin( $this->trustedServers, + $this->initialState, + $this->urlGenerator, $this->createMock(IL10N::class) ); } public function testGetForm(): void { + $this->urlGenerator->method('linkToDocs') + ->with('admin-sharing-federated') + ->willReturn('docs://federated_sharing'); $this->trustedServers ->expects($this->once()) ->method('getServers') @@ -35,8 +46,15 @@ public function testGetForm(): void { $params = [ 'trustedServers' => ['myserver', 'secondserver'], + 'docUrl' => 'docs://federated_sharing#configuring-trusted-nextcloud-servers', ]; - $expected = new TemplateResponse('federation', 'settings-admin', $params, ''); + + $this->initialState + ->expects($this->once()) + ->method('provideInitialState') + ->with('adminSettings', $params); + + $expected = new TemplateResponse('federation', 'settings-admin', renderAs: ''); $this->assertEquals($expected, $this->admin->getForm()); } diff --git a/build/frontend/apps/federation b/build/frontend/apps/federation new file mode 120000 index 0000000000000..5ec2f10df8499 --- /dev/null +++ b/build/frontend/apps/federation @@ -0,0 +1 @@ +../../../apps/federation \ No newline at end of file diff --git a/build/frontend/vite.config.ts b/build/frontend/vite.config.ts index 198081027a1ed..cc81f71be0c9a 100644 --- a/build/frontend/vite.config.ts +++ b/build/frontend/vite.config.ts @@ -12,6 +12,9 @@ const modules = { 'settings-admin-example-content': resolve(import.meta.dirname, 'apps/dav/src', 'settings-admin-example-content.ts'), 'settings-personal-availability': resolve(import.meta.dirname, 'apps/dav/src', 'settings-personal-availability.ts'), }, + federation: { + 'settings-admin': resolve(import.meta.dirname, 'apps/federation/src', 'settings-admin.ts'), + }, federatedfilesharing: { 'init-files': resolve(import.meta.dirname, 'apps/federatedfilesharing/src', 'init-files.js'), 'settings-admin': resolve(import.meta.dirname, 'apps/federatedfilesharing/src', 'settings-admin.ts'), diff --git a/dist/ContentCopy-OVTnXxZC.chunk.mjs b/dist/ContentCopy-nRBsf6Ta.chunk.mjs similarity index 90% rename from dist/ContentCopy-OVTnXxZC.chunk.mjs rename to dist/ContentCopy-nRBsf6Ta.chunk.mjs index 2df2ea3c1cdfb..c7e88c002da09 100644 --- a/dist/ContentCopy-OVTnXxZC.chunk.mjs +++ b/dist/ContentCopy-nRBsf6Ta.chunk.mjs @@ -1,2 +1,2 @@ -import{r as u,b as p,a as h,_ as C}from"./_plugin-vue_export-helper-DM8WuWZR.chunk.mjs";import{j as _,E as i,o as e,H as o,F as s,x as y,e as H,f as n,y as d,b,z as f}from"./string_decoder-BycPOoxV.chunk.mjs";const k={name:"HelpCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},A=["aria-hidden","aria-label"],v=["fill","width","height"],z={d:"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"},V={key:0};function w(a,l,t,c,g,m){return e(),i("span",f(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon help-circle-icon",role:"img",onClick:l[0]||(l[0]=r=>a.$emit("click",r))}),[(e(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[o("path",z,[t.title?(e(),i("title",V,n(t.title),1)):s("",!0)])],8,v))],16,A)}const x=p(k,[["render",w]]);u();const M={class:"settings-section"},S={class:"settings-section__name"},$=["aria-label","href","title"],I={key:0,class:"settings-section__desc"},N=_({__name:"NcSettingsSection",props:{name:{},description:{default:""},docUrl:{default:""}},setup(a){const l=h("External documentation");return(t,c)=>(e(),i("div",M,[o("h2",S,[H(n(t.name)+" ",1),t.docUrl?(e(),i("a",{key:0,"aria-label":d(l),class:"settings-section__info",href:t.docUrl,rel:"noreferrer nofollow",target:"_blank",title:d(l)},[b(x,{size:20})],8,$)):s("",!0)]),t.description?(e(),i("p",I,n(t.description),1)):s("",!0),y(t.$slots,"default",{},void 0,!0)]))}}),P=p(N,[["__scopeId","data-v-9cedb949"]]),U={name:"ContentCopyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},B=["aria-hidden","aria-label"],E=["fill","width","height"],L={d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"},Z={key:0};function j(a,l,t,c,g,m){return e(),i("span",f(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon content-copy-icon",role:"img",onClick:l[0]||(l[0]=r=>a.$emit("click",r))}),[(e(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[o("path",L,[t.title?(e(),i("title",Z,n(t.title),1)):s("",!0)])],8,E))],16,B)}const T=C(U,[["render",j]]);export{T as I,P as N}; -//# sourceMappingURL=ContentCopy-OVTnXxZC.chunk.mjs.map +import{r as u,b as p,a as h,_ as C}from"./_plugin-vue_export-helper-CXvX4IZ0.chunk.mjs";import{j as _,E as i,o as e,H as o,F as s,x as y,e as H,f as n,y as d,b,z as f}from"./string_decoder-BY7m9-pN.chunk.mjs";const k={name:"HelpCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},A=["aria-hidden","aria-label"],v=["fill","width","height"],z={d:"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z"},V={key:0};function w(a,l,t,c,g,m){return e(),i("span",f(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon help-circle-icon",role:"img",onClick:l[0]||(l[0]=r=>a.$emit("click",r))}),[(e(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[o("path",z,[t.title?(e(),i("title",V,n(t.title),1)):s("",!0)])],8,v))],16,A)}const x=p(k,[["render",w]]);u();const M={class:"settings-section"},S={class:"settings-section__name"},$=["aria-label","href","title"],I={key:0,class:"settings-section__desc"},N=_({__name:"NcSettingsSection",props:{name:{},description:{default:""},docUrl:{default:""}},setup(a){const l=h("External documentation");return(t,c)=>(e(),i("div",M,[o("h2",S,[H(n(t.name)+" ",1),t.docUrl?(e(),i("a",{key:0,"aria-label":d(l),class:"settings-section__info",href:t.docUrl,rel:"noreferrer nofollow",target:"_blank",title:d(l)},[b(x,{size:20})],8,$)):s("",!0)]),t.description?(e(),i("p",I,n(t.description),1)):s("",!0),y(t.$slots,"default",{},void 0,!0)]))}}),P=p(N,[["__scopeId","data-v-9cedb949"]]),U={name:"ContentCopyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},B=["aria-hidden","aria-label"],E=["fill","width","height"],L={d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"},Z={key:0};function j(a,l,t,c,g,m){return e(),i("span",f(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon content-copy-icon",role:"img",onClick:l[0]||(l[0]=r=>a.$emit("click",r))}),[(e(),i("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[o("path",L,[t.title?(e(),i("title",Z,n(t.title),1)):s("",!0)])],8,E))],16,B)}const T=C(U,[["render",j]]);export{T as I,P as N}; +//# sourceMappingURL=ContentCopy-nRBsf6Ta.chunk.mjs.map diff --git a/dist/ContentCopy-OVTnXxZC.chunk.mjs.license b/dist/ContentCopy-nRBsf6Ta.chunk.mjs.license similarity index 100% rename from dist/ContentCopy-OVTnXxZC.chunk.mjs.license rename to dist/ContentCopy-nRBsf6Ta.chunk.mjs.license diff --git a/dist/ContentCopy-OVTnXxZC.chunk.mjs.map b/dist/ContentCopy-nRBsf6Ta.chunk.mjs.map similarity index 99% rename from dist/ContentCopy-OVTnXxZC.chunk.mjs.map rename to dist/ContentCopy-nRBsf6Ta.chunk.mjs.map index 6cfc360e69aad..0a2c6d31e9a4c 100644 --- a/dist/ContentCopy-OVTnXxZC.chunk.mjs.map +++ b/dist/ContentCopy-nRBsf6Ta.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"ContentCopy-OVTnXxZC.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSection-DYXU4pOK.mjs","../node_modules/vue-material-design-icons/ContentCopy.vue"],"sourcesContent":["import '../assets/NcSettingsSection-f5rBJsKJ.css';\nimport { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, defineComponent, renderSlot, createTextVNode, unref, createVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { r as register, a as t } from \"./_l10n-DrTiip5c.mjs\";\nconst _sfc_main$1 = {\n name: \"HelpCircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon help-circle-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst HelpCircle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nregister();\nconst _hoisted_1 = { class: \"settings-section\" };\nconst _hoisted_2 = { class: \"settings-section__name\" };\nconst _hoisted_3 = [\"aria-label\", \"href\", \"title\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"settings-section__desc\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcSettingsSection\",\n props: {\n name: {},\n description: { default: \"\" },\n docUrl: { default: \"\" }\n },\n setup(__props) {\n const ariaLabel = t(\"External documentation\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"h2\", _hoisted_2, [\n createTextVNode(toDisplayString(_ctx.name) + \" \", 1),\n _ctx.docUrl ? (openBlock(), createElementBlock(\"a\", {\n key: 0,\n \"aria-label\": unref(ariaLabel),\n class: \"settings-section__info\",\n href: _ctx.docUrl,\n rel: \"noreferrer nofollow\",\n target: \"_blank\",\n title: unref(ariaLabel)\n }, [\n createVNode(HelpCircle, { size: 20 })\n ], 8, _hoisted_3)) : createCommentVNode(\"\", true)\n ]),\n _ctx.description ? (openBlock(), createElementBlock(\"p\", _hoisted_4, toDisplayString(_ctx.description), 1)) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]);\n };\n }\n});\nconst NcSettingsSection = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9cedb949\"]]);\nexport {\n NcSettingsSection as N\n};\n//# sourceMappingURL=NcSettingsSection-DYXU4pOK.mjs.map\n","\n\n"],"names":["_sfc_main$1","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","HelpCircle","_export_sfc","register","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_main","defineComponent","__props","ariaLabel","t","createTextVNode","unref","createVNode","renderSlot","NcSettingsSection","_createElementBlock","_mergeProps","_createElementVNode","_openBlock"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file +{"version":3,"file":"ContentCopy-nRBsf6Ta.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSection-DYXU4pOK.mjs","../node_modules/vue-material-design-icons/ContentCopy.vue"],"sourcesContent":["import '../assets/NcSettingsSection-f5rBJsKJ.css';\nimport { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, defineComponent, renderSlot, createTextVNode, unref, createVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { r as register, a as t } from \"./_l10n-DrTiip5c.mjs\";\nconst _sfc_main$1 = {\n name: \"HelpCircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon help-circle-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst HelpCircle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nregister();\nconst _hoisted_1 = { class: \"settings-section\" };\nconst _hoisted_2 = { class: \"settings-section__name\" };\nconst _hoisted_3 = [\"aria-label\", \"href\", \"title\"];\nconst _hoisted_4 = {\n key: 0,\n class: \"settings-section__desc\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcSettingsSection\",\n props: {\n name: {},\n description: { default: \"\" },\n docUrl: { default: \"\" }\n },\n setup(__props) {\n const ariaLabel = t(\"External documentation\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"h2\", _hoisted_2, [\n createTextVNode(toDisplayString(_ctx.name) + \" \", 1),\n _ctx.docUrl ? (openBlock(), createElementBlock(\"a\", {\n key: 0,\n \"aria-label\": unref(ariaLabel),\n class: \"settings-section__info\",\n href: _ctx.docUrl,\n rel: \"noreferrer nofollow\",\n target: \"_blank\",\n title: unref(ariaLabel)\n }, [\n createVNode(HelpCircle, { size: 20 })\n ], 8, _hoisted_3)) : createCommentVNode(\"\", true)\n ]),\n _ctx.description ? (openBlock(), createElementBlock(\"p\", _hoisted_4, toDisplayString(_ctx.description), 1)) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]);\n };\n }\n});\nconst NcSettingsSection = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9cedb949\"]]);\nexport {\n NcSettingsSection as N\n};\n//# sourceMappingURL=NcSettingsSection-DYXU4pOK.mjs.map\n","\n\n"],"names":["_sfc_main$1","_hoisted_1$1","_hoisted_2$1","_hoisted_3$1","_hoisted_4$1","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","HelpCircle","_export_sfc","register","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_main","defineComponent","__props","ariaLabel","t","createTextVNode","unref","createVNode","renderSlot","NcSettingsSection","_createElementBlock","_mergeProps","_createElementVNode","_openBlock"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist/ContentCopy-OVTnXxZC.chunk.mjs.map.license b/dist/ContentCopy-nRBsf6Ta.chunk.mjs.map.license similarity index 100% rename from dist/ContentCopy-OVTnXxZC.chunk.mjs.map.license rename to dist/ContentCopy-nRBsf6Ta.chunk.mjs.map.license diff --git a/dist/FilePicker-W-IYpVkn-DxMl7UgI.chunk.mjs b/dist/FilePicker-W-IYpVkn-Dej1zp_C.chunk.mjs similarity index 64% rename from dist/FilePicker-W-IYpVkn-DxMl7UgI.chunk.mjs rename to dist/FilePicker-W-IYpVkn-Dej1zp_C.chunk.mjs index cdf902a3cc30e..e16c1b7dff2a9 100644 --- a/dist/FilePicker-W-IYpVkn-DxMl7UgI.chunk.mjs +++ b/dist/FilePicker-W-IYpVkn-Dej1zp_C.chunk.mjs @@ -1,18 +1,18 @@ -import{j as de,E as _,o as v,F as $,x as he,y as w,e as fe,f as x,r as je,c as M,b as P,v as Yt,w as k,H as T,G as ge,z as ae,O as Se,M as oe,az as It,a9 as me,ap as _a,I as ba,g as wa,i as Ne,A as ya,B as Be,C as Ta,ad as Ia,aA as Na,aB as Qt,ac as De,al as Te,D as Aa,aC as Ca,ax as La,av as Da,n as Ra,ab as Oa,a5 as Zt,q as B,ak as Sa,ah as we,s as O,am as st,k as Kt,a4 as Jt,a8 as Ae,a6 as ka,l as ea,p as Fa,N as $e,m as $a,u as Nt,a2 as Pa,aD as Ba,aj as xa,Q as Ma}from"./string_decoder-BycPOoxV.chunk.mjs";import{r as lt,M as Ua,O as A,N as za,P as Ie,s as ct}from"./index-JpgrUA2Z-C7mmv1ig.chunk.mjs";import{P as Va,a as Ga}from"./index-VNyMfR7b.chunk.mjs";import{b as Ce,f as ta,c as Xa,e as ut}from"./_plugin-vue_export-helper-DM8WuWZR.chunk.mjs";import{d as ja,B as qe}from"./index-DpibbgL8.chunk.mjs";import{a as qa,u as Ha,_ as Wa}from"./index-Bamwag0s.chunk.mjs";import{b as ye,N as aa}from"./NcNoteCard-CVhtNL04-BuDL6zff.chunk.mjs";import{N as ia}from"./NcCheckboxRadioSwitch-BCSKF7Tk-Y9hEk7hU.chunk.mjs";import{e as Ya,f as Qa,g as Za,h as Ka,i as Ja,j as ei,k as At,l as ti,n as ai}from"./mdi-C5IU8XSu.chunk.mjs";import{S as Ct}from"./ShareType-suoNfd7y.chunk.mjs";import{c as ra}from"./index-D6zY57LV.chunk.mjs";import{a as Lt,b as Dt,N as Rt}from"./NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs";import{N as ii}from"./NcSelect-Czzsi3P_-CQMqZWb7.chunk.mjs";import{_ as ri}from"./TrashCanOutline-CC4vElfR.chunk.mjs";import"./NcPasswordField-djttkA5Q-mXbWWJbB.chunk.mjs";import"./NcInputField-Bwsh2aHY-DMKjn_ao.chunk.mjs";const ni=["aria-labelledby"],si={key:0,class:"empty-content__icon","aria-hidden":"true"},oi=["id"],li={key:2,class:"empty-content__description"},ci={key:3,class:"empty-content__action"},ui=de({__name:"NcEmptyContent",props:{description:{default:""},name:{default:""}},setup(e){const i=ta();return(t,n)=>(v(),_("div",{"aria-labelledby":w(i),class:"empty-content",role:"note"},[t.$slots.icon?(v(),_("div",si,[he(t.$slots,"icon",{},void 0,!0)])):$("",!0),t.name!==""||t.$slots.name?(v(),_("div",{key:1,id:w(i),class:"empty-content__name"},[he(t.$slots,"name",{},()=>[fe(x(t.name),1)],!0)],8,oi)):$("",!0),t.description!==""||t.$slots.description?(v(),_("p",li,[he(t.$slots,"description",{},()=>[fe(x(t.description),1)],!0)])):$("",!0),t.$slots.action?(v(),_("div",ci,[he(t.$slots,"action",{},void 0,!0)])):$("",!0)],8,ni))}}),Ot=Ce(ui,[["__scopeId","data-v-b101d636"]]),di={name:"ChevronRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pi=["aria-hidden","aria-label"],mi=["fill","width","height"],hi={d:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"},fi={key:0};function vi(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon chevron-right-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",hi,[t.title?(v(),_("title",fi,x(t.title),1)):$("",!0)])],8,mi))],16,pi)}const gi=Ce(di,[["render",vi]]),Ei={name:"NcBreadcrumb",components:{NcActions:lt,ChevronRight:gi,NcButton:ye},inheritAttrs:!1,props:{name:{type:String,required:!0},title:{type:String,default:null},to:{type:[String,Object],default:void 0},href:{type:String,default:void 0},icon:{type:String,default:""},forceIconText:{type:Boolean,default:!1},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1},class:{type:[String,Array,Object],default:""}},emits:["dragenter","dragleave","dropped","update:open"],setup(){const e=ta();return{actionsContainer:`.vue-crumb[data-crumb-id="${e}"]`,crumbId:e}},data(){return{hovering:!1}},computed:{linkAttributes(){return this.to?{to:this.to,...this.$attrs}:this.href?{href:this.href,...this.$attrs}:this.$attrs}},methods:{onOpenChange(e){this.$emit("update:open",e)},dropped(e){return this.disableDrop||(this.$emit("dropped",e,this.to||this.href),this.$parent.$emit("dropped",e,this.to||this.href),this.hovering=!1),!1},dragEnter(e){this.$emit("dragenter",e),!this.disableDrop&&(this.hovering=!0)},dragLeave(e){this.$emit("dragleave",e),!this.disableDrop&&(e.target.contains(e.relatedTarget)||this.$refs.crumb.contains(e.relatedTarget)||(this.hovering=!1))}}},_i=["data-crumb-id"];function bi(e,i,t,n,c,m){const u=je("NcButton"),f=je("NcActions"),d=je("ChevronRight");return v(),_("li",{ref:"crumb",class:ge(["vue-crumb",[{"vue-crumb--hovered":c.hovering},e.$props.class]]),"data-crumb-id":n.crumbId,draggable:"false",onDragstart:Se(()=>{},["prevent"]),onDrop:i[0]||(i[0]=Se((...p)=>m.dropped&&m.dropped(...p),["prevent"])),onDragover:Se(()=>{},["prevent"]),onDragenter:i[1]||(i[1]=(...p)=>m.dragEnter&&m.dragEnter(...p)),onDragleave:i[2]||(i[2]=(...p)=>m.dragLeave&&m.dragLeave(...p))},[(t.name||t.icon||e.$slots.icon)&&!e.$slots.default?(v(),M(u,ae({key:0,"aria-label":t.icon?t.name:void 0,variant:"tertiary"},m.linkAttributes),Yt({_:2},[e.$slots.icon||t.icon?{name:"icon",fn:k(()=>[he(e.$slots,"icon",{},()=>[T("span",{class:ge([t.icon,"icon"])},null,2)],!0)]),key:"0"}:void 0,!(e.$slots.icon||t.icon)||t.forceIconText?{name:"default",fn:k(()=>[fe(x(t.name),1)]),key:"1"}:void 0]),1040,["aria-label"])):$("",!0),e.$slots.default?(v(),M(f,{key:1,ref:"actions",container:n.actionsContainer,"force-menu":t.forceMenu,"force-name":"","menu-name":t.name,open:t.open,title:t.title,variant:"tertiary","onUpdate:open":m.onOpenChange},{icon:k(()=>[he(e.$slots,"menu-icon",{},void 0,!0)]),default:k(()=>[he(e.$slots,"default",{},void 0,!0)]),_:3},8,["container","force-menu","menu-name","open","title","onUpdate:open"])):$("",!0),P(d,{class:"vue-crumb__separator",size:20})],42,_i)}const Pe=Ce(Ei,[["render",bi],["__scopeId","data-v-28ef52a4"]]),wi={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},yi=["aria-hidden","aria-label"],Ti=["fill","width","height"],Ii={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},Ni={key:0};function Ai(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",Ii,[t.title?(v(),_("title",Ni,x(t.title),1)):$("",!0)])],8,Ti))],16,yi)}const St=Ce(wi,[["render",Ai]]),W="vue-crumb",Ci={name:"NcBreadcrumbs",components:{NcActions:lt,NcActionButton:Rt,NcActionRouter:Dt,NcActionLink:Lt,NcBreadcrumb:Pe,IconFolder:St},props:{rootIcon:{type:String,default:"icon-home"},ariaLabel:{type:String,default:null}},emits:["dropped"],data(){return{hiddenIndices:[],menuBreadcrumbProps:{name:"",forceMenu:!0,disableDrop:!0,open:!1},breadcrumbsRefs:[]}},created(){window.addEventListener("resize",ja(()=>{this.handleWindowResize()},100)),ba("navigation-toggled",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.$nextTick(()=>{this.hideCrumbs()})},beforeUnmount(){window.removeEventListener("resize",this.handleWindowResize),_a("navigation-toggled",this.delayedResize)},methods:{closeActions(e){this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},async delayedResize(){await this.$nextTick(),this.handleWindowResize()},handleWindowResize(){if(!this.$refs.container)return;const e=this.breadcrumbsRefs.length,i=[],t=this.$refs.container.offsetWidth;let n=this.getTotalWidth();this.$refs.breadcrumb__actions&&(n+=this.$refs.breadcrumb__actions.offsetWidth);let c=n-t;c+=c>0?64:0;let m=0;const u=Math.floor(e/2);for(;c>0&&mf-d))||(this.hiddenIndices=i)},arraysEqual(e,i){if(e.length!==i.length)return!1;if(e===i)return!0;if(e===null||i===null)return!1;for(let t=0;te+this.getWidth(i.$el,t===this.breadcrumbsRefs.length-1),0)},getWidth(e,i){if(!e?.classList)return 0;const t=e.classList.contains(`${W}--hidden`);e.style.minWidth="auto",i&&(e.style.maxWidth="210px"),e.classList.remove(`${W}--hidden`);const n=e.offsetWidth;return t&&e.classList.add(`${W}--hidden`),e.style.minWidth="",e.style.maxWidth="",n},preventDefault(e){return e.preventDefault&&e.preventDefault(),!1},dragStart(e){return this.preventDefault(e)},dropped(e,i,t){t||this.$emit("dropped",e,i),this.menuBreadcrumbProps.open=!1;const n=document.querySelectorAll(`.${W}`);for(const c of n)c.classList.remove(`${W}--hovered`);return this.preventDefault(e)},dragOver(e){return this.preventDefault(e)},dragEnter(e,i){if(!i&&e.target.closest){const t=e.target.closest(`.${W}`);if(t.classList&&t.classList.contains(W)){const n=document.querySelectorAll(`.${W}`);for(const c of n)c.classList.remove(`${W}--hovered`);t.classList.add(`${W}--hovered`)}}},dragLeave(e,i){if(!i&&!e.target.contains(e.relatedTarget)&&e.target.closest){const t=e.target.closest(`.${W}`);if(t.contains(e.relatedTarget))return;t.classList&&t.classList.contains(W)&&t.classList.remove(`${W}--hovered`)}},hideCrumbs(){this.breadcrumbsRefs.forEach((e,i)=>{e?.$el?.classList&&(this.hiddenIndices.includes(i)?e.$el.classList.add(`${W}--hidden`):e.$el.classList.remove(`${W}--hidden`))})},isBreadcrumb(e){return e?.type?.name==="NcBreadcrumb"}},render(){let e=[];if(this.$slots.default?.().forEach(c=>{if(this.isBreadcrumb(c)){e.push(c);return}c?.type===oe&&c?.children?.forEach?.(m=>{this.isBreadcrumb(m)&&e.push(m)})}),e.length===0)return;e[0]=It(e[0],{icon:this.rootIcon,ref:"breadcrumbs"});const i=[];e=e.map((c,m)=>It(c,{ref:u=>{i[m]=u}}));const t=[...e];this.hiddenIndices.length&&t.splice(Math.round(e.length/2),0,me(Pe,{class:"dropdown",...this.menuBreadcrumbProps,"aria-hidden":!0,ref:"actionsBreadcrumb",key:"actions-breadcrumb-1",onDragenter:()=>{this.menuBreadcrumbProps.open=!0},onDragleave:this.closeActions,"onUpdate:open":c=>{this.menuBreadcrumbProps.open=c}},{default:()=>this.hiddenIndices.filter(c=>c<=e.length-1).map(c=>{const m=e[c],{to:u,href:f,disableDrop:d,name:p,...l}=m.props;delete l.ref;let g=Rt,E="";f&&(g=Lt,E=f),u&&(g=Dt,E=u);const I=me(St,{size:20});return me(g,{...l,class:W,href:f||null,to:u||null,draggable:!1,onDragstart:this.dragStart,onDrop:G=>this.dropped(G,E,d),onDragover:this.dragOver,onDragenter:G=>this.dragEnter(G,d),onDragleave:G=>this.dragLeave(G,d)},{default:()=>p,icon:()=>I})})}));const n=[me("nav",{"aria-label":this.ariaLabel},[me("ul",{class:"breadcrumb__crumbs"},[t])])];return Ua(this.$slots.actions?.())&&n.push(me("div",{class:"breadcrumb__actions",ref:"breadcrumb__actions"},this.$slots.actions?.())),this.breadcrumbsRefs=i,me("div",{class:["breadcrumb",{"breadcrumb--collapsed":this.hiddenIndices.length===e.length-2}],ref:"container"},n)}},Li=Ce(Ci,[["__scopeId","data-v-af2b1226"]]);function ue(e,i,t){return i in e?Object.defineProperty(e,i,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[i]=t,e}function kt(e,i,t){Di(e,i),i.set(e,t)}function Di(e,i){if(i.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function q(e,i){var t=na(e,i,"get");return Ri(e,t)}function Ri(e,i){return i.get?i.get.call(e):i.value}function Ft(e,i,t){var n=na(e,i,"set");return Oi(e,n,t),t}function na(e,i,t){if(!i.has(e))throw new TypeError("attempted to "+t+" private field on non-instance");return i.get(e)}function Oi(e,i,t){if(i.set)i.set.call(e,t);else{if(!i.writable)throw new TypeError("attempted to set read only private field");i.value=t}}var Si=typeof Symbol<"u"?Symbol.toStringTag:"@@toStringTag",Y=new WeakMap,_e=new WeakMap;class xe{constructor(i){var{executor:t=()=>{},internals:n=pt(),promise:c=new Promise((m,u)=>t(m,u,f=>{n.onCancelList.push(f)}))}=i;kt(this,Y,{writable:!0,value:void 0}),kt(this,_e,{writable:!0,value:void 0}),ue(this,Si,"CancelablePromise"),this.cancel=this.cancel.bind(this),Ft(this,Y,n),Ft(this,_e,c||new Promise((m,u)=>t(m,u,f=>{n.onCancelList.push(f)})))}then(i,t){return ke(q(this,_e).then(Re(i,q(this,Y)),Re(t,q(this,Y))),q(this,Y))}catch(i){return ke(q(this,_e).catch(Re(i,q(this,Y))),q(this,Y))}finally(i,t){return t&&q(this,Y).onCancelList.push(i),ke(q(this,_e).finally(Re(()=>{if(i)return t&&(q(this,Y).onCancelList=q(this,Y).onCancelList.filter(n=>n!==i)),i()},q(this,Y))),q(this,Y))}cancel(){q(this,Y).isCanceled=!0;var i=q(this,Y).onCancelList;q(this,Y).onCancelList=[];for(var t of i)if(typeof t=="function")try{t()}catch(n){console.error(n)}}isCanceled(){return q(this,Y).isCanceled===!0}}class ie extends xe{constructor(i){super({executor:i})}}ue(ie,"all",function(e){return Oe(e,Promise.all(e))}),ue(ie,"allSettled",function(e){return Oe(e,Promise.allSettled(e))}),ue(ie,"any",function(e){return Oe(e,Promise.any(e))}),ue(ie,"race",function(e){return Oe(e,Promise.race(e))}),ue(ie,"resolve",function(e){return $t(Promise.resolve(e))}),ue(ie,"reject",function(e){return $t(Promise.reject(e))}),ue(ie,"isCancelable",dt);function $t(e){return ke(e,pt())}function dt(e){return e instanceof ie||e instanceof xe}function Re(e,i){if(e)return t=>{if(!i.isCanceled){var n=e(t);return dt(n)&&i.onCancelList.push(n.cancel),n}return t}}function ke(e,i){return new xe({internals:i,promise:e})}function Oe(e,i){var t=pt();return t.onCancelList.push(()=>{for(var n of e)dt(n)&&n.cancel()}),new xe({internals:t,promise:i})}function pt(){return{isCanceled:!1,onCancelList:[]}}const ki=wa().setApp("@nextcloud/files").detectUser().build();var le=(e=>(e.Folder="folder",e.File="file",e))(le||{}),ee=(e=>(e[e.NONE=0]="NONE",e[e.CREATE=4]="CREATE",e[e.READ=1]="READ",e[e.UPDATE=2]="UPDATE",e[e.DELETE=8]="DELETE",e[e.SHARE=16]="SHARE",e[e.ALL=31]="ALL",e))(ee||{});const sa=function(e,i){return e.match(i)!==null},ce=(e,i)=>{if(e.id&&typeof e.id!="number")throw new Error("Invalid id type of value");if(!e.source)throw new Error("Missing mandatory source");try{new URL(e.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!e.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(e.displayname&&typeof e.displayname!="string")throw new Error("Invalid displayname type");if(e.mtime&&!(e.mtime instanceof Date))throw new Error("Invalid mtime type");if(e.crtime&&!(e.crtime instanceof Date))throw new Error("Invalid crtime type");if(!e.mime||typeof e.mime!="string"||!e.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in e&&typeof e.size!="number"&&e.size!==void 0)throw new Error("Invalid size type");if("permissions"in e&&e.permissions!==void 0&&!(typeof e.permissions=="number"&&e.permissions>=ee.NONE&&e.permissions<=ee.ALL))throw new Error("Invalid permissions");if(e.owner&&e.owner!==null&&typeof e.owner!="string")throw new Error("Invalid owner type");if(e.attributes&&typeof e.attributes!="object")throw new Error("Invalid attributes type");if(e.root&&typeof e.root!="string")throw new Error("Invalid root type");if(e.root&&!e.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(e.root&&!e.source.includes(e.root))throw new Error("Root must be part of the source");if(e.root&&sa(e.source,i)){const t=e.source.match(i)[0];if(!e.source.includes(Te(t,e.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(e.status&&!Object.values(mt).includes(e.status))throw new Error("Status must be a valid NodeStatus")};var mt=(e=>(e.NEW="new",e.FAILED="failed",e.LOADING="loading",e.LOCKED="locked",e))(mt||{});class Me{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;readonlyAttributes=Object.entries(Object.getOwnPropertyDescriptors(Me.prototype)).filter(i=>typeof i[1].get=="function"&&i[0]!=="__proto__").map(i=>i[0]);handler={set:(i,t,n)=>this.readonlyAttributes.includes(t)?!1:Reflect.set(i,t,n),deleteProperty:(i,t)=>this.readonlyAttributes.includes(t)?!1:Reflect.deleteProperty(i,t),get:(i,t,n)=>this.readonlyAttributes.includes(t)?(ki.warn(`Accessing "Node.attributes.${t}" is deprecated, access it directly on the Node instance.`),Reflect.get(this,t)):Reflect.get(i,t,n)};constructor(i,t){i.mime||(i.mime="application/octet-stream"),ce(i,t||this._knownDavService),this._data={displayname:i.attributes?.displayname,...i,attributes:{}},this._attributes=new Proxy(this._data.attributes,this.handler),this.update(i.attributes??{}),t&&(this._knownDavService=t)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:i}=new URL(this.source);return i+Ia(this.source.slice(i.length))}get basename(){return Na(this.source)}get displayname(){return this._data.displayname||this.basename}set displayname(i){ce({...this._data,displayname:i},this._knownDavService),this._data.displayname=i}get extension(){return Qt(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavResource&&(t=t.split(this._knownDavService).pop());const n=t.indexOf(this.root),c=this.root.replace(/\/$/,"");return De(t.slice(n+c.length)||"/")}const i=new URL(this.source);return De(i.pathname)}get mime(){return this._data.mime||"application/octet-stream"}set mime(i){i??="application/octet-stream",ce({...this._data,mime:i},this._knownDavService),this._data.mime=i}get mtime(){return this._data.mtime}set mtime(i){ce({...this._data,mtime:i},this._knownDavService),this._data.mtime=i}get crtime(){return this._data.crtime}get size(){return this._data.size}set size(i){ce({...this._data,size:i},this._knownDavService),this.updateMtime(),this._data.size=i}get attributes(){return this._attributes}get permissions(){return this.owner===null&&!this.isDavResource?ee.READ:this._data.permissions!==void 0?this._data.permissions:ee.NONE}set permissions(i){ce({...this._data,permissions:i},this._knownDavService),this.updateMtime(),this._data.permissions=i}get owner(){return this.isDavResource?this._data.owner:null}get isDavResource(){return sa(this.source,this._knownDavService)}get isDavRessource(){return this.isDavResource}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavResource&&De(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let i=this.source;this.isDavResource&&(i=i.split(this._knownDavService).pop());const t=i.indexOf(this.root),n=this.root.replace(/\/$/,"");return i.slice(t+n.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id}get status(){return this._data?.status}set status(i){ce({...this._data,status:i},this._knownDavService),this._data.status=i}get data(){return structuredClone(this._data)}move(i){ce({...this._data,source:i},this._knownDavService);const t=this.basename;this._data.source=i,this.displayname===t&&this.basename!==t&&(this.displayname=this.basename)}rename(i){if(i.includes("/"))throw new Error("Invalid basename");this.move(De(this.source)+"/"+i)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}update(i){for(const[t,n]of Object.entries(i))try{n===void 0?delete this.attributes[t]:this.attributes[t]=n}catch(c){if(c instanceof TypeError)continue;throw c}}}class ht extends Me{get type(){return le.File}clone(){return new ht(this.data)}}class ft extends Me{constructor(i){super({...i,mime:"httpd/unix-directory"})}get type(){return le.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}clone(){return new ft(this.data)}}const Fi=function(e=""){let i=ee.NONE;return e&&((e.includes("C")||e.includes("K"))&&(i|=ee.CREATE),e.includes("G")&&(i|=ee.READ),(e.includes("W")||e.includes("N")||e.includes("V"))&&(i|=ee.UPDATE),e.includes("D")&&(i|=ee.DELETE),e.includes("R")&&(i|=ee.SHARE)),i},$i=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],Pi={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},vt=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...$i]),window._nc_dav_properties.map(e=>`<${e} />`).join(" ")},gt=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...Pi}),Object.keys(window._nc_dav_namespaces).map(e=>`xmlns:${e}="${window._nc_dav_namespaces?.[e]}"`).join(" ")},oa=function(){return` - +import{j as de,E as _,o as v,F as $,x as he,y as w,e as fe,f as M,r as je,c as x,b as P,v as Yt,w as k,H as T,G as Ee,z as ae,O as Se,M as oe,aA as It,aa as me,aq as _a,I as ba,g as wa,i as Ne,A as ya,B as Be,C as Ta,ae as Ia,aB as Na,aC as Qt,ad as De,am as Te,D as Aa,aD as Ca,ay as La,aw as Da,n as Ra,ac as Oa,a6 as Zt,q as B,al as Sa,ai as we,s as O,an as st,k as Kt,a5 as Jt,a9 as Ae,a7 as ka,l as ea,p as Fa,N as $e,m as $a,u as Nt,Q as Pa,aE as Ba,ak as Ma,R as xa}from"./string_decoder-BY7m9-pN.chunk.mjs";import{r as lt,M as Ua,O as A,N as za,P as Ie,s as ct}from"./index-JpgrUA2Z-Bcb7_yWp.chunk.mjs";import{P as Va,a as Ga}from"./index-B3Kbhk8r.chunk.mjs";import{b as Ce,f as ta,c as Xa,e as ut}from"./_plugin-vue_export-helper-CXvX4IZ0.chunk.mjs";import{d as ja,B as qe}from"./index-DpibbgL8.chunk.mjs";import{a as qa,u as Ha,_ as Wa}from"./index-HgP8VlAw.chunk.mjs";import{b as ye,N as aa}from"./NcNoteCard-CVhtNL04-B9GbPOf_.chunk.mjs";import{N as ia}from"./NcCheckboxRadioSwitch-BCSKF7Tk-CeXacauf.chunk.mjs";import{j as Ya,k as Qa,l as Za,n as Ka,o as Ja,p as ei,q as At,r as ti,s as ai}from"./mdi-BK4BBTPr.chunk.mjs";import{S as Ct}from"./ShareType-suoNfd7y.chunk.mjs";import{c as ra}from"./index-CYNbcBtJ.chunk.mjs";import{a as Lt,b as Dt,N as Rt}from"./NcActionRouter-oT-YU_jf-Bo7WEQMz.chunk.mjs";import{N as ii}from"./NcSelect-Czzsi3P_-D8O6yYfs.chunk.mjs";import{_ as ri}from"./TrashCanOutline-B3cqckGn.chunk.mjs";import"./NcPasswordField-djttkA5Q-C4ZiKUpl.chunk.mjs";import"./NcInputField-Bwsh2aHY-lfIcluT2.chunk.mjs";const ni=["aria-labelledby"],si={key:0,class:"empty-content__icon","aria-hidden":"true"},oi=["id"],li={key:2,class:"empty-content__description"},ci={key:3,class:"empty-content__action"},ui=de({__name:"NcEmptyContent",props:{description:{default:""},name:{default:""}},setup(e){const i=ta();return(t,n)=>(v(),_("div",{"aria-labelledby":w(i),class:"empty-content",role:"note"},[t.$slots.icon?(v(),_("div",si,[he(t.$slots,"icon",{},void 0,!0)])):$("",!0),t.name!==""||t.$slots.name?(v(),_("div",{key:1,id:w(i),class:"empty-content__name"},[he(t.$slots,"name",{},()=>[fe(M(t.name),1)],!0)],8,oi)):$("",!0),t.description!==""||t.$slots.description?(v(),_("p",li,[he(t.$slots,"description",{},()=>[fe(M(t.description),1)],!0)])):$("",!0),t.$slots.action?(v(),_("div",ci,[he(t.$slots,"action",{},void 0,!0)])):$("",!0)],8,ni))}}),Ot=Ce(ui,[["__scopeId","data-v-b101d636"]]),di={name:"ChevronRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pi=["aria-hidden","aria-label"],mi=["fill","width","height"],hi={d:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"},fi={key:0};function vi(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon chevron-right-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",hi,[t.title?(v(),_("title",fi,M(t.title),1)):$("",!0)])],8,mi))],16,pi)}const Ei=Ce(di,[["render",vi]]),gi={name:"NcBreadcrumb",components:{NcActions:lt,ChevronRight:Ei,NcButton:ye},inheritAttrs:!1,props:{name:{type:String,required:!0},title:{type:String,default:null},to:{type:[String,Object],default:void 0},href:{type:String,default:void 0},icon:{type:String,default:""},forceIconText:{type:Boolean,default:!1},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1},class:{type:[String,Array,Object],default:""}},emits:["dragenter","dragleave","dropped","update:open"],setup(){const e=ta();return{actionsContainer:`.vue-crumb[data-crumb-id="${e}"]`,crumbId:e}},data(){return{hovering:!1}},computed:{linkAttributes(){return this.to?{to:this.to,...this.$attrs}:this.href?{href:this.href,...this.$attrs}:this.$attrs}},methods:{onOpenChange(e){this.$emit("update:open",e)},dropped(e){return this.disableDrop||(this.$emit("dropped",e,this.to||this.href),this.$parent.$emit("dropped",e,this.to||this.href),this.hovering=!1),!1},dragEnter(e){this.$emit("dragenter",e),!this.disableDrop&&(this.hovering=!0)},dragLeave(e){this.$emit("dragleave",e),!this.disableDrop&&(e.target.contains(e.relatedTarget)||this.$refs.crumb.contains(e.relatedTarget)||(this.hovering=!1))}}},_i=["data-crumb-id"];function bi(e,i,t,n,c,m){const u=je("NcButton"),f=je("NcActions"),d=je("ChevronRight");return v(),_("li",{ref:"crumb",class:Ee(["vue-crumb",[{"vue-crumb--hovered":c.hovering},e.$props.class]]),"data-crumb-id":n.crumbId,draggable:"false",onDragstart:Se(()=>{},["prevent"]),onDrop:i[0]||(i[0]=Se((...p)=>m.dropped&&m.dropped(...p),["prevent"])),onDragover:Se(()=>{},["prevent"]),onDragenter:i[1]||(i[1]=(...p)=>m.dragEnter&&m.dragEnter(...p)),onDragleave:i[2]||(i[2]=(...p)=>m.dragLeave&&m.dragLeave(...p))},[(t.name||t.icon||e.$slots.icon)&&!e.$slots.default?(v(),x(u,ae({key:0,"aria-label":t.icon?t.name:void 0,variant:"tertiary"},m.linkAttributes),Yt({_:2},[e.$slots.icon||t.icon?{name:"icon",fn:k(()=>[he(e.$slots,"icon",{},()=>[T("span",{class:Ee([t.icon,"icon"])},null,2)],!0)]),key:"0"}:void 0,!(e.$slots.icon||t.icon)||t.forceIconText?{name:"default",fn:k(()=>[fe(M(t.name),1)]),key:"1"}:void 0]),1040,["aria-label"])):$("",!0),e.$slots.default?(v(),x(f,{key:1,ref:"actions",container:n.actionsContainer,"force-menu":t.forceMenu,"force-name":"","menu-name":t.name,open:t.open,title:t.title,variant:"tertiary","onUpdate:open":m.onOpenChange},{icon:k(()=>[he(e.$slots,"menu-icon",{},void 0,!0)]),default:k(()=>[he(e.$slots,"default",{},void 0,!0)]),_:3},8,["container","force-menu","menu-name","open","title","onUpdate:open"])):$("",!0),P(d,{class:"vue-crumb__separator",size:20})],42,_i)}const Pe=Ce(gi,[["render",bi],["__scopeId","data-v-28ef52a4"]]),wi={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},yi=["aria-hidden","aria-label"],Ti=["fill","width","height"],Ii={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},Ni={key:0};function Ai(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",Ii,[t.title?(v(),_("title",Ni,M(t.title),1)):$("",!0)])],8,Ti))],16,yi)}const St=Ce(wi,[["render",Ai]]),W="vue-crumb",Ci={name:"NcBreadcrumbs",components:{NcActions:lt,NcActionButton:Rt,NcActionRouter:Dt,NcActionLink:Lt,NcBreadcrumb:Pe,IconFolder:St},props:{rootIcon:{type:String,default:"icon-home"},ariaLabel:{type:String,default:null}},emits:["dropped"],data(){return{hiddenIndices:[],menuBreadcrumbProps:{name:"",forceMenu:!0,disableDrop:!0,open:!1},breadcrumbsRefs:[]}},created(){window.addEventListener("resize",ja(()=>{this.handleWindowResize()},100)),ba("navigation-toggled",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.$nextTick(()=>{this.hideCrumbs()})},beforeUnmount(){window.removeEventListener("resize",this.handleWindowResize),_a("navigation-toggled",this.delayedResize)},methods:{closeActions(e){this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},async delayedResize(){await this.$nextTick(),this.handleWindowResize()},handleWindowResize(){if(!this.$refs.container)return;const e=this.breadcrumbsRefs.length,i=[],t=this.$refs.container.offsetWidth;let n=this.getTotalWidth();this.$refs.breadcrumb__actions&&(n+=this.$refs.breadcrumb__actions.offsetWidth);let c=n-t;c+=c>0?64:0;let m=0;const u=Math.floor(e/2);for(;c>0&&mf-d))||(this.hiddenIndices=i)},arraysEqual(e,i){if(e.length!==i.length)return!1;if(e===i)return!0;if(e===null||i===null)return!1;for(let t=0;te+this.getWidth(i.$el,t===this.breadcrumbsRefs.length-1),0)},getWidth(e,i){if(!e?.classList)return 0;const t=e.classList.contains(`${W}--hidden`);e.style.minWidth="auto",i&&(e.style.maxWidth="210px"),e.classList.remove(`${W}--hidden`);const n=e.offsetWidth;return t&&e.classList.add(`${W}--hidden`),e.style.minWidth="",e.style.maxWidth="",n},preventDefault(e){return e.preventDefault&&e.preventDefault(),!1},dragStart(e){return this.preventDefault(e)},dropped(e,i,t){t||this.$emit("dropped",e,i),this.menuBreadcrumbProps.open=!1;const n=document.querySelectorAll(`.${W}`);for(const c of n)c.classList.remove(`${W}--hovered`);return this.preventDefault(e)},dragOver(e){return this.preventDefault(e)},dragEnter(e,i){if(!i&&e.target.closest){const t=e.target.closest(`.${W}`);if(t.classList&&t.classList.contains(W)){const n=document.querySelectorAll(`.${W}`);for(const c of n)c.classList.remove(`${W}--hovered`);t.classList.add(`${W}--hovered`)}}},dragLeave(e,i){if(!i&&!e.target.contains(e.relatedTarget)&&e.target.closest){const t=e.target.closest(`.${W}`);if(t.contains(e.relatedTarget))return;t.classList&&t.classList.contains(W)&&t.classList.remove(`${W}--hovered`)}},hideCrumbs(){this.breadcrumbsRefs.forEach((e,i)=>{e?.$el?.classList&&(this.hiddenIndices.includes(i)?e.$el.classList.add(`${W}--hidden`):e.$el.classList.remove(`${W}--hidden`))})},isBreadcrumb(e){return e?.type?.name==="NcBreadcrumb"}},render(){let e=[];if(this.$slots.default?.().forEach(c=>{if(this.isBreadcrumb(c)){e.push(c);return}c?.type===oe&&c?.children?.forEach?.(m=>{this.isBreadcrumb(m)&&e.push(m)})}),e.length===0)return;e[0]=It(e[0],{icon:this.rootIcon,ref:"breadcrumbs"});const i=[];e=e.map((c,m)=>It(c,{ref:u=>{i[m]=u}}));const t=[...e];this.hiddenIndices.length&&t.splice(Math.round(e.length/2),0,me(Pe,{class:"dropdown",...this.menuBreadcrumbProps,"aria-hidden":!0,ref:"actionsBreadcrumb",key:"actions-breadcrumb-1",onDragenter:()=>{this.menuBreadcrumbProps.open=!0},onDragleave:this.closeActions,"onUpdate:open":c=>{this.menuBreadcrumbProps.open=c}},{default:()=>this.hiddenIndices.filter(c=>c<=e.length-1).map(c=>{const m=e[c],{to:u,href:f,disableDrop:d,name:p,...l}=m.props;delete l.ref;let E=Rt,g="";f&&(E=Lt,g=f),u&&(E=Dt,g=u);const I=me(St,{size:20});return me(E,{...l,class:W,href:f||null,to:u||null,draggable:!1,onDragstart:this.dragStart,onDrop:G=>this.dropped(G,g,d),onDragover:this.dragOver,onDragenter:G=>this.dragEnter(G,d),onDragleave:G=>this.dragLeave(G,d)},{default:()=>p,icon:()=>I})})}));const n=[me("nav",{"aria-label":this.ariaLabel},[me("ul",{class:"breadcrumb__crumbs"},[t])])];return Ua(this.$slots.actions?.())&&n.push(me("div",{class:"breadcrumb__actions",ref:"breadcrumb__actions"},this.$slots.actions?.())),this.breadcrumbsRefs=i,me("div",{class:["breadcrumb",{"breadcrumb--collapsed":this.hiddenIndices.length===e.length-2}],ref:"container"},n)}},Li=Ce(Ci,[["__scopeId","data-v-af2b1226"]]);function ue(e,i,t){return i in e?Object.defineProperty(e,i,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[i]=t,e}function kt(e,i,t){Di(e,i),i.set(e,t)}function Di(e,i){if(i.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function q(e,i){var t=na(e,i,"get");return Ri(e,t)}function Ri(e,i){return i.get?i.get.call(e):i.value}function Ft(e,i,t){var n=na(e,i,"set");return Oi(e,n,t),t}function na(e,i,t){if(!i.has(e))throw new TypeError("attempted to "+t+" private field on non-instance");return i.get(e)}function Oi(e,i,t){if(i.set)i.set.call(e,t);else{if(!i.writable)throw new TypeError("attempted to set read only private field");i.value=t}}var Si=typeof Symbol<"u"?Symbol.toStringTag:"@@toStringTag",Y=new WeakMap,_e=new WeakMap;class Me{constructor(i){var{executor:t=()=>{},internals:n=pt(),promise:c=new Promise((m,u)=>t(m,u,f=>{n.onCancelList.push(f)}))}=i;kt(this,Y,{writable:!0,value:void 0}),kt(this,_e,{writable:!0,value:void 0}),ue(this,Si,"CancelablePromise"),this.cancel=this.cancel.bind(this),Ft(this,Y,n),Ft(this,_e,c||new Promise((m,u)=>t(m,u,f=>{n.onCancelList.push(f)})))}then(i,t){return ke(q(this,_e).then(Re(i,q(this,Y)),Re(t,q(this,Y))),q(this,Y))}catch(i){return ke(q(this,_e).catch(Re(i,q(this,Y))),q(this,Y))}finally(i,t){return t&&q(this,Y).onCancelList.push(i),ke(q(this,_e).finally(Re(()=>{if(i)return t&&(q(this,Y).onCancelList=q(this,Y).onCancelList.filter(n=>n!==i)),i()},q(this,Y))),q(this,Y))}cancel(){q(this,Y).isCanceled=!0;var i=q(this,Y).onCancelList;q(this,Y).onCancelList=[];for(var t of i)if(typeof t=="function")try{t()}catch(n){console.error(n)}}isCanceled(){return q(this,Y).isCanceled===!0}}class ie extends Me{constructor(i){super({executor:i})}}ue(ie,"all",function(e){return Oe(e,Promise.all(e))}),ue(ie,"allSettled",function(e){return Oe(e,Promise.allSettled(e))}),ue(ie,"any",function(e){return Oe(e,Promise.any(e))}),ue(ie,"race",function(e){return Oe(e,Promise.race(e))}),ue(ie,"resolve",function(e){return $t(Promise.resolve(e))}),ue(ie,"reject",function(e){return $t(Promise.reject(e))}),ue(ie,"isCancelable",dt);function $t(e){return ke(e,pt())}function dt(e){return e instanceof ie||e instanceof Me}function Re(e,i){if(e)return t=>{if(!i.isCanceled){var n=e(t);return dt(n)&&i.onCancelList.push(n.cancel),n}return t}}function ke(e,i){return new Me({internals:i,promise:e})}function Oe(e,i){var t=pt();return t.onCancelList.push(()=>{for(var n of e)dt(n)&&n.cancel()}),new Me({internals:t,promise:i})}function pt(){return{isCanceled:!1,onCancelList:[]}}const ki=wa().setApp("@nextcloud/files").detectUser().build();var le=(e=>(e.Folder="folder",e.File="file",e))(le||{}),ee=(e=>(e[e.NONE=0]="NONE",e[e.CREATE=4]="CREATE",e[e.READ=1]="READ",e[e.UPDATE=2]="UPDATE",e[e.DELETE=8]="DELETE",e[e.SHARE=16]="SHARE",e[e.ALL=31]="ALL",e))(ee||{});const sa=function(e,i){return e.match(i)!==null},ce=(e,i)=>{if(e.id&&typeof e.id!="number")throw new Error("Invalid id type of value");if(!e.source)throw new Error("Missing mandatory source");try{new URL(e.source)}catch{throw new Error("Invalid source format, source must be a valid URL")}if(!e.source.startsWith("http"))throw new Error("Invalid source format, only http(s) is supported");if(e.displayname&&typeof e.displayname!="string")throw new Error("Invalid displayname type");if(e.mtime&&!(e.mtime instanceof Date))throw new Error("Invalid mtime type");if(e.crtime&&!(e.crtime instanceof Date))throw new Error("Invalid crtime type");if(!e.mime||typeof e.mime!="string"||!e.mime.match(/^[-\w.]+\/[-+\w.]+$/gi))throw new Error("Missing or invalid mandatory mime");if("size"in e&&typeof e.size!="number"&&e.size!==void 0)throw new Error("Invalid size type");if("permissions"in e&&e.permissions!==void 0&&!(typeof e.permissions=="number"&&e.permissions>=ee.NONE&&e.permissions<=ee.ALL))throw new Error("Invalid permissions");if(e.owner&&e.owner!==null&&typeof e.owner!="string")throw new Error("Invalid owner type");if(e.attributes&&typeof e.attributes!="object")throw new Error("Invalid attributes type");if(e.root&&typeof e.root!="string")throw new Error("Invalid root type");if(e.root&&!e.root.startsWith("/"))throw new Error("Root must start with a leading slash");if(e.root&&!e.source.includes(e.root))throw new Error("Root must be part of the source");if(e.root&&sa(e.source,i)){const t=e.source.match(i)[0];if(!e.source.includes(Te(t,e.root)))throw new Error("The root must be relative to the service. e.g /files/emma")}if(e.status&&!Object.values(mt).includes(e.status))throw new Error("Status must be a valid NodeStatus")};var mt=(e=>(e.NEW="new",e.FAILED="failed",e.LOADING="loading",e.LOCKED="locked",e))(mt||{});class xe{_data;_attributes;_knownDavService=/(remote|public)\.php\/(web)?dav/i;readonlyAttributes=Object.entries(Object.getOwnPropertyDescriptors(xe.prototype)).filter(i=>typeof i[1].get=="function"&&i[0]!=="__proto__").map(i=>i[0]);handler={set:(i,t,n)=>this.readonlyAttributes.includes(t)?!1:Reflect.set(i,t,n),deleteProperty:(i,t)=>this.readonlyAttributes.includes(t)?!1:Reflect.deleteProperty(i,t),get:(i,t,n)=>this.readonlyAttributes.includes(t)?(ki.warn(`Accessing "Node.attributes.${t}" is deprecated, access it directly on the Node instance.`),Reflect.get(this,t)):Reflect.get(i,t,n)};constructor(i,t){i.mime||(i.mime="application/octet-stream"),ce(i,t||this._knownDavService),this._data={displayname:i.attributes?.displayname,...i,attributes:{}},this._attributes=new Proxy(this._data.attributes,this.handler),this.update(i.attributes??{}),t&&(this._knownDavService=t)}get source(){return this._data.source.replace(/\/$/i,"")}get encodedSource(){const{origin:i}=new URL(this.source);return i+Ia(this.source.slice(i.length))}get basename(){return Na(this.source)}get displayname(){return this._data.displayname||this.basename}set displayname(i){ce({...this._data,displayname:i},this._knownDavService),this._data.displayname=i}get extension(){return Qt(this.source)}get dirname(){if(this.root){let t=this.source;this.isDavResource&&(t=t.split(this._knownDavService).pop());const n=t.indexOf(this.root),c=this.root.replace(/\/$/,"");return De(t.slice(n+c.length)||"/")}const i=new URL(this.source);return De(i.pathname)}get mime(){return this._data.mime||"application/octet-stream"}set mime(i){i??="application/octet-stream",ce({...this._data,mime:i},this._knownDavService),this._data.mime=i}get mtime(){return this._data.mtime}set mtime(i){ce({...this._data,mtime:i},this._knownDavService),this._data.mtime=i}get crtime(){return this._data.crtime}get size(){return this._data.size}set size(i){ce({...this._data,size:i},this._knownDavService),this.updateMtime(),this._data.size=i}get attributes(){return this._attributes}get permissions(){return this.owner===null&&!this.isDavResource?ee.READ:this._data.permissions!==void 0?this._data.permissions:ee.NONE}set permissions(i){ce({...this._data,permissions:i},this._knownDavService),this.updateMtime(),this._data.permissions=i}get owner(){return this.isDavResource?this._data.owner:null}get isDavResource(){return sa(this.source,this._knownDavService)}get isDavRessource(){return this.isDavResource}get root(){return this._data.root?this._data.root.replace(/^(.+)\/$/,"$1"):this.isDavResource&&De(this.source).split(this._knownDavService).pop()||null}get path(){if(this.root){let i=this.source;this.isDavResource&&(i=i.split(this._knownDavService).pop());const t=i.indexOf(this.root),n=this.root.replace(/\/$/,"");return i.slice(t+n.length)||"/"}return(this.dirname+"/"+this.basename).replace(/\/\//g,"/")}get fileid(){return this._data?.id}get status(){return this._data?.status}set status(i){ce({...this._data,status:i},this._knownDavService),this._data.status=i}get data(){return structuredClone(this._data)}move(i){ce({...this._data,source:i},this._knownDavService);const t=this.basename;this._data.source=i,this.displayname===t&&this.basename!==t&&(this.displayname=this.basename)}rename(i){if(i.includes("/"))throw new Error("Invalid basename");this.move(De(this.source)+"/"+i)}updateMtime(){this._data.mtime&&(this._data.mtime=new Date)}update(i){for(const[t,n]of Object.entries(i))try{n===void 0?delete this.attributes[t]:this.attributes[t]=n}catch(c){if(c instanceof TypeError)continue;throw c}}}class ht extends xe{get type(){return le.File}clone(){return new ht(this.data)}}class ft extends xe{constructor(i){super({...i,mime:"httpd/unix-directory"})}get type(){return le.Folder}get extension(){return null}get mime(){return"httpd/unix-directory"}clone(){return new ft(this.data)}}const Fi=function(e=""){let i=ee.NONE;return e&&((e.includes("C")||e.includes("K"))&&(i|=ee.CREATE),e.includes("G")&&(i|=ee.READ),(e.includes("W")||e.includes("N")||e.includes("V"))&&(i|=ee.UPDATE),e.includes("D")&&(i|=ee.DELETE),e.includes("R")&&(i|=ee.SHARE)),i},$i=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],Pi={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"},vt=function(){return typeof window._nc_dav_properties>"u"&&(window._nc_dav_properties=[...$i]),window._nc_dav_properties.map(e=>`<${e} />`).join(" ")},Et=function(){return typeof window._nc_dav_namespaces>"u"&&(window._nc_dav_namespaces={...Pi}),Object.keys(window._nc_dav_namespaces).map(e=>`xmlns:${e}="${window._nc_dav_namespaces?.[e]}"`).join(" ")},oa=function(){return` + ${vt()} `},Bi=function(){return` - + ${vt()} 1 - `},xi=function(e){return` -`},Mi=function(e){return` + @@ -65,13 +65,13 @@ import{j as de,E as _,o as v,F as $,x as he,y as w,e as fe,f as x,r as je,c as M 0 -`};function Mi(){return Ne()?`/files/${ya()}`:`/files/${Be()?.uid}`}const Le=Mi();function Ui(){const e=Xa("dav");return Ne()?e.replace("remote.php","public.php"):e}const la=Ui(),zi=function(e=la,i={}){const t=qa(e,{headers:i});function n(c){t.setHeaders({...i,"X-Requested-With":"XMLHttpRequest",requesttoken:c??""})}return Aa(n),n(Ta()),Ha().patch("fetch",(c,m)=>{const u=m.headers;return u?.method&&(m.method=u.method,delete u.method),fetch(c,m)}),t},Vi=(e,i="/",t=Le)=>{const n=new AbortController;return new ie(async(c,m,u)=>{u(()=>n.abort());try{const f=(await e.getDirectoryContents(`${t}${i}`,{signal:n.signal,details:!0,data:Bi(),headers:{method:"REPORT"},includeSelf:!0})).data.filter(d=>d.filename!==i).map(d=>Ue(d,t));c(f)}catch(f){m(f)}})},Ue=function(e,i=Le,t=la){let n=Be()?.uid;if(Ne())n=n??"anonymous";else if(!n)throw new Error("No user id found");const c=e.props,m=Fi(c?.permissions),u=String(c?.["owner-id"]||n),f=c.fileid||0,d=new Date(Date.parse(e.lastmod)),p=new Date(Date.parse(c.creationdate)),l={id:f,source:`${t}${e.filename}`,mtime:!isNaN(d.getTime())&&d.getTime()!==0?d:void 0,crtime:!isNaN(p.getTime())&&p.getTime()!==0?p:void 0,mime:e.mime||"application/octet-stream",displayname:c.displayname!==void 0?String(c.displayname):void 0,size:c?.size||Number.parseInt(c.getcontentlength||"0"),status:f<0?mt.FAILED:void 0,permissions:m,owner:u,root:i,attributes:{...e,...c,hasPreview:c?.["has-preview"]}};return delete l.attributes?.props,e.type==="file"?new ht(l):new ft(l)};var Gi=Ca();const Xi=La(Gi);var He={},Pt,Bt;function ca(){return Bt||(Bt=1,Pt=typeof Da=="object"&&He&&He.NODE_DEBUG&&/\bsemver\b/i.test(He.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{}),Pt}var We,xt;function ua(){if(xt)return We;xt=1;const e="2.0.0",i=256,t=Number.MAX_SAFE_INTEGER||9007199254740991,n=16,c=i-6;return We={MAX_LENGTH:i,MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:c,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:e,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},We}var Ye={exports:{}},Mt;function ji(){return Mt||(Mt=1,(function(e,i){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:c}=ua(),m=ca();i=e.exports={};const u=i.re=[],f=i.safeRe=[],d=i.src=[],p=i.safeSrc=[],l=i.t={};let g=0;const E="[a-zA-Z0-9-]",I=[["\\s",1],["\\d",c],[E,n]],G=H=>{for(const[X,te]of I)H=H.split(`${X}*`).join(`${X}{0,${te}}`).split(`${X}+`).join(`${X}{1,${te}}`);return H},b=(H,X,te)=>{const J=G(X),C=g++;m(H,C,X),l[H]=C,d[C]=X,p[C]=J,u[C]=new RegExp(X,te?"g":void 0),f[C]=new RegExp(J,te?"g":void 0)};b("NUMERICIDENTIFIER","0|[1-9]\\d*"),b("NUMERICIDENTIFIERLOOSE","\\d+"),b("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${E}*`),b("MAINVERSION",`(${d[l.NUMERICIDENTIFIER]})\\.(${d[l.NUMERICIDENTIFIER]})\\.(${d[l.NUMERICIDENTIFIER]})`),b("MAINVERSIONLOOSE",`(${d[l.NUMERICIDENTIFIERLOOSE]})\\.(${d[l.NUMERICIDENTIFIERLOOSE]})\\.(${d[l.NUMERICIDENTIFIERLOOSE]})`),b("PRERELEASEIDENTIFIER",`(?:${d[l.NONNUMERICIDENTIFIER]}|${d[l.NUMERICIDENTIFIER]})`),b("PRERELEASEIDENTIFIERLOOSE",`(?:${d[l.NONNUMERICIDENTIFIER]}|${d[l.NUMERICIDENTIFIERLOOSE]})`),b("PRERELEASE",`(?:-(${d[l.PRERELEASEIDENTIFIER]}(?:\\.${d[l.PRERELEASEIDENTIFIER]})*))`),b("PRERELEASELOOSE",`(?:-?(${d[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${d[l.PRERELEASEIDENTIFIERLOOSE]})*))`),b("BUILDIDENTIFIER",`${E}+`),b("BUILD",`(?:\\+(${d[l.BUILDIDENTIFIER]}(?:\\.${d[l.BUILDIDENTIFIER]})*))`),b("FULLPLAIN",`v?${d[l.MAINVERSION]}${d[l.PRERELEASE]}?${d[l.BUILD]}?`),b("FULL",`^${d[l.FULLPLAIN]}$`),b("LOOSEPLAIN",`[v=\\s]*${d[l.MAINVERSIONLOOSE]}${d[l.PRERELEASELOOSE]}?${d[l.BUILD]}?`),b("LOOSE",`^${d[l.LOOSEPLAIN]}$`),b("GTLT","((?:<|>)?=?)"),b("XRANGEIDENTIFIERLOOSE",`${d[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),b("XRANGEIDENTIFIER",`${d[l.NUMERICIDENTIFIER]}|x|X|\\*`),b("XRANGEPLAIN",`[v=\\s]*(${d[l.XRANGEIDENTIFIER]})(?:\\.(${d[l.XRANGEIDENTIFIER]})(?:\\.(${d[l.XRANGEIDENTIFIER]})(?:${d[l.PRERELEASE]})?${d[l.BUILD]}?)?)?`),b("XRANGEPLAINLOOSE",`[v=\\s]*(${d[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[l.XRANGEIDENTIFIERLOOSE]})(?:${d[l.PRERELEASELOOSE]})?${d[l.BUILD]}?)?)?`),b("XRANGE",`^${d[l.GTLT]}\\s*${d[l.XRANGEPLAIN]}$`),b("XRANGELOOSE",`^${d[l.GTLT]}\\s*${d[l.XRANGEPLAINLOOSE]}$`),b("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),b("COERCE",`${d[l.COERCEPLAIN]}(?:$|[^\\d])`),b("COERCEFULL",d[l.COERCEPLAIN]+`(?:${d[l.PRERELEASE]})?(?:${d[l.BUILD]})?(?:$|[^\\d])`),b("COERCERTL",d[l.COERCE],!0),b("COERCERTLFULL",d[l.COERCEFULL],!0),b("LONETILDE","(?:~>?)"),b("TILDETRIM",`(\\s*)${d[l.LONETILDE]}\\s+`,!0),i.tildeTrimReplace="$1~",b("TILDE",`^${d[l.LONETILDE]}${d[l.XRANGEPLAIN]}$`),b("TILDELOOSE",`^${d[l.LONETILDE]}${d[l.XRANGEPLAINLOOSE]}$`),b("LONECARET","(?:\\^)"),b("CARETTRIM",`(\\s*)${d[l.LONECARET]}\\s+`,!0),i.caretTrimReplace="$1^",b("CARET",`^${d[l.LONECARET]}${d[l.XRANGEPLAIN]}$`),b("CARETLOOSE",`^${d[l.LONECARET]}${d[l.XRANGEPLAINLOOSE]}$`),b("COMPARATORLOOSE",`^${d[l.GTLT]}\\s*(${d[l.LOOSEPLAIN]})$|^$`),b("COMPARATOR",`^${d[l.GTLT]}\\s*(${d[l.FULLPLAIN]})$|^$`),b("COMPARATORTRIM",`(\\s*)${d[l.GTLT]}\\s*(${d[l.LOOSEPLAIN]}|${d[l.XRANGEPLAIN]})`,!0),i.comparatorTrimReplace="$1$2$3",b("HYPHENRANGE",`^\\s*(${d[l.XRANGEPLAIN]})\\s+-\\s+(${d[l.XRANGEPLAIN]})\\s*$`),b("HYPHENRANGELOOSE",`^\\s*(${d[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${d[l.XRANGEPLAINLOOSE]})\\s*$`),b("STAR","(<|>)?=?\\s*\\*"),b("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),b("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Ye,Ye.exports)),Ye.exports}var Qe,Ut;function qi(){if(Ut)return Qe;Ut=1;const e=Object.freeze({loose:!0}),i=Object.freeze({});return Qe=t=>t?typeof t!="object"?e:t:i,Qe}var Ze,zt;function Hi(){if(zt)return Ze;zt=1;const e=/^[0-9]+$/,i=(t,n)=>{if(typeof t=="number"&&typeof n=="number")return t===n?0:ti(n,t)},Ze}var Ke,Vt;function da(){if(Vt)return Ke;Vt=1;const e=ca(),{MAX_LENGTH:i,MAX_SAFE_INTEGER:t}=ua(),{safeRe:n,t:c}=ji(),m=qi(),{compareIdentifiers:u}=Hi();class f{constructor(p,l){if(l=m(l),p instanceof f){if(p.loose===!!l.loose&&p.includePrerelease===!!l.includePrerelease)return p;p=p.version}else if(typeof p!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof p}".`);if(p.length>i)throw new TypeError(`version is longer than ${i} characters`);e("SemVer",p,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const g=p.trim().match(l.loose?n[c.LOOSE]:n[c.FULL]);if(!g)throw new TypeError(`Invalid Version: ${p}`);if(this.raw=p,this.major=+g[1],this.minor=+g[2],this.patch=+g[3],this.major>t||this.major<0)throw new TypeError("Invalid major version");if(this.minor>t||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>t||this.patch<0)throw new TypeError("Invalid patch version");g[4]?this.prerelease=g[4].split(".").map(E=>{if(/^[0-9]+$/.test(E)){const I=+E;if(I>=0&&Ip.major?1:this.minorp.minor?1:this.patchp.patch?1:0}comparePre(p){if(p instanceof f||(p=new f(p,this.options)),this.prerelease.length&&!p.prerelease.length)return-1;if(!this.prerelease.length&&p.prerelease.length)return 1;if(!this.prerelease.length&&!p.prerelease.length)return 0;let l=0;do{const g=this.prerelease[l],E=p.prerelease[l];if(e("prerelease compare",l,g,E),g===void 0&&E===void 0)return 0;if(E===void 0)return 1;if(g===void 0)return-1;if(g!==E)return u(g,E)}while(++l)}compareBuild(p){p instanceof f||(p=new f(p,this.options));let l=0;do{const g=this.build[l],E=p.build[l];if(e("build compare",l,g,E),g===void 0&&E===void 0)return 0;if(E===void 0)return 1;if(g===void 0)return-1;if(g!==E)return u(g,E)}while(++l)}inc(p,l,g){if(p.startsWith("pre")){if(!l&&g===!1)throw new Error("invalid increment argument: identifier is empty");if(l){const E=`-${l}`.match(this.options.loose?n[c.PRERELEASELOOSE]:n[c.PRERELEASE]);if(!E||E[1]!==l)throw new Error(`invalid identifier: ${l}`)}}switch(p){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",l,g);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",l,g);break;case"prepatch":this.prerelease.length=0,this.inc("patch",l,g),this.inc("pre",l,g);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",l,g),this.inc("pre",l,g);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const E=Number(g)?1:0;if(this.prerelease.length===0)this.prerelease=[E];else{let I=this.prerelease.length;for(;--I>=0;)typeof this.prerelease[I]=="number"&&(this.prerelease[I]++,I=-2);if(I===-1){if(l===this.prerelease.join(".")&&g===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(E)}}if(l){let I=[l,E];g===!1&&(I=[l]),u(this.prerelease[0],l)===0?isNaN(this.prerelease[1])&&(this.prerelease=I):this.prerelease=I}break}default:throw new Error(`invalid increment argument: ${p}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return Ke=f,Ke}var Je,Gt;function Wi(){if(Gt)return Je;Gt=1;const e=da();return Je=(i,t)=>new e(i,t).major,Je}Wi();var et,Xt;function Yi(){if(Xt)return et;Xt=1;const e=da();return et=(i,t,n=!1)=>{if(i instanceof e)return i;try{return new e(i,t)}catch(c){if(!n)return null;throw c}},et}var tt,jt;function Qi(){if(jt)return tt;jt=1;const e=Yi();return tt=(i,t)=>{const n=e(i,t);return n?n.version:null},tt}Qi();var qt={},Ht;function Zi(){return Ht||(Ht=1,(function(e){(function(i){i.parser=function(r,a){return new n(r,a)},i.SAXParser=n,i.SAXStream=l,i.createStream=p,i.MAX_BUFFER_LENGTH=64*1024;var t=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];i.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"];function n(r,a){if(!(this instanceof n))return new n(r,a);var h=this;m(h),h.q=h.c="",h.bufferCheckPosition=i.MAX_BUFFER_LENGTH,h.opt=a||{},h.opt.lowercase=h.opt.lowercase||h.opt.lowercasetags,h.looseCase=h.opt.lowercase?"toLowerCase":"toUpperCase",h.tags=[],h.closed=h.closedRoot=h.sawRoot=!1,h.tag=h.error=null,h.strict=!!r,h.noscript=!!(r||h.opt.noscript),h.state=o.BEGIN,h.strictEntities=h.opt.strictEntities,h.ENTITIES=h.strictEntities?Object.create(i.XML_ENTITIES):Object.create(i.ENTITIES),h.attribList=[],h.opt.xmlns&&(h.ns=Object.create(b)),h.opt.unquotedAttributeValues===void 0&&(h.opt.unquotedAttributeValues=!r),h.trackPosition=h.opt.position!==!1,h.trackPosition&&(h.position=h.line=h.column=0),y(h,"onready")}Object.create||(Object.create=function(r){function a(){}a.prototype=r;var h=new a;return h}),Object.keys||(Object.keys=function(r){var a=[];for(var h in r)r.hasOwnProperty(h)&&a.push(h);return a});function c(r){for(var a=Math.max(i.MAX_BUFFER_LENGTH,10),h=0,s=0,L=t.length;sa)switch(t[s]){case"textNode":ne(r);break;case"cdata":N(r,"oncdata",r.cdata),r.cdata="";break;case"script":N(r,"onscript",r.script),r.script="";break;default:Ee(r,"Max buffer length exceeded: "+t[s])}h=Math.max(h,z)}var V=i.MAX_BUFFER_LENGTH-h;r.bufferCheckPosition=V+r.position}function m(r){for(var a=0,h=t.length;a"||C(r)}function D(r,a){return r.test(a)}function re(r,a){return!D(r,a)}var o=0;i.STATE={BEGIN:o++,BEGIN_WHITESPACE:o++,TEXT:o++,TEXT_ENTITY:o++,OPEN_WAKA:o++,SGML_DECL:o++,SGML_DECL_QUOTED:o++,DOCTYPE:o++,DOCTYPE_QUOTED:o++,DOCTYPE_DTD:o++,DOCTYPE_DTD_QUOTED:o++,COMMENT_STARTING:o++,COMMENT:o++,COMMENT_ENDING:o++,COMMENT_ENDED:o++,CDATA:o++,CDATA_ENDING:o++,CDATA_ENDING_2:o++,PROC_INST:o++,PROC_INST_BODY:o++,PROC_INST_ENDING:o++,OPEN_TAG:o++,OPEN_TAG_SLASH:o++,ATTRIB:o++,ATTRIB_NAME:o++,ATTRIB_NAME_SAW_WHITE:o++,ATTRIB_VALUE:o++,ATTRIB_VALUE_QUOTED:o++,ATTRIB_VALUE_CLOSED:o++,ATTRIB_VALUE_UNQUOTED:o++,ATTRIB_VALUE_ENTITY_Q:o++,ATTRIB_VALUE_ENTITY_U:o++,CLOSE_TAG:o++,CLOSE_TAG_SAW_WHITE:o++,SCRIPT:o++,SCRIPT_ENDING:o++},i.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},i.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(i.ENTITIES).forEach(function(r){var a=i.ENTITIES[r],h=typeof a=="number"?String.fromCharCode(a):a;i.ENTITIES[r]=h});for(var S in i.STATE)i.STATE[i.STATE[S]]=S;o=i.STATE;function y(r,a,h){r[a]&&r[a](h)}function N(r,a,h){r.textNode&&ne(r),y(r,a,h)}function ne(r){r.textNode=Et(r.opt,r.textNode),r.textNode&&y(r,"ontext",r.textNode),r.textNode=""}function Et(r,a){return r.trim&&(a=a.trim()),r.normalize&&(a=a.replace(/\s+/g," ")),a}function Ee(r,a){return ne(r),r.trackPosition&&(a+=` +`};function xi(){return Ne()?`/files/${ya()}`:`/files/${Be()?.uid}`}const Le=xi();function Ui(){const e=Xa("dav");return Ne()?e.replace("remote.php","public.php"):e}const la=Ui(),zi=function(e=la,i={}){const t=qa(e,{headers:i});function n(c){t.setHeaders({...i,"X-Requested-With":"XMLHttpRequest",requesttoken:c??""})}return Aa(n),n(Ta()),Ha().patch("fetch",(c,m)=>{const u=m.headers;return u?.method&&(m.method=u.method,delete u.method),fetch(c,m)}),t},Vi=(e,i="/",t=Le)=>{const n=new AbortController;return new ie(async(c,m,u)=>{u(()=>n.abort());try{const f=(await e.getDirectoryContents(`${t}${i}`,{signal:n.signal,details:!0,data:Bi(),headers:{method:"REPORT"},includeSelf:!0})).data.filter(d=>d.filename!==i).map(d=>Ue(d,t));c(f)}catch(f){m(f)}})},Ue=function(e,i=Le,t=la){let n=Be()?.uid;if(Ne())n=n??"anonymous";else if(!n)throw new Error("No user id found");const c=e.props,m=Fi(c?.permissions),u=String(c?.["owner-id"]||n),f=c.fileid||0,d=new Date(Date.parse(e.lastmod)),p=new Date(Date.parse(c.creationdate)),l={id:f,source:`${t}${e.filename}`,mtime:!isNaN(d.getTime())&&d.getTime()!==0?d:void 0,crtime:!isNaN(p.getTime())&&p.getTime()!==0?p:void 0,mime:e.mime||"application/octet-stream",displayname:c.displayname!==void 0?String(c.displayname):void 0,size:c?.size||Number.parseInt(c.getcontentlength||"0"),status:f<0?mt.FAILED:void 0,permissions:m,owner:u,root:i,attributes:{...e,...c,hasPreview:c?.["has-preview"]}};return delete l.attributes?.props,e.type==="file"?new ht(l):new ft(l)};var Gi=Ca();const Xi=La(Gi);var He={},Pt,Bt;function ca(){return Bt||(Bt=1,Pt=typeof Da=="object"&&He&&He.NODE_DEBUG&&/\bsemver\b/i.test(He.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{}),Pt}var We,Mt;function ua(){if(Mt)return We;Mt=1;const e="2.0.0",i=256,t=Number.MAX_SAFE_INTEGER||9007199254740991,n=16,c=i-6;return We={MAX_LENGTH:i,MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:c,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:e,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2},We}var Ye={exports:{}},xt;function ji(){return xt||(xt=1,(function(e,i){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:c}=ua(),m=ca();i=e.exports={};const u=i.re=[],f=i.safeRe=[],d=i.src=[],p=i.safeSrc=[],l=i.t={};let E=0;const g="[a-zA-Z0-9-]",I=[["\\s",1],["\\d",c],[g,n]],G=H=>{for(const[X,te]of I)H=H.split(`${X}*`).join(`${X}{0,${te}}`).split(`${X}+`).join(`${X}{1,${te}}`);return H},b=(H,X,te)=>{const J=G(X),C=E++;m(H,C,X),l[H]=C,d[C]=X,p[C]=J,u[C]=new RegExp(X,te?"g":void 0),f[C]=new RegExp(J,te?"g":void 0)};b("NUMERICIDENTIFIER","0|[1-9]\\d*"),b("NUMERICIDENTIFIERLOOSE","\\d+"),b("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${g}*`),b("MAINVERSION",`(${d[l.NUMERICIDENTIFIER]})\\.(${d[l.NUMERICIDENTIFIER]})\\.(${d[l.NUMERICIDENTIFIER]})`),b("MAINVERSIONLOOSE",`(${d[l.NUMERICIDENTIFIERLOOSE]})\\.(${d[l.NUMERICIDENTIFIERLOOSE]})\\.(${d[l.NUMERICIDENTIFIERLOOSE]})`),b("PRERELEASEIDENTIFIER",`(?:${d[l.NONNUMERICIDENTIFIER]}|${d[l.NUMERICIDENTIFIER]})`),b("PRERELEASEIDENTIFIERLOOSE",`(?:${d[l.NONNUMERICIDENTIFIER]}|${d[l.NUMERICIDENTIFIERLOOSE]})`),b("PRERELEASE",`(?:-(${d[l.PRERELEASEIDENTIFIER]}(?:\\.${d[l.PRERELEASEIDENTIFIER]})*))`),b("PRERELEASELOOSE",`(?:-?(${d[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${d[l.PRERELEASEIDENTIFIERLOOSE]})*))`),b("BUILDIDENTIFIER",`${g}+`),b("BUILD",`(?:\\+(${d[l.BUILDIDENTIFIER]}(?:\\.${d[l.BUILDIDENTIFIER]})*))`),b("FULLPLAIN",`v?${d[l.MAINVERSION]}${d[l.PRERELEASE]}?${d[l.BUILD]}?`),b("FULL",`^${d[l.FULLPLAIN]}$`),b("LOOSEPLAIN",`[v=\\s]*${d[l.MAINVERSIONLOOSE]}${d[l.PRERELEASELOOSE]}?${d[l.BUILD]}?`),b("LOOSE",`^${d[l.LOOSEPLAIN]}$`),b("GTLT","((?:<|>)?=?)"),b("XRANGEIDENTIFIERLOOSE",`${d[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),b("XRANGEIDENTIFIER",`${d[l.NUMERICIDENTIFIER]}|x|X|\\*`),b("XRANGEPLAIN",`[v=\\s]*(${d[l.XRANGEIDENTIFIER]})(?:\\.(${d[l.XRANGEIDENTIFIER]})(?:\\.(${d[l.XRANGEIDENTIFIER]})(?:${d[l.PRERELEASE]})?${d[l.BUILD]}?)?)?`),b("XRANGEPLAINLOOSE",`[v=\\s]*(${d[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${d[l.XRANGEIDENTIFIERLOOSE]})(?:${d[l.PRERELEASELOOSE]})?${d[l.BUILD]}?)?)?`),b("XRANGE",`^${d[l.GTLT]}\\s*${d[l.XRANGEPLAIN]}$`),b("XRANGELOOSE",`^${d[l.GTLT]}\\s*${d[l.XRANGEPLAINLOOSE]}$`),b("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),b("COERCE",`${d[l.COERCEPLAIN]}(?:$|[^\\d])`),b("COERCEFULL",d[l.COERCEPLAIN]+`(?:${d[l.PRERELEASE]})?(?:${d[l.BUILD]})?(?:$|[^\\d])`),b("COERCERTL",d[l.COERCE],!0),b("COERCERTLFULL",d[l.COERCEFULL],!0),b("LONETILDE","(?:~>?)"),b("TILDETRIM",`(\\s*)${d[l.LONETILDE]}\\s+`,!0),i.tildeTrimReplace="$1~",b("TILDE",`^${d[l.LONETILDE]}${d[l.XRANGEPLAIN]}$`),b("TILDELOOSE",`^${d[l.LONETILDE]}${d[l.XRANGEPLAINLOOSE]}$`),b("LONECARET","(?:\\^)"),b("CARETTRIM",`(\\s*)${d[l.LONECARET]}\\s+`,!0),i.caretTrimReplace="$1^",b("CARET",`^${d[l.LONECARET]}${d[l.XRANGEPLAIN]}$`),b("CARETLOOSE",`^${d[l.LONECARET]}${d[l.XRANGEPLAINLOOSE]}$`),b("COMPARATORLOOSE",`^${d[l.GTLT]}\\s*(${d[l.LOOSEPLAIN]})$|^$`),b("COMPARATOR",`^${d[l.GTLT]}\\s*(${d[l.FULLPLAIN]})$|^$`),b("COMPARATORTRIM",`(\\s*)${d[l.GTLT]}\\s*(${d[l.LOOSEPLAIN]}|${d[l.XRANGEPLAIN]})`,!0),i.comparatorTrimReplace="$1$2$3",b("HYPHENRANGE",`^\\s*(${d[l.XRANGEPLAIN]})\\s+-\\s+(${d[l.XRANGEPLAIN]})\\s*$`),b("HYPHENRANGELOOSE",`^\\s*(${d[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${d[l.XRANGEPLAINLOOSE]})\\s*$`),b("STAR","(<|>)?=?\\s*\\*"),b("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),b("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Ye,Ye.exports)),Ye.exports}var Qe,Ut;function qi(){if(Ut)return Qe;Ut=1;const e=Object.freeze({loose:!0}),i=Object.freeze({});return Qe=t=>t?typeof t!="object"?e:t:i,Qe}var Ze,zt;function Hi(){if(zt)return Ze;zt=1;const e=/^[0-9]+$/,i=(t,n)=>{if(typeof t=="number"&&typeof n=="number")return t===n?0:ti(n,t)},Ze}var Ke,Vt;function da(){if(Vt)return Ke;Vt=1;const e=ca(),{MAX_LENGTH:i,MAX_SAFE_INTEGER:t}=ua(),{safeRe:n,t:c}=ji(),m=qi(),{compareIdentifiers:u}=Hi();class f{constructor(p,l){if(l=m(l),p instanceof f){if(p.loose===!!l.loose&&p.includePrerelease===!!l.includePrerelease)return p;p=p.version}else if(typeof p!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof p}".`);if(p.length>i)throw new TypeError(`version is longer than ${i} characters`);e("SemVer",p,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const E=p.trim().match(l.loose?n[c.LOOSE]:n[c.FULL]);if(!E)throw new TypeError(`Invalid Version: ${p}`);if(this.raw=p,this.major=+E[1],this.minor=+E[2],this.patch=+E[3],this.major>t||this.major<0)throw new TypeError("Invalid major version");if(this.minor>t||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>t||this.patch<0)throw new TypeError("Invalid patch version");E[4]?this.prerelease=E[4].split(".").map(g=>{if(/^[0-9]+$/.test(g)){const I=+g;if(I>=0&&Ip.major?1:this.minorp.minor?1:this.patchp.patch?1:0}comparePre(p){if(p instanceof f||(p=new f(p,this.options)),this.prerelease.length&&!p.prerelease.length)return-1;if(!this.prerelease.length&&p.prerelease.length)return 1;if(!this.prerelease.length&&!p.prerelease.length)return 0;let l=0;do{const E=this.prerelease[l],g=p.prerelease[l];if(e("prerelease compare",l,E,g),E===void 0&&g===void 0)return 0;if(g===void 0)return 1;if(E===void 0)return-1;if(E!==g)return u(E,g)}while(++l)}compareBuild(p){p instanceof f||(p=new f(p,this.options));let l=0;do{const E=this.build[l],g=p.build[l];if(e("build compare",l,E,g),E===void 0&&g===void 0)return 0;if(g===void 0)return 1;if(E===void 0)return-1;if(E!==g)return u(E,g)}while(++l)}inc(p,l,E){if(p.startsWith("pre")){if(!l&&E===!1)throw new Error("invalid increment argument: identifier is empty");if(l){const g=`-${l}`.match(this.options.loose?n[c.PRERELEASELOOSE]:n[c.PRERELEASE]);if(!g||g[1]!==l)throw new Error(`invalid identifier: ${l}`)}}switch(p){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",l,E);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",l,E);break;case"prepatch":this.prerelease.length=0,this.inc("patch",l,E),this.inc("pre",l,E);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",l,E),this.inc("pre",l,E);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const g=Number(E)?1:0;if(this.prerelease.length===0)this.prerelease=[g];else{let I=this.prerelease.length;for(;--I>=0;)typeof this.prerelease[I]=="number"&&(this.prerelease[I]++,I=-2);if(I===-1){if(l===this.prerelease.join(".")&&E===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(g)}}if(l){let I=[l,g];E===!1&&(I=[l]),u(this.prerelease[0],l)===0?isNaN(this.prerelease[1])&&(this.prerelease=I):this.prerelease=I}break}default:throw new Error(`invalid increment argument: ${p}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return Ke=f,Ke}var Je,Gt;function Wi(){if(Gt)return Je;Gt=1;const e=da();return Je=(i,t)=>new e(i,t).major,Je}Wi();var et,Xt;function Yi(){if(Xt)return et;Xt=1;const e=da();return et=(i,t,n=!1)=>{if(i instanceof e)return i;try{return new e(i,t)}catch(c){if(!n)return null;throw c}},et}var tt,jt;function Qi(){if(jt)return tt;jt=1;const e=Yi();return tt=(i,t)=>{const n=e(i,t);return n?n.version:null},tt}Qi();var qt={},Ht;function Zi(){return Ht||(Ht=1,(function(e){(function(i){i.parser=function(r,a){return new n(r,a)},i.SAXParser=n,i.SAXStream=l,i.createStream=p,i.MAX_BUFFER_LENGTH=64*1024;var t=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];i.EVENTS=["text","processinginstruction","sgmldeclaration","doctype","comment","opentagstart","attribute","opentag","closetag","opencdata","cdata","closecdata","error","end","ready","script","opennamespace","closenamespace"];function n(r,a){if(!(this instanceof n))return new n(r,a);var h=this;m(h),h.q=h.c="",h.bufferCheckPosition=i.MAX_BUFFER_LENGTH,h.opt=a||{},h.opt.lowercase=h.opt.lowercase||h.opt.lowercasetags,h.looseCase=h.opt.lowercase?"toLowerCase":"toUpperCase",h.tags=[],h.closed=h.closedRoot=h.sawRoot=!1,h.tag=h.error=null,h.strict=!!r,h.noscript=!!(r||h.opt.noscript),h.state=o.BEGIN,h.strictEntities=h.opt.strictEntities,h.ENTITIES=h.strictEntities?Object.create(i.XML_ENTITIES):Object.create(i.ENTITIES),h.attribList=[],h.opt.xmlns&&(h.ns=Object.create(b)),h.opt.unquotedAttributeValues===void 0&&(h.opt.unquotedAttributeValues=!r),h.trackPosition=h.opt.position!==!1,h.trackPosition&&(h.position=h.line=h.column=0),y(h,"onready")}Object.create||(Object.create=function(r){function a(){}a.prototype=r;var h=new a;return h}),Object.keys||(Object.keys=function(r){var a=[];for(var h in r)r.hasOwnProperty(h)&&a.push(h);return a});function c(r){for(var a=Math.max(i.MAX_BUFFER_LENGTH,10),h=0,s=0,L=t.length;sa)switch(t[s]){case"textNode":ne(r);break;case"cdata":N(r,"oncdata",r.cdata),r.cdata="";break;case"script":N(r,"onscript",r.script),r.script="";break;default:ge(r,"Max buffer length exceeded: "+t[s])}h=Math.max(h,z)}var V=i.MAX_BUFFER_LENGTH-h;r.bufferCheckPosition=V+r.position}function m(r){for(var a=0,h=t.length;a"||C(r)}function D(r,a){return r.test(a)}function re(r,a){return!D(r,a)}var o=0;i.STATE={BEGIN:o++,BEGIN_WHITESPACE:o++,TEXT:o++,TEXT_ENTITY:o++,OPEN_WAKA:o++,SGML_DECL:o++,SGML_DECL_QUOTED:o++,DOCTYPE:o++,DOCTYPE_QUOTED:o++,DOCTYPE_DTD:o++,DOCTYPE_DTD_QUOTED:o++,COMMENT_STARTING:o++,COMMENT:o++,COMMENT_ENDING:o++,COMMENT_ENDED:o++,CDATA:o++,CDATA_ENDING:o++,CDATA_ENDING_2:o++,PROC_INST:o++,PROC_INST_BODY:o++,PROC_INST_ENDING:o++,OPEN_TAG:o++,OPEN_TAG_SLASH:o++,ATTRIB:o++,ATTRIB_NAME:o++,ATTRIB_NAME_SAW_WHITE:o++,ATTRIB_VALUE:o++,ATTRIB_VALUE_QUOTED:o++,ATTRIB_VALUE_CLOSED:o++,ATTRIB_VALUE_UNQUOTED:o++,ATTRIB_VALUE_ENTITY_Q:o++,ATTRIB_VALUE_ENTITY_U:o++,CLOSE_TAG:o++,CLOSE_TAG_SAW_WHITE:o++,SCRIPT:o++,SCRIPT_ENDING:o++},i.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},i.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(i.ENTITIES).forEach(function(r){var a=i.ENTITIES[r],h=typeof a=="number"?String.fromCharCode(a):a;i.ENTITIES[r]=h});for(var S in i.STATE)i.STATE[i.STATE[S]]=S;o=i.STATE;function y(r,a,h){r[a]&&r[a](h)}function N(r,a,h){r.textNode&&ne(r),y(r,a,h)}function ne(r){r.textNode=gt(r.opt,r.textNode),r.textNode&&y(r,"ontext",r.textNode),r.textNode=""}function gt(r,a){return r.trim&&(a=a.trim()),r.normalize&&(a=a.replace(/\s+/g," ")),a}function ge(r,a){return ne(r),r.trackPosition&&(a+=` Line: `+r.line+` Column: `+r.column+` -Char: `+r.c),a=new Error(a),r.error=a,y(r,"onerror",a),r}function _t(r){return r.sawRoot&&!r.closedRoot&&R(r,"Unclosed root tag"),r.state!==o.BEGIN&&r.state!==o.BEGIN_WHITESPACE&&r.state!==o.TEXT&&Ee(r,"Unexpected end"),ne(r),r.c="",r.closed=!0,y(r,"onend"),n.call(r,r.strict,r.opt),r}function R(r,a){if(typeof r!="object"||!(r instanceof n))throw new Error("bad call to strictFail");r.strict&&Ee(r,a)}function fa(r){r.strict||(r.tagName=r.tagName[r.looseCase]());var a=r.tags[r.tags.length-1]||r,h=r.tag={name:r.tagName,attributes:{}};r.opt.xmlns&&(h.ns=a.ns),r.attribList.length=0,N(r,"onopentagstart",h)}function ze(r,a){var h=r.indexOf(":"),s=h<0?["",r]:r.split(":"),L=s[0],z=s[1];return a&&r==="xmlns"&&(L="xmlns",z=""),{prefix:L,local:z}}function Ve(r){if(r.strict||(r.attribName=r.attribName[r.looseCase]()),r.attribList.indexOf(r.attribName)!==-1||r.tag.attributes.hasOwnProperty(r.attribName)){r.attribName=r.attribValue="";return}if(r.opt.xmlns){var a=ze(r.attribName,!0),h=a.prefix,s=a.local;if(h==="xmlns")if(s==="xml"&&r.attribValue!==I)R(r,"xml: prefix must be bound to "+I+` +Char: `+r.c),a=new Error(a),r.error=a,y(r,"onerror",a),r}function _t(r){return r.sawRoot&&!r.closedRoot&&R(r,"Unclosed root tag"),r.state!==o.BEGIN&&r.state!==o.BEGIN_WHITESPACE&&r.state!==o.TEXT&&ge(r,"Unexpected end"),ne(r),r.c="",r.closed=!0,y(r,"onend"),n.call(r,r.strict,r.opt),r}function R(r,a){if(typeof r!="object"||!(r instanceof n))throw new Error("bad call to strictFail");r.strict&&ge(r,a)}function fa(r){r.strict||(r.tagName=r.tagName[r.looseCase]());var a=r.tags[r.tags.length-1]||r,h=r.tag={name:r.tagName,attributes:{}};r.opt.xmlns&&(h.ns=a.ns),r.attribList.length=0,N(r,"onopentagstart",h)}function ze(r,a){var h=r.indexOf(":"),s=h<0?["",r]:r.split(":"),L=s[0],z=s[1];return a&&r==="xmlns"&&(L="xmlns",z=""),{prefix:L,local:z}}function Ve(r){if(r.strict||(r.attribName=r.attribName[r.looseCase]()),r.attribList.indexOf(r.attribName)!==-1||r.tag.attributes.hasOwnProperty(r.attribName)){r.attribName=r.attribValue="";return}if(r.opt.xmlns){var a=ze(r.attribName,!0),h=a.prefix,s=a.local;if(h==="xmlns")if(s==="xml"&&r.attribValue!==I)R(r,"xml: prefix must be bound to "+I+` Actual: `+r.attribValue);else if(s==="xmlns"&&r.attribValue!==G)R(r,"xmlns: prefix must be bound to "+G+` -Actual: `+r.attribValue);else{var L=r.tag,z=r.tags[r.tags.length-1]||r;L.ns===z.ns&&(L.ns=Object.create(z.ns)),L.ns[s]=r.attribValue}r.attribList.push([r.attribName,r.attribValue])}else r.tag.attributes[r.attribName]=r.attribValue,N(r,"onattribute",{name:r.attribName,value:r.attribValue});r.attribName=r.attribValue=""}function pe(r,a){if(r.opt.xmlns){var h=r.tag,s=ze(r.tagName);h.prefix=s.prefix,h.local=s.local,h.uri=h.ns[s.prefix]||"",h.prefix&&!h.uri&&(R(r,"Unbound namespace prefix: "+JSON.stringify(r.tagName)),h.uri=s.prefix);var L=r.tags[r.tags.length-1]||r;h.ns&&L.ns!==h.ns&&Object.keys(h.ns).forEach(function(Tt){N(r,"onopennamespace",{prefix:Tt,uri:h.ns[Tt]})});for(var z=0,V=r.attribList.length;z",r.tagName="",r.state=o.SCRIPT;return}N(r,"onscript",r.script),r.script=""}var a=r.tags.length,h=r.tagName;r.strict||(h=h[r.looseCase]());for(var s=h;a--;){var L=r.tags[a];if(L.name!==s)R(r,"Unexpected close tag");else break}if(a<0){R(r,"Unmatched closing tag: "+r.tagName),r.textNode+="",r.state=o.TEXT;return}r.tagName=h;for(var z=r.tags.length;z-- >a;){var V=r.tag=r.tags.pop();r.tagName=r.tag.name,N(r,"onclosetag",r.tagName);var Q={};for(var Z in V.ns)Q[Z]=V.ns[Z];var ve=r.tags[r.tags.length-1]||r;r.opt.xmlns&&V.ns!==ve.ns&&Object.keys(V.ns).forEach(function(j){var se=V.ns[j];N(r,"onclosenamespace",{prefix:j,uri:se})})}a===0&&(r.closedRoot=!0),r.tagName=r.attribValue=r.attribName="",r.attribList.length=0,r.state=o.TEXT}function va(r){var a=r.entity,h=a.toLowerCase(),s,L="";return r.ENTITIES[a]?r.ENTITIES[a]:r.ENTITIES[h]?r.ENTITIES[h]:(a=h,a.charAt(0)==="#"&&(a.charAt(1)==="x"?(a=a.slice(2),s=parseInt(a,16),L=s.toString(16)):(a=a.slice(1),s=parseInt(a,10),L=s.toString(10))),a=a.replace(/^0+/,""),isNaN(s)||L.toLowerCase()!==a?(R(r,"Invalid character entity"),"&"+r.entity+";"):String.fromCodePoint(s))}function bt(r,a){a==="<"?(r.state=o.OPEN_WAKA,r.startTagPosition=r.position):C(a)||(R(r,"Non-whitespace before first tag."),r.textNode=a,r.state=o.TEXT)}function wt(r,a){var h="";return a",r.tagName="",r.state=o.SCRIPT;return}N(r,"onscript",r.script),r.script=""}var a=r.tags.length,h=r.tagName;r.strict||(h=h[r.looseCase]());for(var s=h;a--;){var L=r.tags[a];if(L.name!==s)R(r,"Unexpected close tag");else break}if(a<0){R(r,"Unmatched closing tag: "+r.tagName),r.textNode+="",r.state=o.TEXT;return}r.tagName=h;for(var z=r.tags.length;z-- >a;){var V=r.tag=r.tags.pop();r.tagName=r.tag.name,N(r,"onclosetag",r.tagName);var Q={};for(var Z in V.ns)Q[Z]=V.ns[Z];var ve=r.tags[r.tags.length-1]||r;r.opt.xmlns&&V.ns!==ve.ns&&Object.keys(V.ns).forEach(function(j){var se=V.ns[j];N(r,"onclosenamespace",{prefix:j,uri:se})})}a===0&&(r.closedRoot=!0),r.tagName=r.attribValue=r.attribName="",r.attribList.length=0,r.state=o.TEXT}function va(r){var a=r.entity,h=a.toLowerCase(),s,L="";return r.ENTITIES[a]?r.ENTITIES[a]:r.ENTITIES[h]?r.ENTITIES[h]:(a=h,a.charAt(0)==="#"&&(a.charAt(1)==="x"?(a=a.slice(2),s=parseInt(a,16),L=s.toString(16)):(a=a.slice(1),s=parseInt(a,10),L=s.toString(10))),a=a.replace(/^0+/,""),isNaN(s)||L.toLowerCase()!==a?(R(r,"Invalid character entity"),"&"+r.entity+";"):String.fromCodePoint(s))}function bt(r,a){a==="<"?(r.state=o.OPEN_WAKA,r.startTagPosition=r.position):C(a)||(R(r,"Non-whitespace before first tag."),r.textNode=a,r.state=o.TEXT)}function wt(r,a){var h="";return a"?(N(a,"onsgmldeclaration",a.sgmlDecl),a.sgmlDecl="",a.state=o.TEXT):(F(s)&&(a.state=o.SGML_DECL_QUOTED),a.sgmlDecl+=s);continue;case o.SGML_DECL_QUOTED:s===a.q&&(a.state=o.SGML_DECL,a.q=""),a.sgmlDecl+=s;continue;case o.DOCTYPE:s===">"?(a.state=o.TEXT,N(a,"ondoctype",a.doctype),a.doctype=!0):(a.doctype+=s,s==="["?a.state=o.DOCTYPE_DTD:F(s)&&(a.state=o.DOCTYPE_QUOTED,a.q=s));continue;case o.DOCTYPE_QUOTED:a.doctype+=s,s===a.q&&(a.q="",a.state=o.DOCTYPE);continue;case o.DOCTYPE_DTD:s==="]"?(a.doctype+=s,a.state=o.DOCTYPE):s==="<"?(a.state=o.OPEN_WAKA,a.startTagPosition=a.position):F(s)?(a.doctype+=s,a.state=o.DOCTYPE_DTD_QUOTED,a.q=s):a.doctype+=s;continue;case o.DOCTYPE_DTD_QUOTED:a.doctype+=s,s===a.q&&(a.state=o.DOCTYPE_DTD,a.q="");continue;case o.COMMENT:s==="-"?a.state=o.COMMENT_ENDING:a.comment+=s;continue;case o.COMMENT_ENDING:s==="-"?(a.state=o.COMMENT_ENDED,a.comment=Et(a.opt,a.comment),a.comment&&N(a,"oncomment",a.comment),a.comment=""):(a.comment+="-"+s,a.state=o.COMMENT);continue;case o.COMMENT_ENDED:s!==">"?(R(a,"Malformed comment"),a.comment+="--"+s,a.state=o.COMMENT):a.doctype&&a.doctype!==!0?a.state=o.DOCTYPE_DTD:a.state=o.TEXT;continue;case o.CDATA:s==="]"?a.state=o.CDATA_ENDING:a.cdata+=s;continue;case o.CDATA_ENDING:s==="]"?a.state=o.CDATA_ENDING_2:(a.cdata+="]"+s,a.state=o.CDATA);continue;case o.CDATA_ENDING_2:s===">"?(a.cdata&&N(a,"oncdata",a.cdata),N(a,"onclosecdata"),a.cdata="",a.state=o.TEXT):s==="]"?a.cdata+="]":(a.cdata+="]]"+s,a.state=o.CDATA);continue;case o.PROC_INST:s==="?"?a.state=o.PROC_INST_ENDING:C(s)?a.state=o.PROC_INST_BODY:a.procInstName+=s;continue;case o.PROC_INST_BODY:if(!a.procInstBody&&C(s))continue;s==="?"?a.state=o.PROC_INST_ENDING:a.procInstBody+=s;continue;case o.PROC_INST_ENDING:s===">"?(N(a,"onprocessinginstruction",{name:a.procInstName,body:a.procInstBody}),a.procInstName=a.procInstBody="",a.state=o.TEXT):(a.procInstBody+="?"+s,a.state=o.PROC_INST_BODY);continue;case o.OPEN_TAG:D(X,s)?a.tagName+=s:(fa(a),s===">"?pe(a):s==="/"?a.state=o.OPEN_TAG_SLASH:(C(s)||R(a,"Invalid character in tag name"),a.state=o.ATTRIB));continue;case o.OPEN_TAG_SLASH:s===">"?(pe(a,!0),Ge(a)):(R(a,"Forward-slash in opening tag not followed by >"),a.state=o.ATTRIB);continue;case o.ATTRIB:if(C(s))continue;s===">"?pe(a):s==="/"?a.state=o.OPEN_TAG_SLASH:D(H,s)?(a.attribName=s,a.attribValue="",a.state=o.ATTRIB_NAME):R(a,"Invalid attribute name");continue;case o.ATTRIB_NAME:s==="="?a.state=o.ATTRIB_VALUE:s===">"?(R(a,"Attribute without value"),a.attribValue=a.attribName,Ve(a),pe(a)):C(s)?a.state=o.ATTRIB_NAME_SAW_WHITE:D(X,s)?a.attribName+=s:R(a,"Invalid attribute name");continue;case o.ATTRIB_NAME_SAW_WHITE:if(s==="=")a.state=o.ATTRIB_VALUE;else{if(C(s))continue;R(a,"Attribute without value"),a.tag.attributes[a.attribName]="",a.attribValue="",N(a,"onattribute",{name:a.attribName,value:""}),a.attribName="",s===">"?pe(a):D(H,s)?(a.attribName=s,a.state=o.ATTRIB_NAME):(R(a,"Invalid attribute name"),a.state=o.ATTRIB)}continue;case o.ATTRIB_VALUE:if(C(s))continue;F(s)?(a.q=s,a.state=o.ATTRIB_VALUE_QUOTED):(a.opt.unquotedAttributeValues||Ee(a,"Unquoted attribute value"),a.state=o.ATTRIB_VALUE_UNQUOTED,a.attribValue=s);continue;case o.ATTRIB_VALUE_QUOTED:if(s!==a.q){s==="&"?a.state=o.ATTRIB_VALUE_ENTITY_Q:a.attribValue+=s;continue}Ve(a),a.q="",a.state=o.ATTRIB_VALUE_CLOSED;continue;case o.ATTRIB_VALUE_CLOSED:C(s)?a.state=o.ATTRIB:s===">"?pe(a):s==="/"?a.state=o.OPEN_TAG_SLASH:D(H,s)?(R(a,"No whitespace between attributes"),a.attribName=s,a.attribValue="",a.state=o.ATTRIB_NAME):R(a,"Invalid attribute name");continue;case o.ATTRIB_VALUE_UNQUOTED:if(!U(s)){s==="&"?a.state=o.ATTRIB_VALUE_ENTITY_U:a.attribValue+=s;continue}Ve(a),s===">"?pe(a):a.state=o.ATTRIB;continue;case o.CLOSE_TAG:if(a.tagName)s===">"?Ge(a):D(X,s)?a.tagName+=s:a.script?(a.script+=""?Ge(a):R(a,"Invalid characters in closing tag");continue;case o.TEXT_ENTITY:case o.ATTRIB_VALUE_ENTITY_Q:case o.ATTRIB_VALUE_ENTITY_U:var V,Q;switch(a.state){case o.TEXT_ENTITY:V=o.TEXT,Q="textNode";break;case o.ATTRIB_VALUE_ENTITY_Q:V=o.ATTRIB_VALUE_QUOTED,Q="attribValue";break;case o.ATTRIB_VALUE_ENTITY_U:V=o.ATTRIB_VALUE_UNQUOTED,Q="attribValue";break}if(s===";"){var Z=va(a);a.opt.unparsedEntities&&!Object.values(i.XML_ENTITIES).includes(Z)?(a.entity="",a.state=V,a.write(Z)):(a[Q]+=Z,a.entity="",a.state=V)}else D(a.entity.length?J:te,s)?a.entity+=s:(R(a,"Invalid character in entity name"),a[Q]+="&"+a.entity+s,a.entity="",a.state=V);continue;default:throw new Error(a,"Unknown state: "+a.state)}return a.position>=a.bufferCheckPosition&&c(a),a}String.fromCodePoint||(function(){var r=String.fromCharCode,a=Math.floor,h=function(){var s=16384,L=[],z,V,Q=-1,Z=arguments.length;if(!Z)return"";for(var ve="";++Q1114111||a(j)!==j)throw RangeError("Invalid code point: "+j);j<=65535?L.push(j):(j-=65536,z=(j>>10)+55296,V=j%1024+56320,L.push(z,V)),(Q+1===Z||L.length>s)&&(ve+=r.apply(null,L),L.length=0)}return ve};Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:h,configurable:!0,writable:!0}):String.fromCodePoint=h})()})(e)})(qt)),qt}Zi();var Fe=(e=>(e.ReservedName="reserved name",e.Character="character",e.Extension="extension",e))(Fe||{});class be extends Error{constructor(i){super(`Invalid ${i.reason} '${i.segment}' in filename '${i.filename}'`,{cause:i})}get filename(){return this.cause.filename}get reason(){return this.cause.reason}get segment(){return this.cause.segment}}function Ki(e){const i=Ra().files,t=i.forbidden_filename_characters??window._oc_config?.forbidden_filenames_characters??["/","\\"];for(const u of t)if(e.includes(u))throw new be({segment:u,reason:"character",filename:e});if(e=e.toLocaleLowerCase(),(i.forbidden_filenames??[".htaccess"]).includes(e))throw new be({filename:e,segment:e,reason:"reserved name"});const n=e.indexOf(".",1),c=e.substring(0,n===-1?void 0:n);if((i.forbidden_filename_basenames??[]).includes(c))throw new be({filename:e,segment:c,reason:"reserved name"});const m=i.forbidden_filename_extensions??[".part",".filepart"];for(const u of m)if(e.length>u.length&&e.endsWith(u))throw new be({segment:u,reason:"extension",filename:e})}const at=["B","KB","MB","GB","TB","PB"],it=["B","KiB","MiB","GiB","TiB","PiB"];function Ji(e,i=!1,t=!1,n=!1){t=t&&!n,typeof e=="string"&&(e=Number(e));let c=e>0?Math.floor(Math.log(e)/Math.log(n?1e3:1024)):0;c=Math.min((t?it.length:at.length)-1,c);const m=t?it[c]:at[c];let u=(e/Math.pow(n?1e3:1024,c)).toFixed(1);return i===!0&&c===0?(u!=="0.0"?"< 1 ":"0 ")+(t?it[1]:at[1]):(c<2?u=parseFloat(u).toFixed(0):u=parseFloat(u).toLocaleString(Zt()),u+" "+m)}function Wt(e){return e instanceof Date?e.toISOString():String(e)}function er(e,i,t){i=i??[m=>m],t=t??[];const n=i.map((m,u)=>(t[u]??"asc")==="asc"?1:-1),c=Intl.Collator([Oa(),Zt()],{numeric:!0,usage:"sort"});return[...e].sort((m,u)=>{for(const[f,d]of i.entries()){const p=c.compare(Wt(d(m)),Wt(d(u)));if(p!==0)return p*n[f]}return 0})}function tr(e,i={}){const t={sortingMode:"basename",sortingOrder:"asc",...i};function n(u){const f=u.displayname||u.attributes?.displayname||u.basename||"";return u.type===le.Folder?f:f.lastIndexOf(".")>0?f.slice(0,f.lastIndexOf(".")):f}const c=[...t.sortFavoritesFirst?[u=>u.attributes?.favorite!==1]:[],...t.sortFoldersFirst?[u=>u.type!=="folder"]:[],...t.sortingMode!=="basename"?[u=>u[t.sortingMode]??u.attributes[t.sortingMode]]:[],u=>n(u),u=>u.basename],m=[...t.sortFavoritesFirst?["asc"]:[],...t.sortFoldersFirst?["asc"]:[],...t.sortingMode==="mtime"?[t.sortingOrder==="asc"?"desc":"asc"]:[],...t.sortingMode!=="mtime"&&t.sortingMode!=="basename"?[t.sortingOrder]:[],t.sortingOrder,t.sortingOrder];return er(e,c,m)}const ar=new Va({concurrency:5});function ir(e){const{resolve:i,promise:t}=Promise.withResolvers();return ar.add(()=>{const n=new Image;return n.onerror=()=>i(!1),n.onload=()=>i(!0),n.src=e,t}),t}function rr(e,i={}){i={size:32,cropPreview:!1,mimeFallback:!0,...i};try{const t=e.attributes?.previewUrl||ut("/core/preview?fileId={fileid}",{fileid:e.fileid});let n;try{n=new URL(t)}catch{n=new URL(t,window.location.origin)}return n.searchParams.set("x",`${i.size}`),n.searchParams.set("y",`${i.size}`),n.searchParams.set("mimeFallback",`${i.mimeFallback}`),n.searchParams.set("a",i.cropPreview===!0?"0":"1"),n.searchParams.set("c",`${e.attributes.etag}`),n}catch{return null}}function nr(e,i){const t=B(null),n=B(!1);return Sa(()=>{n.value=!1,t.value=rr(we(e),we(i||{})),t.value&&we(e).type===le.File&&ir(t.value.href).then(c=>{n.value=c})}),{previewURL:t,previewLoaded:n}}const K=(e,i)=>{const t=e.__vccOpts||e;for(const[n,c]of i)t[n]=c;return t},sr={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},or=["aria-hidden","aria-label"],lr=["fill","width","height"],cr={d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"},ur={key:0};function dr(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon file-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",cr,[t.title?(v(),_("title",ur,x(t.title),1)):$("",!0)])],8,lr))],16,or)}const ot=K(sr,[["render",dr]]),pr={name:"MenuDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mr=["aria-hidden","aria-label"],hr=["fill","width","height"],fr={d:"M7,10L12,15L17,10H7Z"},vr={key:0};function gr(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon menu-down-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",fr,[t.title?(v(),_("title",vr,x(t.title),1)):$("",!0)])],8,hr))],16,mr)}const rt=K(pr,[["render",gr]]),Er={name:"MenuUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},_r=["aria-hidden","aria-label"],br=["fill","width","height"],wr={d:"M7,15L12,10L17,15H7Z"},yr={key:0};function Tr(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon menu-up-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",wr,[t.title?(v(),_("title",yr,x(t.title),1)):$("",!0)])],8,br))],16,_r)}const nt=K(Er,[["render",Tr]]),Ir={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Nr=["aria-hidden","aria-label"],Ar=["fill","width","height"],Cr={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},Lr={key:0};function Dr(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",Cr,[t.title?(v(),_("title",Lr,x(t.title),1)):$("",!0)])],8,Ar))],16,Nr)}const pa=K(Ir,[["render",Dr]]),ma={"file-picker__file-icon":"_file-picker__file-icon_3v9zx_9","file-picker__file-icon--primary":"_file-picker__file-icon--primary_3v9zx_21","file-picker__file-icon-overlay":"_file-picker__file-icon-overlay_3v9zx_25"},Rr=de({__name:"FilePreview",props:{node:{},cropImagePreviews:{type:Boolean}},setup(e){const i=e,t=B(ma),{previewURL:n,previewLoaded:c}=nr(Jt(i,"node"),O(()=>({cropPreview:i.cropImagePreviews}))),m=O(()=>i.node.type===le.File),u=O(()=>{if(i.node.type!==le.Folder)return null;if(i.node.attributes?.["is-encrypted"]===1)return Ka;if(i.node.attributes?.["is-tag"])return Ja;const f=Object.values(i.node.attributes?.["share-types"]||{}).flat();if(f.some(d=>d===Ct.Link||d===Ct.Email))return ei;if(f.length>0)return At;switch(i.node.attributes?.["mount-type"]){case"external":case"external-session":return ai;case"group":return ti;case"shared":return At}return null});return(f,d)=>(v(),_("div",{style:Ma(w(c)?{backgroundImage:`url(${w(n)})`}:void 0),class:ge(t.value["file-picker__file-icon"])},[w(c)?$("",!0):(v(),_(oe,{key:0},[m.value?(v(),M(ot,{key:0,size:32})):(v(),_(oe,{key:1},[u.value?(v(),M(w(aa),{key:0,class:ge(t.value["file-picker__file-icon-overlay"]),inline:"",path:u.value,size:16},null,8,["class","path"])):$("",!0),P(pa,{class:ge(t.value["file-picker__file-icon--primary"]),size:32},null,8,["class"])],64))],64))],6))}}),Or=["tabindex","aria-selected","data-filename"],Sr={class:"row-name"},kr={class:"file-picker__name-container","data-testid":"row-name"},Fr=["title","textContent"],$r=["textContent"],Pr={class:"row-size"},Br={class:"row-modified"},xr=de({__name:"FileListRow",props:{allowPickDirectory:{type:Boolean},selected:{type:Boolean},showCheckbox:{type:Boolean},canPick:{type:Boolean},node:{},cropImagePreviews:{type:Boolean}},emits:["update:selected","enterDirectory"],setup(e,{emit:i}){const t=e,n=i,c=O(()=>t.node.mtime??0),m=O(()=>Qt(t.node.displayname)),u=O(()=>t.node.displayname.slice(0,m.value?-m.value.length:void 0)),f=O(()=>t.node.type===le.Folder),d=O(()=>t.canPick&&(t.allowPickDirectory||!f.value)),p=O(()=>(t.node.permissions&ee.READ)===ee.READ);function l(){d.value&&n("update:selected",!t.selected)}function g(){f.value?p.value&&n("enterDirectory",t.node):l()}function E(I){I.key==="Enter"&&g()}return(I,G)=>(v(),_("tr",ae({tabindex:e.showCheckbox&&!f.value?void 0:0,"aria-selected":d.value?e.selected:void 0,class:["file-picker__row",[{"file-picker__row--selected":e.selected&&!e.showCheckbox,"file-picker__row--not-navigatable":f.value&&!p.value,"file-picker__row--not-pickable":!d.value}]],"data-filename":e.node.basename,"data-testid":"file-list-row"},xa({click:g,...!e.showCheckbox||f.value?{keydown:E}:{}},!0)),[e.showCheckbox?(v(),_("td",{key:0,class:"row-checkbox",onClick:Se(()=>{},["stop"])},[P(w(ia),{"aria-label":w(A)("Select the row for {nodename}",{nodename:u.value}),disabled:!d.value,"data-testid":"row-checkbox","model-value":e.selected,"onUpdate:modelValue":l},null,8,["aria-label","disabled","model-value"])])):$("",!0),T("td",Sr,[T("div",kr,[P(Rr,{node:e.node,"crop-image-previews":e.cropImagePreviews},null,8,["node","crop-image-previews"]),T("div",{class:"file-picker__file-name",title:u.value,textContent:x(u.value)},null,8,Fr),T("div",{class:"file-picker__file-extension",textContent:x(m.value)},null,8,$r)])]),T("td",Pr,x(w(Ji)(e.node.size||0)),1),T("td",Br,[P(w(Wa),{timestamp:c.value,"ignore-seconds":""},null,8,["timestamp"])])],16,Or))}}),Mr=K(xr,[["__scopeId","data-v-2af740c4"]]),Ur={"aria-hidden":"true",class:"file-picker__row loading-row"},zr={key:0,class:"row-checkbox"},Vr={class:"row-name"},Gr={class:"row-wrapper"},Xr=de({__name:"LoadingTableRow",props:{showCheckbox:{type:Boolean}},setup(e){return(i,t)=>(v(),_("tr",Ur,[e.showCheckbox?(v(),_("td",zr,[...t[0]||(t[0]=[T("span",null,null,-1)])])):$("",!0),T("td",Vr,[T("div",Gr,[T("span",{class:ge(w(ma)["file-picker__file-icon"])},null,2),t[1]||(t[1]=T("span",null,null,-1))])]),t[2]||(t[2]=T("td",{class:"row-size"},[T("span")],-1)),t[3]||(t[3]=T("td",{class:"row-modified"},[T("span")],-1))]))}}),jr=K(Xr,[["__scopeId","data-v-1f96131b"]]);function ha(){const e=ea("files","config",null),i=B(e?.show_hidden??!0),t=B(e?.sort_favorites_first??!0),n=B(e?.crop_image_previews??!0);return Ae(async()=>{if(Ne())Ie.debug("Skip loading files settings - currently on public share");else try{const{data:c}=await ra.get(ut("/apps/files/api/v1/configs"));i.value=c?.data?.show_hidden??!1,t.value=c?.data?.sort_favorites_first??!0,n.value=c?.data?.crop_image_previews??!0}catch(c){Ie.error("Could not load files settings",{error:c}),ct(A("Could not load files settings"))}}),{showHiddenFiles:i,sortFavoritesFirst:t,cropImagePreviews:n}}function qr(e){const i=p=>p==="asc"?"ascending":p==="desc"?"descending":"none",t=ea("files","viewConfigs",null),n=B({sortBy:t?.files?.sorting_mode??"basename",order:i(t?.files?.sorting_direction??"asc")}),c=B({sortBy:t?.recent?.sorting_mode??"basename",order:i(t?.recent?.sorting_direction??"asc")}),m=B({sortBy:t?.favorites?.sorting_mode??"basename",order:i(t?.favorites?.sorting_direction??"asc")});Ae(async()=>{if(Ne())Ie.debug("Skip loading files views - currently on public share");else try{const{data:p}=await ra.get(ut("/apps/files/api/v1/views"));n.value={sortBy:p?.data?.files?.sorting_mode??"basename",order:i(p?.data?.files?.sorting_direction)},m.value={sortBy:p?.data?.favorites?.sorting_mode??"basename",order:i(p?.data?.favorites?.sorting_direction)},c.value={sortBy:p?.data?.recent?.sorting_mode??"basename",order:i(p?.data?.recent?.sorting_direction)}}catch(p){Ie.error("Could not load files views",{error:p}),ct(A("Could not load files views"))}});const u=O(()=>we(e||"files")==="files"?n.value:we(e)==="recent"?c.value:m.value),f=O(()=>u.value.sortBy),d=O(()=>u.value.order);return{filesViewConfig:n,favoritesViewConfig:m,recentViewConfig:c,currentConfig:u,sortBy:f,order:d}}const Hr={key:0,class:"row-checkbox"},Wr={class:"hidden-visually"},Yr=["aria-sort"],Qr={class:"header-wrapper"},Zr={key:2,style:{width:"44px"}},Kr=["aria-sort"],Jr={key:2,style:{width:"44px"}},en=["aria-sort"],tn={key:2,style:{width:"44px"}},an=de({__name:"FileList",props:$a({currentView:{},multiselect:{type:Boolean},allowPickDirectory:{type:Boolean},loading:{type:Boolean},files:{},canPick:{type:Function}},{path:{required:!0},pathModifiers:{},selectedFiles:{required:!0},selectedFilesModifiers:{}}),emits:["update:path","update:selectedFiles"],setup(e){const i=Nt(e,"path"),t=Nt(e,"selectedFiles"),n=e,c=B(),{currentConfig:m}=qr(n.currentView),u=O(()=>c.value??m.value),f=O(()=>u.value.sortBy==="basename"?u.value.order==="none"?void 0:u.value.order:void 0),d=O(()=>u.value.sortBy==="size"?u.value.order==="none"?void 0:u.value.order:void 0),p=O(()=>u.value.sortBy==="mtime"?u.value.order==="none"?void 0:u.value.order:void 0);function l(F){u.value.sortBy===F?u.value.order==="ascending"?c.value={sortBy:u.value.sortBy,order:"descending"}:c.value={sortBy:u.value.sortBy,order:"ascending"}:c.value={sortBy:F,order:"ascending"}}const{sortFavoritesFirst:g,cropImagePreviews:E}=ha(),I=O(()=>tr(n.files,{sortFoldersFirst:!0,sortFavoritesFirst:g.value,sortingOrder:u.value.order==="descending"?"desc":"asc",sortingMode:u.value.sortBy})),G=O(()=>n.files.filter(F=>n.allowPickDirectory||F.type!==le.Folder)),b=O(()=>!n.loading&&t.value.length>0&&t.value.length>=G.value.length);function H(){t.value.lengthU.path!==F.path):n.multiselect?t.value=[...t.value,F]:t.value=[F]}function te(F){i.value=F.path}const J=B(4),C=B();{const F=()=>Pa(()=>{const U=C.value?.parentElement?.children||[];let D=C.value?.parentElement?.clientHeight||450;for(let re=0;re{window.addEventListener("resize",F),F()}),Ba(()=>{window.removeEventListener("resize",F)})}return(F,U)=>(v(),_("div",{ref_key:"fileContainer",ref:C,class:"file-picker__files"},[T("table",null,[T("thead",null,[T("tr",null,[e.multiselect?(v(),_("th",Hr,[T("span",Wr,x(w(A)("Select entry")),1),e.multiselect?(v(),M(w(ia),{key:0,"aria-label":w(A)("Select all entries"),"data-testid":"select-all-checkbox","model-value":b.value,"onUpdate:modelValue":H},null,8,["aria-label","model-value"])):$("",!0)])):$("",!0),T("th",{"aria-sort":f.value,class:"row-name"},[T("div",Qr,[U[3]||(U[3]=T("span",{class:"file-picker__header-preview"},null,-1)),P(w(ye),{"data-test":"file-picker_sort-name",variant:"tertiary",wide:"",onClick:U[0]||(U[0]=D=>l("basename"))},{icon:k(()=>[f.value==="ascending"?(v(),M(nt,{key:0,size:20})):f.value==="descending"?(v(),M(rt,{key:1,size:20})):(v(),_("span",Zr))]),default:k(()=>[fe(" "+x(w(A)("Name")),1)]),_:1})])],8,Yr),T("th",{"aria-sort":d.value,class:"row-size"},[P(w(ye),{variant:"tertiary",wide:"",onClick:U[1]||(U[1]=D=>l("size"))},{icon:k(()=>[d.value==="ascending"?(v(),M(nt,{key:0,size:20})):d.value==="descending"?(v(),M(rt,{key:1,size:20})):(v(),_("span",Jr))]),default:k(()=>[fe(" "+x(w(A)("Size")),1)]),_:1})],8,Kr),T("th",{"aria-sort":p.value,class:"row-modified"},[P(w(ye),{variant:"tertiary",wide:"",onClick:U[2]||(U[2]=D=>l("mtime"))},{icon:k(()=>[p.value==="ascending"?(v(),M(nt,{key:0,size:20})):p.value==="descending"?(v(),M(rt,{key:1,size:20})):(v(),_("span",tn))]),default:k(()=>[fe(" "+x(w(A)("Modified")),1)]),_:1})],8,en)])]),T("tbody",null,[e.loading?(v(!0),_(oe,{key:0},$e(J.value,D=>(v(),M(jr,{key:D,"show-checkbox":e.multiselect},null,8,["show-checkbox"]))),128)):(v(!0),_(oe,{key:1},$e(I.value,D=>(v(),M(Mr,{key:D.fileid||D.path,"allow-pick-directory":e.allowPickDirectory,"show-checkbox":e.multiselect,"can-pick":(e.multiselect||t.value.length===0||t.value.includes(D))&&(e.canPick===void 0||e.canPick(D)),selected:t.value.includes(D),node:D,"crop-image-previews":w(E),"onUpdate:selected":re=>X(D),onEnterDirectory:te},null,8,["allow-pick-directory","show-checkbox","can-pick","selected","node","crop-image-previews","onUpdate:selected"]))),128))])])],512))}}),rn=K(an,[["__scopeId","data-v-68ec5c33"]]),nn={name:"HomeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},sn=["aria-hidden","aria-label"],on=["fill","width","height"],ln={d:"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"},cn={key:0};function un(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon home-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",ln,[t.title?(v(),_("title",cn,x(t.title),1)):$("",!0)])],8,on))],16,sn)}const dn=K(nn,[["render",un]]),pn={name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mn=["aria-hidden","aria-label"],hn=["fill","width","height"],fn={d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"},vn={key:0};function gn(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon plus-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",fn,[t.title?(v(),_("title",vn,x(t.title),1)):$("",!0)])],8,hn))],16,mn)}const En=K(pn,[["render",gn]]),_n=de({__name:"FilePickerBreadcrumbs",props:{path:{},showMenu:{type:Boolean}},emits:["update:path","create-node"],setup(e,{emit:i}){const t=e,n=i,c=B(!1),m=B(""),u=Fa("nameInput");function f(){const l=m.value.trim(),g=u.value?.$el?.querySelector("input");let E="";try{Ki(l)}catch(I){if(!(I instanceof be))throw I;switch(I.reason){case Fe.Character:E=A('"{char}" is not allowed inside a folder name.',{char:I.segment});break;case Fe.ReservedName:E=A('"{segment}" is a reserved name and not allowed for folder names.',{segment:I.segment});break;case Fe.Extension:E=A('Folder names must not end with "{extension}".',{extension:I.segment});break;default:E=A("Invalid folder name.")}}return g&&g.setCustomValidity(E),E===""}function d(){const l=m.value.trim();f()&&(c.value=!1,n("create-node",l),m.value="")}const p=O(()=>t.path.split("/").filter(l=>l!=="").map((l,g,E)=>({name:l,path:"/"+E.slice(0,g+1).join("/")})));return(l,g)=>(v(),M(w(Li),{class:"file-picker__breadcrumbs"},Yt({default:k(()=>[P(w(Pe),{name:w(A)("All files"),title:w(A)("Home"),onClick:g[0]||(g[0]=E=>n("update:path","/"))},{icon:k(()=>[P(dn,{size:20})]),_:1},8,["name","title"]),(v(!0),_(oe,null,$e(p.value,E=>(v(),M(w(Pe),{key:E.path,name:E.name,title:E.path,onClick:I=>n("update:path",E.path)},null,8,["name","title","onClick"]))),128))]),_:2},[e.showMenu?{name:"actions",fn:k(()=>[P(w(lt),{open:c.value,"onUpdate:open":g[2]||(g[2]=E=>c.value=E),"aria-label":w(A)("Create directory"),"force-menu":!0,"force-name":!0,"menu-name":w(A)("New"),variant:"secondary",onClose:g[3]||(g[3]=E=>m.value="")},{icon:k(()=>[P(En,{size:20})]),default:k(()=>[P(w(Ga),{ref_key:"nameInput",ref:u,modelValue:m.value,"onUpdate:modelValue":[g[1]||(g[1]=E=>m.value=E),f],label:w(A)("New folder"),placeholder:w(A)("New folder name"),onSubmit:d},{icon:k(()=>[P(pa,{size:20})]),_:1},8,["modelValue","label","placeholder"])]),_:1},8,["open","aria-label","menu-name"])]),key:"0"}:void 0]),1024))}}),bn=K(_n,[["__scopeId","data-v-4ce40fd0"]]),wn={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},yn=["aria-hidden","aria-label"],Tn=["fill","width","height"],In={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},Nn={key:0};function An(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon close-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",In,[t.title?(v(),_("title",Nn,x(t.title),1)):$("",!0)])],8,Tn))],16,yn)}const Cn=K(wn,[["render",An]]),Ln={name:"MagnifyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Dn=["aria-hidden","aria-label"],Rn=["fill","width","height"],On={d:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},Sn={key:0};function kn(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon magnify-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",On,[t.title?(v(),_("title",Sn,x(t.title),1)):$("",!0)])],8,Rn))],16,Dn)}const Fn=K(Ln,[["render",kn]]);function $n(e){const i=[{id:"files",label:A("All files"),icon:Ya},{id:"recent",label:A("Recent"),icon:Qa},{id:"favorites",label:A("Favorites"),icon:Za}],t=e.value?i.filter(({id:n})=>n==="files"):i;return{allViews:i,availableViews:t}}const Pn={key:0,class:"file-picker__side"},Bn=de({__name:"FilePickerNavigation",props:{currentView:{},filterString:{},isCollapsed:{type:Boolean},disabledNavigation:{type:Boolean}},emits:["update:currentView","update:filterString"],setup(e,{emit:i}){const t=e,n=i,{availableViews:c}=$n(B(Be()===null)),m=O(()=>c.filter(f=>f.id===t.currentView)[0]??c[0]),u=f=>n("update:filterString",f.toString());return(f,d)=>(v(),_(oe,null,[P(w(ri),{class:"file-picker__filter-input",label:w(A)("Filter file list"),"show-trailing-button":!!e.filterString,"model-value":e.filterString,"onUpdate:modelValue":u,onTrailingButtonClick:d[0]||(d[0]=p=>u(""))},{"trailing-button-icon":k(()=>[P(Cn,{size:16})]),default:k(()=>[P(Fn,{size:16})]),_:1},8,["label","show-trailing-button","model-value"]),w(c).length>1&&!e.disabledNavigation?(v(),_(oe,{key:0},[e.isCollapsed?(v(),M(w(ii),{key:1,"aria-label":w(A)("Current view selector"),clearable:!1,searchable:!1,options:w(c),"model-value":m.value,"onUpdate:modelValue":d[1]||(d[1]=p=>n("update:currentView",p.id))},null,8,["aria-label","options","model-value"])):(v(),_("ul",Pn,[(v(!0),_(oe,null,$e(w(c),p=>(v(),_("li",{key:p.id},[P(w(ye),{variant:e.currentView===p.id?"primary":"tertiary",wide:!0,onClick:l=>f.$emit("update:currentView",p.id)},{icon:k(()=>[P(w(aa),{path:p.icon,size:20},null,8,["path"])]),default:k(()=>[fe(" "+x(p.label),1)]),_:2},1032,["variant","onClick"])]))),128))]))],64)):$("",!0)],64))}}),xn=K(Bn,[["__scopeId","data-v-b91fd905"]]);function Mn(e){const i=new AbortController,t=Math.round(Date.now()/1e3)-3600*24*14;return new ie(async(n,c,m)=>{m(()=>i.abort());try{const{data:u}=await e.search("/",{signal:i.signal,details:!0,data:xi(t)}),f=u.results.map(d=>Ue(d));n(f)}catch(u){c(u)}})}function Un(e,i){const t=new AbortController;return new ie(async(n,c,m)=>{m(()=>t.abort());try{const u=(await e.getDirectoryContents(Te(Le,i),{signal:t.signal,details:!0,includeSelf:!0,data:oa()})).data.map(f=>Ue(f));n({contents:u.filter(({path:f})=>f!==i),folder:u.find(({path:f})=>f===i)})}catch(u){c(u)}})}async function zn(e,i){const{data:t}=await e.stat(Te(Le,i),{details:!0,data:oa()});return Ue(t)}function Vn(e,i){const t=zi(),n=st([]),c=st(null),m=B(!0),u=B(null);async function f(p){const l=Te(i.value,p);await t.createDirectory(Te(Le,l));const g=await zn(t,l);return n.value=[...n.value,g],g}async function d(){u.value&&u.value.cancel(),m.value=!0,e.value==="favorites"?u.value=Vi(t,i.value):e.value==="recent"?u.value=Mn(t):u.value=Un(t,i.value);const p=await u.value;if(p)"folder"in p?(c.value=p.folder,n.value=p.contents):(c.value=null,n.value=p);else return;u.value=null,m.value=!1}return Kt([e,i],()=>d()),Ae(()=>d()),{isLoading:m,files:n,folder:c,loadFiles:d,createDirectory:f}}function Gn(e){const i=O(()=>e.value.map(t=>t.split("/")));return{isSupportedMimeType:t=>{const n=t.split("/");return i.value.some(([c,m])=>(n[0]===c||c==="*")&&(n[1]===m||m==="*"))}}}const Xn={class:"file-picker__main"},jn={key:1,class:"file-picker__view"},qn=de({__name:"FilePicker",props:{buttons:{},name:{},allowPickDirectory:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},disabledNavigation:{type:Boolean,default:!1},filterFn:{type:Function,default:void 0},canPickFn:{type:Function,default:void 0},mimetypeFilter:{default:()=>[]},multiselect:{type:Boolean,default:!1},path:{default:void 0}},emits:["close"],setup(e,{emit:i}){const t=e,n=i,c=B(!0),m=B("files"),u=B(window?.sessionStorage.getItem("NC.FilePicker.LastPath")||"/"),f=B(""),d=O({get:()=>m.value==="files"?f.value||t.path||u.value:"/",set:S=>{f.value=S}}),p=st([]),{files:l,folder:g,isLoading:E,loadFiles:I,createDirectory:G}=Vn(m,d);Kt([f],()=>{t.path===void 0&&f.value&&window.sessionStorage.setItem("NC.FilePicker.LastPath",f.value),p.value=[]});let b=!1;const H=O(()=>{const S=p.value.length===0&&t.allowPickDirectory&&g.value?[g.value]:p.value;return(typeof t.buttons=="function"?t.buttons(S,d.value,m.value):t.buttons).map(y=>({...y,disabled:y.disabled||E.value,callback:()=>{b=!0,X(y.callback,S)}}))});async function X(S,y){await S(y),n("close",y),b=!1}const te=O(()=>m.value==="favorites"?A("Favorites"):m.value==="recent"?A("Recent"):""),J=B(""),{isSupportedMimeType:C}=Gn(Jt(t,"mimetypeFilter"));Ae(()=>I());const{showHiddenFiles:F}=ha(),U=O(()=>{let S=l.value;return F.value||(S=S.filter(y=>!y.basename.startsWith("."))),t.mimetypeFilter.length>0&&(S=S.filter(y=>y.type==="folder"||y.mime&&C(y.mime))),J.value&&(S=S.filter(y=>y.basename.toLowerCase().includes(J.value.toLowerCase()))),t.filterFn&&(S=S.filter(y=>t.filterFn(y))),S}),D=O(()=>m.value==="files"?A("Upload some content or sync with your devices!"):m.value==="recent"?A("Files and folders you recently modified will show up here."):A("Files and folders you mark as favorite will show up here."));async function re(S){try{const y=await G(S);f.value=y.path,ka("files:node:created",l.value.filter(N=>N.basename===S)[0])}catch(y){Ie.warn("Could not create new folder",{name:S,error:y}),ct(A("Could not create the new folder"))}}function o(S){!S&&!b&&n("close")}return(S,y)=>(v(),M(w(za),{open:c.value,"onUpdate:open":[y[6]||(y[6]=N=>c.value=N),o],buttons:H.value,name:e.name,size:"large","content-classes":"file-picker__content","dialog-classes":"file-picker","navigation-classes":"file-picker__navigation"},{navigation:k(({isCollapsed:N})=>[P(xn,{"current-view":m.value,"onUpdate:currentView":y[0]||(y[0]=ne=>m.value=ne),"filter-string":J.value,"onUpdate:filterString":y[1]||(y[1]=ne=>J.value=ne),"is-collapsed":N,"disabled-navigation":e.disabledNavigation},null,8,["current-view","filter-string","is-collapsed","disabled-navigation"])]),default:k(()=>[T("div",Xn,[m.value==="files"?(v(),M(bn,{key:0,path:d.value,"onUpdate:path":y[2]||(y[2]=N=>d.value=N),"show-menu":!e.noMenu,onCreateNode:re},null,8,["path","show-menu"])):(v(),_("div",jn,[T("h3",null,x(te.value),1)])),w(E)||U.value.length>0?(v(),M(rn,{key:2,path:d.value,"onUpdate:path":[y[3]||(y[3]=N=>d.value=N),y[5]||(y[5]=N=>m.value="files")],"selected-files":p.value,"onUpdate:selectedFiles":y[4]||(y[4]=N=>p.value=N),"allow-pick-directory":e.allowPickDirectory,"current-view":m.value,files:U.value,multiselect:e.multiselect,loading:w(E),name:te.value,"can-pick":e.canPickFn},null,8,["path","selected-files","allow-pick-directory","current-view","files","multiselect","loading","name","can-pick"])):J.value?(v(),M(w(Ot),{key:3,name:w(A)("No matching files"),description:w(A)("No files matching your filter were found.")},{icon:k(()=>[P(ot)]),_:1},8,["name","description"])):(v(),M(w(Ot),{key:4,name:w(A)("No files in here"),description:D.value},{icon:k(()=>[P(ot)]),_:1},8,["name","description"]))])]),_:1},8,["open","buttons","name"]))}}),cs=K(qn,[["__scopeId","data-v-303416d3"]]);export{cs as default}; -//# sourceMappingURL=FilePicker-W-IYpVkn-DxMl7UgI.chunk.mjs.map +`?(a.line++,a.column=0):a.column++);a.textNode+=r.substring(L,h-1)}s==="<"&&!(a.sawRoot&&a.closedRoot&&!a.strict)?(a.state=o.OPEN_WAKA,a.startTagPosition=a.position):(!C(s)&&(!a.sawRoot||a.closedRoot)&&R(a,"Text data outside of root node."),s==="&"?a.state=o.TEXT_ENTITY:a.textNode+=s);continue;case o.SCRIPT:s==="<"?a.state=o.SCRIPT_ENDING:a.script+=s;continue;case o.SCRIPT_ENDING:s==="/"?a.state=o.CLOSE_TAG:(a.script+="<"+s,a.state=o.SCRIPT);continue;case o.OPEN_WAKA:if(s==="!")a.state=o.SGML_DECL,a.sgmlDecl="";else if(!C(s))if(D(H,s))a.state=o.OPEN_TAG,a.tagName=s;else if(s==="/")a.state=o.CLOSE_TAG,a.tagName="";else if(s==="?")a.state=o.PROC_INST,a.procInstName=a.procInstBody="";else{if(R(a,"Unencoded <"),a.startTagPosition+1"?(N(a,"onsgmldeclaration",a.sgmlDecl),a.sgmlDecl="",a.state=o.TEXT):(F(s)&&(a.state=o.SGML_DECL_QUOTED),a.sgmlDecl+=s);continue;case o.SGML_DECL_QUOTED:s===a.q&&(a.state=o.SGML_DECL,a.q=""),a.sgmlDecl+=s;continue;case o.DOCTYPE:s===">"?(a.state=o.TEXT,N(a,"ondoctype",a.doctype),a.doctype=!0):(a.doctype+=s,s==="["?a.state=o.DOCTYPE_DTD:F(s)&&(a.state=o.DOCTYPE_QUOTED,a.q=s));continue;case o.DOCTYPE_QUOTED:a.doctype+=s,s===a.q&&(a.q="",a.state=o.DOCTYPE);continue;case o.DOCTYPE_DTD:s==="]"?(a.doctype+=s,a.state=o.DOCTYPE):s==="<"?(a.state=o.OPEN_WAKA,a.startTagPosition=a.position):F(s)?(a.doctype+=s,a.state=o.DOCTYPE_DTD_QUOTED,a.q=s):a.doctype+=s;continue;case o.DOCTYPE_DTD_QUOTED:a.doctype+=s,s===a.q&&(a.state=o.DOCTYPE_DTD,a.q="");continue;case o.COMMENT:s==="-"?a.state=o.COMMENT_ENDING:a.comment+=s;continue;case o.COMMENT_ENDING:s==="-"?(a.state=o.COMMENT_ENDED,a.comment=gt(a.opt,a.comment),a.comment&&N(a,"oncomment",a.comment),a.comment=""):(a.comment+="-"+s,a.state=o.COMMENT);continue;case o.COMMENT_ENDED:s!==">"?(R(a,"Malformed comment"),a.comment+="--"+s,a.state=o.COMMENT):a.doctype&&a.doctype!==!0?a.state=o.DOCTYPE_DTD:a.state=o.TEXT;continue;case o.CDATA:s==="]"?a.state=o.CDATA_ENDING:a.cdata+=s;continue;case o.CDATA_ENDING:s==="]"?a.state=o.CDATA_ENDING_2:(a.cdata+="]"+s,a.state=o.CDATA);continue;case o.CDATA_ENDING_2:s===">"?(a.cdata&&N(a,"oncdata",a.cdata),N(a,"onclosecdata"),a.cdata="",a.state=o.TEXT):s==="]"?a.cdata+="]":(a.cdata+="]]"+s,a.state=o.CDATA);continue;case o.PROC_INST:s==="?"?a.state=o.PROC_INST_ENDING:C(s)?a.state=o.PROC_INST_BODY:a.procInstName+=s;continue;case o.PROC_INST_BODY:if(!a.procInstBody&&C(s))continue;s==="?"?a.state=o.PROC_INST_ENDING:a.procInstBody+=s;continue;case o.PROC_INST_ENDING:s===">"?(N(a,"onprocessinginstruction",{name:a.procInstName,body:a.procInstBody}),a.procInstName=a.procInstBody="",a.state=o.TEXT):(a.procInstBody+="?"+s,a.state=o.PROC_INST_BODY);continue;case o.OPEN_TAG:D(X,s)?a.tagName+=s:(fa(a),s===">"?pe(a):s==="/"?a.state=o.OPEN_TAG_SLASH:(C(s)||R(a,"Invalid character in tag name"),a.state=o.ATTRIB));continue;case o.OPEN_TAG_SLASH:s===">"?(pe(a,!0),Ge(a)):(R(a,"Forward-slash in opening tag not followed by >"),a.state=o.ATTRIB);continue;case o.ATTRIB:if(C(s))continue;s===">"?pe(a):s==="/"?a.state=o.OPEN_TAG_SLASH:D(H,s)?(a.attribName=s,a.attribValue="",a.state=o.ATTRIB_NAME):R(a,"Invalid attribute name");continue;case o.ATTRIB_NAME:s==="="?a.state=o.ATTRIB_VALUE:s===">"?(R(a,"Attribute without value"),a.attribValue=a.attribName,Ve(a),pe(a)):C(s)?a.state=o.ATTRIB_NAME_SAW_WHITE:D(X,s)?a.attribName+=s:R(a,"Invalid attribute name");continue;case o.ATTRIB_NAME_SAW_WHITE:if(s==="=")a.state=o.ATTRIB_VALUE;else{if(C(s))continue;R(a,"Attribute without value"),a.tag.attributes[a.attribName]="",a.attribValue="",N(a,"onattribute",{name:a.attribName,value:""}),a.attribName="",s===">"?pe(a):D(H,s)?(a.attribName=s,a.state=o.ATTRIB_NAME):(R(a,"Invalid attribute name"),a.state=o.ATTRIB)}continue;case o.ATTRIB_VALUE:if(C(s))continue;F(s)?(a.q=s,a.state=o.ATTRIB_VALUE_QUOTED):(a.opt.unquotedAttributeValues||ge(a,"Unquoted attribute value"),a.state=o.ATTRIB_VALUE_UNQUOTED,a.attribValue=s);continue;case o.ATTRIB_VALUE_QUOTED:if(s!==a.q){s==="&"?a.state=o.ATTRIB_VALUE_ENTITY_Q:a.attribValue+=s;continue}Ve(a),a.q="",a.state=o.ATTRIB_VALUE_CLOSED;continue;case o.ATTRIB_VALUE_CLOSED:C(s)?a.state=o.ATTRIB:s===">"?pe(a):s==="/"?a.state=o.OPEN_TAG_SLASH:D(H,s)?(R(a,"No whitespace between attributes"),a.attribName=s,a.attribValue="",a.state=o.ATTRIB_NAME):R(a,"Invalid attribute name");continue;case o.ATTRIB_VALUE_UNQUOTED:if(!U(s)){s==="&"?a.state=o.ATTRIB_VALUE_ENTITY_U:a.attribValue+=s;continue}Ve(a),s===">"?pe(a):a.state=o.ATTRIB;continue;case o.CLOSE_TAG:if(a.tagName)s===">"?Ge(a):D(X,s)?a.tagName+=s:a.script?(a.script+=""?Ge(a):R(a,"Invalid characters in closing tag");continue;case o.TEXT_ENTITY:case o.ATTRIB_VALUE_ENTITY_Q:case o.ATTRIB_VALUE_ENTITY_U:var V,Q;switch(a.state){case o.TEXT_ENTITY:V=o.TEXT,Q="textNode";break;case o.ATTRIB_VALUE_ENTITY_Q:V=o.ATTRIB_VALUE_QUOTED,Q="attribValue";break;case o.ATTRIB_VALUE_ENTITY_U:V=o.ATTRIB_VALUE_UNQUOTED,Q="attribValue";break}if(s===";"){var Z=va(a);a.opt.unparsedEntities&&!Object.values(i.XML_ENTITIES).includes(Z)?(a.entity="",a.state=V,a.write(Z)):(a[Q]+=Z,a.entity="",a.state=V)}else D(a.entity.length?J:te,s)?a.entity+=s:(R(a,"Invalid character in entity name"),a[Q]+="&"+a.entity+s,a.entity="",a.state=V);continue;default:throw new Error(a,"Unknown state: "+a.state)}return a.position>=a.bufferCheckPosition&&c(a),a}String.fromCodePoint||(function(){var r=String.fromCharCode,a=Math.floor,h=function(){var s=16384,L=[],z,V,Q=-1,Z=arguments.length;if(!Z)return"";for(var ve="";++Q1114111||a(j)!==j)throw RangeError("Invalid code point: "+j);j<=65535?L.push(j):(j-=65536,z=(j>>10)+55296,V=j%1024+56320,L.push(z,V)),(Q+1===Z||L.length>s)&&(ve+=r.apply(null,L),L.length=0)}return ve};Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:h,configurable:!0,writable:!0}):String.fromCodePoint=h})()})(e)})(qt)),qt}Zi();var Fe=(e=>(e.ReservedName="reserved name",e.Character="character",e.Extension="extension",e))(Fe||{});class be extends Error{constructor(i){super(`Invalid ${i.reason} '${i.segment}' in filename '${i.filename}'`,{cause:i})}get filename(){return this.cause.filename}get reason(){return this.cause.reason}get segment(){return this.cause.segment}}function Ki(e){const i=Ra().files,t=i.forbidden_filename_characters??window._oc_config?.forbidden_filenames_characters??["/","\\"];for(const u of t)if(e.includes(u))throw new be({segment:u,reason:"character",filename:e});if(e=e.toLocaleLowerCase(),(i.forbidden_filenames??[".htaccess"]).includes(e))throw new be({filename:e,segment:e,reason:"reserved name"});const n=e.indexOf(".",1),c=e.substring(0,n===-1?void 0:n);if((i.forbidden_filename_basenames??[]).includes(c))throw new be({filename:e,segment:c,reason:"reserved name"});const m=i.forbidden_filename_extensions??[".part",".filepart"];for(const u of m)if(e.length>u.length&&e.endsWith(u))throw new be({segment:u,reason:"extension",filename:e})}const at=["B","KB","MB","GB","TB","PB"],it=["B","KiB","MiB","GiB","TiB","PiB"];function Ji(e,i=!1,t=!1,n=!1){t=t&&!n,typeof e=="string"&&(e=Number(e));let c=e>0?Math.floor(Math.log(e)/Math.log(n?1e3:1024)):0;c=Math.min((t?it.length:at.length)-1,c);const m=t?it[c]:at[c];let u=(e/Math.pow(n?1e3:1024,c)).toFixed(1);return i===!0&&c===0?(u!=="0.0"?"< 1 ":"0 ")+(t?it[1]:at[1]):(c<2?u=parseFloat(u).toFixed(0):u=parseFloat(u).toLocaleString(Zt()),u+" "+m)}function Wt(e){return e instanceof Date?e.toISOString():String(e)}function er(e,i,t){i=i??[m=>m],t=t??[];const n=i.map((m,u)=>(t[u]??"asc")==="asc"?1:-1),c=Intl.Collator([Oa(),Zt()],{numeric:!0,usage:"sort"});return[...e].sort((m,u)=>{for(const[f,d]of i.entries()){const p=c.compare(Wt(d(m)),Wt(d(u)));if(p!==0)return p*n[f]}return 0})}function tr(e,i={}){const t={sortingMode:"basename",sortingOrder:"asc",...i};function n(u){const f=u.displayname||u.attributes?.displayname||u.basename||"";return u.type===le.Folder?f:f.lastIndexOf(".")>0?f.slice(0,f.lastIndexOf(".")):f}const c=[...t.sortFavoritesFirst?[u=>u.attributes?.favorite!==1]:[],...t.sortFoldersFirst?[u=>u.type!=="folder"]:[],...t.sortingMode!=="basename"?[u=>u[t.sortingMode]??u.attributes[t.sortingMode]]:[],u=>n(u),u=>u.basename],m=[...t.sortFavoritesFirst?["asc"]:[],...t.sortFoldersFirst?["asc"]:[],...t.sortingMode==="mtime"?[t.sortingOrder==="asc"?"desc":"asc"]:[],...t.sortingMode!=="mtime"&&t.sortingMode!=="basename"?[t.sortingOrder]:[],t.sortingOrder,t.sortingOrder];return er(e,c,m)}const ar=new Va({concurrency:5});function ir(e){const{resolve:i,promise:t}=Promise.withResolvers();return ar.add(()=>{const n=new Image;return n.onerror=()=>i(!1),n.onload=()=>i(!0),n.src=e,t}),t}function rr(e,i={}){i={size:32,cropPreview:!1,mimeFallback:!0,...i};try{const t=e.attributes?.previewUrl||ut("/core/preview?fileId={fileid}",{fileid:e.fileid});let n;try{n=new URL(t)}catch{n=new URL(t,window.location.origin)}return n.searchParams.set("x",`${i.size}`),n.searchParams.set("y",`${i.size}`),n.searchParams.set("mimeFallback",`${i.mimeFallback}`),n.searchParams.set("a",i.cropPreview===!0?"0":"1"),n.searchParams.set("c",`${e.attributes.etag}`),n}catch{return null}}function nr(e,i){const t=B(null),n=B(!1);return Sa(()=>{n.value=!1,t.value=rr(we(e),we(i||{})),t.value&&we(e).type===le.File&&ir(t.value.href).then(c=>{n.value=c})}),{previewURL:t,previewLoaded:n}}const K=(e,i)=>{const t=e.__vccOpts||e;for(const[n,c]of i)t[n]=c;return t},sr={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},or=["aria-hidden","aria-label"],lr=["fill","width","height"],cr={d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"},ur={key:0};function dr(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon file-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",cr,[t.title?(v(),_("title",ur,M(t.title),1)):$("",!0)])],8,lr))],16,or)}const ot=K(sr,[["render",dr]]),pr={name:"MenuDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mr=["aria-hidden","aria-label"],hr=["fill","width","height"],fr={d:"M7,10L12,15L17,10H7Z"},vr={key:0};function Er(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon menu-down-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",fr,[t.title?(v(),_("title",vr,M(t.title),1)):$("",!0)])],8,hr))],16,mr)}const rt=K(pr,[["render",Er]]),gr={name:"MenuUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},_r=["aria-hidden","aria-label"],br=["fill","width","height"],wr={d:"M7,15L12,10L17,15H7Z"},yr={key:0};function Tr(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon menu-up-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",wr,[t.title?(v(),_("title",yr,M(t.title),1)):$("",!0)])],8,br))],16,_r)}const nt=K(gr,[["render",Tr]]),Ir={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Nr=["aria-hidden","aria-label"],Ar=["fill","width","height"],Cr={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},Lr={key:0};function Dr(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",Cr,[t.title?(v(),_("title",Lr,M(t.title),1)):$("",!0)])],8,Ar))],16,Nr)}const pa=K(Ir,[["render",Dr]]),ma={"file-picker__file-icon":"_file-picker__file-icon_3v9zx_9","file-picker__file-icon--primary":"_file-picker__file-icon--primary_3v9zx_21","file-picker__file-icon-overlay":"_file-picker__file-icon-overlay_3v9zx_25"},Rr=de({__name:"FilePreview",props:{node:{},cropImagePreviews:{type:Boolean}},setup(e){const i=e,t=B(ma),{previewURL:n,previewLoaded:c}=nr(Jt(i,"node"),O(()=>({cropPreview:i.cropImagePreviews}))),m=O(()=>i.node.type===le.File),u=O(()=>{if(i.node.type!==le.Folder)return null;if(i.node.attributes?.["is-encrypted"]===1)return Ka;if(i.node.attributes?.["is-tag"])return Ja;const f=Object.values(i.node.attributes?.["share-types"]||{}).flat();if(f.some(d=>d===Ct.Link||d===Ct.Email))return ei;if(f.length>0)return At;switch(i.node.attributes?.["mount-type"]){case"external":case"external-session":return ai;case"group":return ti;case"shared":return At}return null});return(f,d)=>(v(),_("div",{style:xa(w(c)?{backgroundImage:`url(${w(n)})`}:void 0),class:Ee(t.value["file-picker__file-icon"])},[w(c)?$("",!0):(v(),_(oe,{key:0},[m.value?(v(),x(ot,{key:0,size:32})):(v(),_(oe,{key:1},[u.value?(v(),x(w(aa),{key:0,class:Ee(t.value["file-picker__file-icon-overlay"]),inline:"",path:u.value,size:16},null,8,["class","path"])):$("",!0),P(pa,{class:Ee(t.value["file-picker__file-icon--primary"]),size:32},null,8,["class"])],64))],64))],6))}}),Or=["tabindex","aria-selected","data-filename"],Sr={class:"row-name"},kr={class:"file-picker__name-container","data-testid":"row-name"},Fr=["title","textContent"],$r=["textContent"],Pr={class:"row-size"},Br={class:"row-modified"},Mr=de({__name:"FileListRow",props:{allowPickDirectory:{type:Boolean},selected:{type:Boolean},showCheckbox:{type:Boolean},canPick:{type:Boolean},node:{},cropImagePreviews:{type:Boolean}},emits:["update:selected","enterDirectory"],setup(e,{emit:i}){const t=e,n=i,c=O(()=>t.node.mtime??0),m=O(()=>Qt(t.node.displayname)),u=O(()=>t.node.displayname.slice(0,m.value?-m.value.length:void 0)),f=O(()=>t.node.type===le.Folder),d=O(()=>t.canPick&&(t.allowPickDirectory||!f.value)),p=O(()=>(t.node.permissions&ee.READ)===ee.READ);function l(){d.value&&n("update:selected",!t.selected)}function E(){f.value?p.value&&n("enterDirectory",t.node):l()}function g(I){I.key==="Enter"&&E()}return(I,G)=>(v(),_("tr",ae({tabindex:e.showCheckbox&&!f.value?void 0:0,"aria-selected":d.value?e.selected:void 0,class:["file-picker__row",[{"file-picker__row--selected":e.selected&&!e.showCheckbox,"file-picker__row--not-navigatable":f.value&&!p.value,"file-picker__row--not-pickable":!d.value}]],"data-filename":e.node.basename,"data-testid":"file-list-row"},Ma({click:E,...!e.showCheckbox||f.value?{keydown:g}:{}},!0)),[e.showCheckbox?(v(),_("td",{key:0,class:"row-checkbox",onClick:Se(()=>{},["stop"])},[P(w(ia),{"aria-label":w(A)("Select the row for {nodename}",{nodename:u.value}),disabled:!d.value,"data-testid":"row-checkbox","model-value":e.selected,"onUpdate:modelValue":l},null,8,["aria-label","disabled","model-value"])])):$("",!0),T("td",Sr,[T("div",kr,[P(Rr,{node:e.node,"crop-image-previews":e.cropImagePreviews},null,8,["node","crop-image-previews"]),T("div",{class:"file-picker__file-name",title:u.value,textContent:M(u.value)},null,8,Fr),T("div",{class:"file-picker__file-extension",textContent:M(m.value)},null,8,$r)])]),T("td",Pr,M(w(Ji)(e.node.size||0)),1),T("td",Br,[P(w(Wa),{timestamp:c.value,"ignore-seconds":""},null,8,["timestamp"])])],16,Or))}}),xr=K(Mr,[["__scopeId","data-v-2af740c4"]]),Ur={"aria-hidden":"true",class:"file-picker__row loading-row"},zr={key:0,class:"row-checkbox"},Vr={class:"row-name"},Gr={class:"row-wrapper"},Xr=de({__name:"LoadingTableRow",props:{showCheckbox:{type:Boolean}},setup(e){return(i,t)=>(v(),_("tr",Ur,[e.showCheckbox?(v(),_("td",zr,[...t[0]||(t[0]=[T("span",null,null,-1)])])):$("",!0),T("td",Vr,[T("div",Gr,[T("span",{class:Ee(w(ma)["file-picker__file-icon"])},null,2),t[1]||(t[1]=T("span",null,null,-1))])]),t[2]||(t[2]=T("td",{class:"row-size"},[T("span")],-1)),t[3]||(t[3]=T("td",{class:"row-modified"},[T("span")],-1))]))}}),jr=K(Xr,[["__scopeId","data-v-1f96131b"]]);function ha(){const e=ea("files","config",null),i=B(e?.show_hidden??!0),t=B(e?.sort_favorites_first??!0),n=B(e?.crop_image_previews??!0);return Ae(async()=>{if(Ne())Ie.debug("Skip loading files settings - currently on public share");else try{const{data:c}=await ra.get(ut("/apps/files/api/v1/configs"));i.value=c?.data?.show_hidden??!1,t.value=c?.data?.sort_favorites_first??!0,n.value=c?.data?.crop_image_previews??!0}catch(c){Ie.error("Could not load files settings",{error:c}),ct(A("Could not load files settings"))}}),{showHiddenFiles:i,sortFavoritesFirst:t,cropImagePreviews:n}}function qr(e){const i=p=>p==="asc"?"ascending":p==="desc"?"descending":"none",t=ea("files","viewConfigs",null),n=B({sortBy:t?.files?.sorting_mode??"basename",order:i(t?.files?.sorting_direction??"asc")}),c=B({sortBy:t?.recent?.sorting_mode??"basename",order:i(t?.recent?.sorting_direction??"asc")}),m=B({sortBy:t?.favorites?.sorting_mode??"basename",order:i(t?.favorites?.sorting_direction??"asc")});Ae(async()=>{if(Ne())Ie.debug("Skip loading files views - currently on public share");else try{const{data:p}=await ra.get(ut("/apps/files/api/v1/views"));n.value={sortBy:p?.data?.files?.sorting_mode??"basename",order:i(p?.data?.files?.sorting_direction)},m.value={sortBy:p?.data?.favorites?.sorting_mode??"basename",order:i(p?.data?.favorites?.sorting_direction)},c.value={sortBy:p?.data?.recent?.sorting_mode??"basename",order:i(p?.data?.recent?.sorting_direction)}}catch(p){Ie.error("Could not load files views",{error:p}),ct(A("Could not load files views"))}});const u=O(()=>we(e||"files")==="files"?n.value:we(e)==="recent"?c.value:m.value),f=O(()=>u.value.sortBy),d=O(()=>u.value.order);return{filesViewConfig:n,favoritesViewConfig:m,recentViewConfig:c,currentConfig:u,sortBy:f,order:d}}const Hr={key:0,class:"row-checkbox"},Wr={class:"hidden-visually"},Yr=["aria-sort"],Qr={class:"header-wrapper"},Zr={key:2,style:{width:"44px"}},Kr=["aria-sort"],Jr={key:2,style:{width:"44px"}},en=["aria-sort"],tn={key:2,style:{width:"44px"}},an=de({__name:"FileList",props:$a({currentView:{},multiselect:{type:Boolean},allowPickDirectory:{type:Boolean},loading:{type:Boolean},files:{},canPick:{type:Function}},{path:{required:!0},pathModifiers:{},selectedFiles:{required:!0},selectedFilesModifiers:{}}),emits:["update:path","update:selectedFiles"],setup(e){const i=Nt(e,"path"),t=Nt(e,"selectedFiles"),n=e,c=B(),{currentConfig:m}=qr(n.currentView),u=O(()=>c.value??m.value),f=O(()=>u.value.sortBy==="basename"?u.value.order==="none"?void 0:u.value.order:void 0),d=O(()=>u.value.sortBy==="size"?u.value.order==="none"?void 0:u.value.order:void 0),p=O(()=>u.value.sortBy==="mtime"?u.value.order==="none"?void 0:u.value.order:void 0);function l(F){u.value.sortBy===F?u.value.order==="ascending"?c.value={sortBy:u.value.sortBy,order:"descending"}:c.value={sortBy:u.value.sortBy,order:"ascending"}:c.value={sortBy:F,order:"ascending"}}const{sortFavoritesFirst:E,cropImagePreviews:g}=ha(),I=O(()=>tr(n.files,{sortFoldersFirst:!0,sortFavoritesFirst:E.value,sortingOrder:u.value.order==="descending"?"desc":"asc",sortingMode:u.value.sortBy})),G=O(()=>n.files.filter(F=>n.allowPickDirectory||F.type!==le.Folder)),b=O(()=>!n.loading&&t.value.length>0&&t.value.length>=G.value.length);function H(){t.value.lengthU.path!==F.path):n.multiselect?t.value=[...t.value,F]:t.value=[F]}function te(F){i.value=F.path}const J=B(4),C=B();{const F=()=>Pa(()=>{const U=C.value?.parentElement?.children||[];let D=C.value?.parentElement?.clientHeight||450;for(let re=0;re{window.addEventListener("resize",F),F()}),Ba(()=>{window.removeEventListener("resize",F)})}return(F,U)=>(v(),_("div",{ref_key:"fileContainer",ref:C,class:"file-picker__files"},[T("table",null,[T("thead",null,[T("tr",null,[e.multiselect?(v(),_("th",Hr,[T("span",Wr,M(w(A)("Select entry")),1),e.multiselect?(v(),x(w(ia),{key:0,"aria-label":w(A)("Select all entries"),"data-testid":"select-all-checkbox","model-value":b.value,"onUpdate:modelValue":H},null,8,["aria-label","model-value"])):$("",!0)])):$("",!0),T("th",{"aria-sort":f.value,class:"row-name"},[T("div",Qr,[U[3]||(U[3]=T("span",{class:"file-picker__header-preview"},null,-1)),P(w(ye),{"data-test":"file-picker_sort-name",variant:"tertiary",wide:"",onClick:U[0]||(U[0]=D=>l("basename"))},{icon:k(()=>[f.value==="ascending"?(v(),x(nt,{key:0,size:20})):f.value==="descending"?(v(),x(rt,{key:1,size:20})):(v(),_("span",Zr))]),default:k(()=>[fe(" "+M(w(A)("Name")),1)]),_:1})])],8,Yr),T("th",{"aria-sort":d.value,class:"row-size"},[P(w(ye),{variant:"tertiary",wide:"",onClick:U[1]||(U[1]=D=>l("size"))},{icon:k(()=>[d.value==="ascending"?(v(),x(nt,{key:0,size:20})):d.value==="descending"?(v(),x(rt,{key:1,size:20})):(v(),_("span",Jr))]),default:k(()=>[fe(" "+M(w(A)("Size")),1)]),_:1})],8,Kr),T("th",{"aria-sort":p.value,class:"row-modified"},[P(w(ye),{variant:"tertiary",wide:"",onClick:U[2]||(U[2]=D=>l("mtime"))},{icon:k(()=>[p.value==="ascending"?(v(),x(nt,{key:0,size:20})):p.value==="descending"?(v(),x(rt,{key:1,size:20})):(v(),_("span",tn))]),default:k(()=>[fe(" "+M(w(A)("Modified")),1)]),_:1})],8,en)])]),T("tbody",null,[e.loading?(v(!0),_(oe,{key:0},$e(J.value,D=>(v(),x(jr,{key:D,"show-checkbox":e.multiselect},null,8,["show-checkbox"]))),128)):(v(!0),_(oe,{key:1},$e(I.value,D=>(v(),x(xr,{key:D.fileid||D.path,"allow-pick-directory":e.allowPickDirectory,"show-checkbox":e.multiselect,"can-pick":(e.multiselect||t.value.length===0||t.value.includes(D))&&(e.canPick===void 0||e.canPick(D)),selected:t.value.includes(D),node:D,"crop-image-previews":w(g),"onUpdate:selected":re=>X(D),onEnterDirectory:te},null,8,["allow-pick-directory","show-checkbox","can-pick","selected","node","crop-image-previews","onUpdate:selected"]))),128))])])],512))}}),rn=K(an,[["__scopeId","data-v-68ec5c33"]]),nn={name:"HomeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},sn=["aria-hidden","aria-label"],on=["fill","width","height"],ln={d:"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"},cn={key:0};function un(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon home-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",ln,[t.title?(v(),_("title",cn,M(t.title),1)):$("",!0)])],8,on))],16,sn)}const dn=K(nn,[["render",un]]),pn={name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},mn=["aria-hidden","aria-label"],hn=["fill","width","height"],fn={d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"},vn={key:0};function En(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon plus-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",fn,[t.title?(v(),_("title",vn,M(t.title),1)):$("",!0)])],8,hn))],16,mn)}const gn=K(pn,[["render",En]]),_n=de({__name:"FilePickerBreadcrumbs",props:{path:{},showMenu:{type:Boolean}},emits:["update:path","create-node"],setup(e,{emit:i}){const t=e,n=i,c=B(!1),m=B(""),u=Fa("nameInput");function f(){const l=m.value.trim(),E=u.value?.$el?.querySelector("input");let g="";try{Ki(l)}catch(I){if(!(I instanceof be))throw I;switch(I.reason){case Fe.Character:g=A('"{char}" is not allowed inside a folder name.',{char:I.segment});break;case Fe.ReservedName:g=A('"{segment}" is a reserved name and not allowed for folder names.',{segment:I.segment});break;case Fe.Extension:g=A('Folder names must not end with "{extension}".',{extension:I.segment});break;default:g=A("Invalid folder name.")}}return E&&E.setCustomValidity(g),g===""}function d(){const l=m.value.trim();f()&&(c.value=!1,n("create-node",l),m.value="")}const p=O(()=>t.path.split("/").filter(l=>l!=="").map((l,E,g)=>({name:l,path:"/"+g.slice(0,E+1).join("/")})));return(l,E)=>(v(),x(w(Li),{class:"file-picker__breadcrumbs"},Yt({default:k(()=>[P(w(Pe),{name:w(A)("All files"),title:w(A)("Home"),onClick:E[0]||(E[0]=g=>n("update:path","/"))},{icon:k(()=>[P(dn,{size:20})]),_:1},8,["name","title"]),(v(!0),_(oe,null,$e(p.value,g=>(v(),x(w(Pe),{key:g.path,name:g.name,title:g.path,onClick:I=>n("update:path",g.path)},null,8,["name","title","onClick"]))),128))]),_:2},[e.showMenu?{name:"actions",fn:k(()=>[P(w(lt),{open:c.value,"onUpdate:open":E[2]||(E[2]=g=>c.value=g),"aria-label":w(A)("Create directory"),"force-menu":!0,"force-name":!0,"menu-name":w(A)("New"),variant:"secondary",onClose:E[3]||(E[3]=g=>m.value="")},{icon:k(()=>[P(gn,{size:20})]),default:k(()=>[P(w(Ga),{ref_key:"nameInput",ref:u,modelValue:m.value,"onUpdate:modelValue":[E[1]||(E[1]=g=>m.value=g),f],label:w(A)("New folder"),placeholder:w(A)("New folder name"),onSubmit:d},{icon:k(()=>[P(pa,{size:20})]),_:1},8,["modelValue","label","placeholder"])]),_:1},8,["open","aria-label","menu-name"])]),key:"0"}:void 0]),1024))}}),bn=K(_n,[["__scopeId","data-v-4ce40fd0"]]),wn={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},yn=["aria-hidden","aria-label"],Tn=["fill","width","height"],In={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},Nn={key:0};function An(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon close-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",In,[t.title?(v(),_("title",Nn,M(t.title),1)):$("",!0)])],8,Tn))],16,yn)}const Cn=K(wn,[["render",An]]),Ln={name:"MagnifyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Dn=["aria-hidden","aria-label"],Rn=["fill","width","height"],On={d:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},Sn={key:0};function kn(e,i,t,n,c,m){return v(),_("span",ae(e.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon magnify-icon",role:"img",onClick:i[0]||(i[0]=u=>e.$emit("click",u))}),[(v(),_("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[T("path",On,[t.title?(v(),_("title",Sn,M(t.title),1)):$("",!0)])],8,Rn))],16,Dn)}const Fn=K(Ln,[["render",kn]]);function $n(e){const i=[{id:"files",label:A("All files"),icon:Ya},{id:"recent",label:A("Recent"),icon:Qa},{id:"favorites",label:A("Favorites"),icon:Za}],t=e.value?i.filter(({id:n})=>n==="files"):i;return{allViews:i,availableViews:t}}const Pn={key:0,class:"file-picker__side"},Bn=de({__name:"FilePickerNavigation",props:{currentView:{},filterString:{},isCollapsed:{type:Boolean},disabledNavigation:{type:Boolean}},emits:["update:currentView","update:filterString"],setup(e,{emit:i}){const t=e,n=i,{availableViews:c}=$n(B(Be()===null)),m=O(()=>c.filter(f=>f.id===t.currentView)[0]??c[0]),u=f=>n("update:filterString",f.toString());return(f,d)=>(v(),_(oe,null,[P(w(ri),{class:"file-picker__filter-input",label:w(A)("Filter file list"),"show-trailing-button":!!e.filterString,"model-value":e.filterString,"onUpdate:modelValue":u,onTrailingButtonClick:d[0]||(d[0]=p=>u(""))},{"trailing-button-icon":k(()=>[P(Cn,{size:16})]),default:k(()=>[P(Fn,{size:16})]),_:1},8,["label","show-trailing-button","model-value"]),w(c).length>1&&!e.disabledNavigation?(v(),_(oe,{key:0},[e.isCollapsed?(v(),x(w(ii),{key:1,"aria-label":w(A)("Current view selector"),clearable:!1,searchable:!1,options:w(c),"model-value":m.value,"onUpdate:modelValue":d[1]||(d[1]=p=>n("update:currentView",p.id))},null,8,["aria-label","options","model-value"])):(v(),_("ul",Pn,[(v(!0),_(oe,null,$e(w(c),p=>(v(),_("li",{key:p.id},[P(w(ye),{variant:e.currentView===p.id?"primary":"tertiary",wide:!0,onClick:l=>f.$emit("update:currentView",p.id)},{icon:k(()=>[P(w(aa),{path:p.icon,size:20},null,8,["path"])]),default:k(()=>[fe(" "+M(p.label),1)]),_:2},1032,["variant","onClick"])]))),128))]))],64)):$("",!0)],64))}}),Mn=K(Bn,[["__scopeId","data-v-b91fd905"]]);function xn(e){const i=new AbortController,t=Math.round(Date.now()/1e3)-3600*24*14;return new ie(async(n,c,m)=>{m(()=>i.abort());try{const{data:u}=await e.search("/",{signal:i.signal,details:!0,data:Mi(t)}),f=u.results.map(d=>Ue(d));n(f)}catch(u){c(u)}})}function Un(e,i){const t=new AbortController;return new ie(async(n,c,m)=>{m(()=>t.abort());try{const u=(await e.getDirectoryContents(Te(Le,i),{signal:t.signal,details:!0,includeSelf:!0,data:oa()})).data.map(f=>Ue(f));n({contents:u.filter(({path:f})=>f!==i),folder:u.find(({path:f})=>f===i)})}catch(u){c(u)}})}async function zn(e,i){const{data:t}=await e.stat(Te(Le,i),{details:!0,data:oa()});return Ue(t)}function Vn(e,i){const t=zi(),n=st([]),c=st(null),m=B(!0),u=B(null);async function f(p){const l=Te(i.value,p);await t.createDirectory(Te(Le,l));const E=await zn(t,l);return n.value=[...n.value,E],E}async function d(){u.value&&u.value.cancel(),m.value=!0,e.value==="favorites"?u.value=Vi(t,i.value):e.value==="recent"?u.value=xn(t):u.value=Un(t,i.value);const p=await u.value;if(p)"folder"in p?(c.value=p.folder,n.value=p.contents):(c.value=null,n.value=p);else return;u.value=null,m.value=!1}return Kt([e,i],()=>d()),Ae(()=>d()),{isLoading:m,files:n,folder:c,loadFiles:d,createDirectory:f}}function Gn(e){const i=O(()=>e.value.map(t=>t.split("/")));return{isSupportedMimeType:t=>{const n=t.split("/");return i.value.some(([c,m])=>(n[0]===c||c==="*")&&(n[1]===m||m==="*"))}}}const Xn={class:"file-picker__main"},jn={key:1,class:"file-picker__view"},qn=de({__name:"FilePicker",props:{buttons:{},name:{},allowPickDirectory:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},disabledNavigation:{type:Boolean,default:!1},filterFn:{type:Function,default:void 0},canPickFn:{type:Function,default:void 0},mimetypeFilter:{default:()=>[]},multiselect:{type:Boolean,default:!1},path:{default:void 0}},emits:["close"],setup(e,{emit:i}){const t=e,n=i,c=B(!0),m=B("files"),u=B(window?.sessionStorage.getItem("NC.FilePicker.LastPath")||"/"),f=B(""),d=O({get:()=>m.value==="files"?f.value||t.path||u.value:"/",set:S=>{f.value=S}}),p=st([]),{files:l,folder:E,isLoading:g,loadFiles:I,createDirectory:G}=Vn(m,d);Kt([f],()=>{t.path===void 0&&f.value&&window.sessionStorage.setItem("NC.FilePicker.LastPath",f.value),p.value=[]});let b=!1;const H=O(()=>{const S=p.value.length===0&&t.allowPickDirectory&&E.value?[E.value]:p.value;return(typeof t.buttons=="function"?t.buttons(S,d.value,m.value):t.buttons).map(y=>({...y,disabled:y.disabled||g.value,callback:()=>{b=!0,X(y.callback,S)}}))});async function X(S,y){await S(y),n("close",y),b=!1}const te=O(()=>m.value==="favorites"?A("Favorites"):m.value==="recent"?A("Recent"):""),J=B(""),{isSupportedMimeType:C}=Gn(Jt(t,"mimetypeFilter"));Ae(()=>I());const{showHiddenFiles:F}=ha(),U=O(()=>{let S=l.value;return F.value||(S=S.filter(y=>!y.basename.startsWith("."))),t.mimetypeFilter.length>0&&(S=S.filter(y=>y.type==="folder"||y.mime&&C(y.mime))),J.value&&(S=S.filter(y=>y.basename.toLowerCase().includes(J.value.toLowerCase()))),t.filterFn&&(S=S.filter(y=>t.filterFn(y))),S}),D=O(()=>m.value==="files"?A("Upload some content or sync with your devices!"):m.value==="recent"?A("Files and folders you recently modified will show up here."):A("Files and folders you mark as favorite will show up here."));async function re(S){try{const y=await G(S);f.value=y.path,ka("files:node:created",l.value.filter(N=>N.basename===S)[0])}catch(y){Ie.warn("Could not create new folder",{name:S,error:y}),ct(A("Could not create the new folder"))}}function o(S){!S&&!b&&n("close")}return(S,y)=>(v(),x(w(za),{open:c.value,"onUpdate:open":[y[6]||(y[6]=N=>c.value=N),o],buttons:H.value,name:e.name,size:"large","content-classes":"file-picker__content","dialog-classes":"file-picker","navigation-classes":"file-picker__navigation"},{navigation:k(({isCollapsed:N})=>[P(Mn,{"current-view":m.value,"onUpdate:currentView":y[0]||(y[0]=ne=>m.value=ne),"filter-string":J.value,"onUpdate:filterString":y[1]||(y[1]=ne=>J.value=ne),"is-collapsed":N,"disabled-navigation":e.disabledNavigation},null,8,["current-view","filter-string","is-collapsed","disabled-navigation"])]),default:k(()=>[T("div",Xn,[m.value==="files"?(v(),x(bn,{key:0,path:d.value,"onUpdate:path":y[2]||(y[2]=N=>d.value=N),"show-menu":!e.noMenu,onCreateNode:re},null,8,["path","show-menu"])):(v(),_("div",jn,[T("h3",null,M(te.value),1)])),w(g)||U.value.length>0?(v(),x(rn,{key:2,path:d.value,"onUpdate:path":[y[3]||(y[3]=N=>d.value=N),y[5]||(y[5]=N=>m.value="files")],"selected-files":p.value,"onUpdate:selectedFiles":y[4]||(y[4]=N=>p.value=N),"allow-pick-directory":e.allowPickDirectory,"current-view":m.value,files:U.value,multiselect:e.multiselect,loading:w(g),name:te.value,"can-pick":e.canPickFn},null,8,["path","selected-files","allow-pick-directory","current-view","files","multiselect","loading","name","can-pick"])):J.value?(v(),x(w(Ot),{key:3,name:w(A)("No matching files"),description:w(A)("No files matching your filter were found.")},{icon:k(()=>[P(ot)]),_:1},8,["name","description"])):(v(),x(w(Ot),{key:4,name:w(A)("No files in here"),description:D.value},{icon:k(()=>[P(ot)]),_:1},8,["name","description"]))])]),_:1},8,["open","buttons","name"]))}}),cs=K(qn,[["__scopeId","data-v-303416d3"]]);export{cs as default}; +//# sourceMappingURL=FilePicker-W-IYpVkn-Dej1zp_C.chunk.mjs.map diff --git a/dist/FilePicker-W-IYpVkn-DxMl7UgI.chunk.mjs.license b/dist/FilePicker-W-IYpVkn-Dej1zp_C.chunk.mjs.license similarity index 100% rename from dist/FilePicker-W-IYpVkn-DxMl7UgI.chunk.mjs.license rename to dist/FilePicker-W-IYpVkn-Dej1zp_C.chunk.mjs.license diff --git a/dist/FilePicker-W-IYpVkn-DxMl7UgI.chunk.mjs.map b/dist/FilePicker-W-IYpVkn-Dej1zp_C.chunk.mjs.map similarity index 99% rename from dist/FilePicker-W-IYpVkn-DxMl7UgI.chunk.mjs.map rename to dist/FilePicker-W-IYpVkn-Dej1zp_C.chunk.mjs.map index 2ae835287c6ba..809408c9405b9 100644 --- a/dist/FilePicker-W-IYpVkn-DxMl7UgI.chunk.mjs.map +++ b/dist/FilePicker-W-IYpVkn-Dej1zp_C.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"FilePicker-W-IYpVkn-DxMl7UgI.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcEmptyContent-B8-90BSI.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumb-Bwkn3eve.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumbs-PN5_hHQn.mjs","../node_modules/cancelable-promise/esm/CancelablePromise.mjs","../node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files/dist/chunks/dav-Rt1kTtvI.mjs","../node_modules/@nextcloud/dialogs/node_modules/@nextcloud/files/dist/index.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/preview-BIbJGxXF.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/_plugin-vue_export-helper-1tPrXgE0.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/FilePicker-W-IYpVkn.mjs"],"sourcesContent":["import '../assets/NcEmptyContent-CLjlZ-UT.css';\nimport { defineComponent, createElementBlock, openBlock, unref, createCommentVNode, renderSlot, createTextVNode, toDisplayString } from \"vue\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"aria-labelledby\"];\nconst _hoisted_2 = {\n key: 0,\n class: \"empty-content__icon\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_3 = [\"id\"];\nconst _hoisted_4 = {\n key: 2,\n class: \"empty-content__description\"\n};\nconst _hoisted_5 = {\n key: 3,\n class: \"empty-content__action\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcEmptyContent\",\n props: {\n description: { default: \"\" },\n name: { default: \"\" }\n },\n setup(__props) {\n const nameId = createElementId();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n \"aria-labelledby\": unref(nameId),\n class: \"empty-content\",\n role: \"note\"\n }, [\n _ctx.$slots.icon ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"icon\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n _ctx.name !== \"\" || _ctx.$slots.name ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n id: unref(nameId),\n class: \"empty-content__name\"\n }, [\n renderSlot(_ctx.$slots, \"name\", {}, () => [\n createTextVNode(toDisplayString(_ctx.name), 1)\n ], true)\n ], 8, _hoisted_3)) : createCommentVNode(\"\", true),\n _ctx.description !== \"\" || _ctx.$slots.description ? (openBlock(), createElementBlock(\"p\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"description\", {}, () => [\n createTextVNode(toDisplayString(_ctx.description), 1)\n ], true)\n ])) : createCommentVNode(\"\", true),\n _ctx.$slots.action ? (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n renderSlot(_ctx.$slots, \"action\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 8, _hoisted_1);\n };\n }\n});\nconst NcEmptyContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-b101d636\"]]);\nexport {\n NcEmptyContent as N\n};\n//# sourceMappingURL=NcEmptyContent-B8-90BSI.mjs.map\n","import '../assets/NcBreadcrumb-CHjeSh0y.css';\nimport { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, resolveComponent, withModifiers, normalizeClass, createBlock, createVNode, createSlots, withCtx, renderSlot, createTextVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcButton } from \"./NcButton-Dc8V4Urj.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActions } from \"./NcActions-DWmvh7-Y.mjs\";\nconst _sfc_main$1 = {\n name: \"ChevronRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst ChevronRight = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst _sfc_main = {\n name: \"NcBreadcrumb\",\n components: {\n NcActions,\n ChevronRight,\n NcButton\n },\n inheritAttrs: false,\n props: {\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * Route Location the link should navigate to when clicked on.\n *\n * @see https://v3.router.vuejs.org/api/#to\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Set this prop if your app doesn't use vue-router, breadcrumbs will show as normal links.\n */\n href: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class to show an icon along name text (if forceIconText is provided, otherwise just icon).\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Enables text to accompany the icon, if the icon was provided. The text that will be displayed is the name prop.\n */\n forceIconText: {\n type: Boolean,\n default: false\n },\n /**\n * Disable dropping on this breadcrumb.\n */\n disableDrop: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Open state of the Actions menu\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"dragenter\",\n \"dragleave\",\n \"dropped\",\n \"update:open\"\n ],\n setup() {\n const crumbId = createElementId();\n return {\n actionsContainer: `.vue-crumb[data-crumb-id=\"${crumbId}\"]`,\n crumbId\n };\n },\n data() {\n return {\n /**\n * Variable to track if we hover over the breadcrumb\n */\n hovering: false\n };\n },\n computed: {\n /**\n * The attributes to pass to `router-link` or `a`\n */\n linkAttributes() {\n if (this.to) {\n return { to: this.to, ...this.$attrs };\n } else if (this.href) {\n return { href: this.href, ...this.$attrs };\n }\n return this.$attrs;\n }\n },\n methods: {\n /**\n * Function to handle changing the open state of the Actions menu\n * $emit the open state.\n *\n * @param {boolean} open The open state of the Actions menu\n */\n onOpenChange(open) {\n this.$emit(\"update:open\", open);\n },\n /**\n * Function to handle a drop on the breadcrumb.\n * $emit the event and the path, remove the hovering state.\n *\n * @param {object} e The drop event\n * @return {boolean}\n */\n dropped(e) {\n if (this.disableDrop) {\n return false;\n }\n this.$emit(\"dropped\", e, this.to || this.href);\n this.$parent.$emit(\"dropped\", e, this.to || this.href);\n this.hovering = false;\n return false;\n },\n /**\n * Add the hovering state on drag enter\n *\n * @param {DragEvent} e The drag-enter event\n */\n dragEnter(e) {\n this.$emit(\"dragenter\", e);\n if (this.disableDrop) {\n return;\n }\n this.hovering = true;\n },\n /**\n * Remove the hovering state on drag leave\n *\n * @param {DragEvent} e The drag leave event\n */\n dragLeave(e) {\n this.$emit(\"dragleave\", e);\n if (this.disableDrop) {\n return;\n }\n if (e.target.contains(e.relatedTarget) || this.$refs.crumb.contains(e.relatedTarget)) {\n return;\n }\n this.hovering = false;\n }\n }\n};\nconst _hoisted_1 = [\"data-crumb-id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_ChevronRight = resolveComponent(\"ChevronRight\");\n return openBlock(), createElementBlock(\"li\", {\n ref: \"crumb\",\n class: normalizeClass([\"vue-crumb\", [{ \"vue-crumb--hovered\": $data.hovering }, _ctx.$props.class]]),\n \"data-crumb-id\": $setup.crumbId,\n draggable: \"false\",\n onDragstart: withModifiers(() => {\n }, [\"prevent\"]),\n onDrop: _cache[0] || (_cache[0] = withModifiers((...args) => $options.dropped && $options.dropped(...args), [\"prevent\"])),\n onDragover: withModifiers(() => {\n }, [\"prevent\"]),\n onDragenter: _cache[1] || (_cache[1] = (...args) => $options.dragEnter && $options.dragEnter(...args)),\n onDragleave: _cache[2] || (_cache[2] = (...args) => $options.dragLeave && $options.dragLeave(...args))\n }, [\n ($props.name || $props.icon || _ctx.$slots.icon) && !_ctx.$slots.default ? (openBlock(), createBlock(_component_NcButton, mergeProps({\n key: 0,\n \"aria-label\": $props.icon ? $props.name : void 0,\n variant: \"tertiary\"\n }, $options.linkAttributes), createSlots({ _: 2 }, [\n _ctx.$slots.icon || $props.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass([$props.icon, \"icon\"])\n }, null, 2)\n ], true)\n ]),\n key: \"0\"\n } : void 0,\n !(_ctx.$slots.icon || $props.icon) || $props.forceIconText ? {\n name: \"default\",\n fn: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n key: \"1\"\n } : void 0\n ]), 1040, [\"aria-label\"])) : createCommentVNode(\"\", true),\n _ctx.$slots.default ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n container: $setup.actionsContainer,\n \"force-menu\": $props.forceMenu,\n \"force-name\": \"\",\n \"menu-name\": $props.name,\n open: $props.open,\n title: $props.title,\n variant: \"tertiary\",\n \"onUpdate:open\": $options.onOpenChange\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"container\", \"force-menu\", \"menu-name\", \"open\", \"title\", \"onUpdate:open\"])) : createCommentVNode(\"\", true),\n createVNode(_component_ChevronRight, {\n class: \"vue-crumb__separator\",\n size: 20\n })\n ], 42, _hoisted_1);\n}\nconst NcBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-28ef52a4\"]]);\nexport {\n NcBreadcrumb as N\n};\n//# sourceMappingURL=NcBreadcrumb-Bwkn3eve.mjs.map\n","import '../assets/NcBreadcrumbs-DYfGaSjT.css';\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport debounce from \"debounce\";\nimport { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, Fragment, cloneVNode, h } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActions, i as isSlotPopulated } from \"./NcActions-DWmvh7-Y.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-pKOSrlGE.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink-vEvKSV4N.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter-oT-YU_jf.mjs\";\nimport { N as NcBreadcrumb } from \"./NcBreadcrumb-Bwkn3eve.mjs\";\nconst _sfc_main$1 = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst crumbClass = \"vue-crumb\";\nconst _sfc_main = {\n name: \"NcBreadcrumbs\",\n components: {\n NcActions,\n NcActionButton,\n NcActionRouter,\n NcActionLink,\n NcBreadcrumb,\n IconFolder\n },\n props: {\n /**\n * Set a css icon-class for the icon of the root breadcrumb to be used.\n */\n rootIcon: {\n type: String,\n default: \"icon-home\"\n },\n /**\n * Set the aria-label of the nav element.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n emits: [\"dropped\"],\n data() {\n return {\n /**\n * Array to track the hidden breadcrumbs by their index.\n * Comparing two crumbs somehow does not work, so we use the indices.\n */\n hiddenIndices: [],\n /**\n * This is the props of the middle Action menu\n * that show the ellipsised breadcrumbs\n */\n menuBreadcrumbProps: {\n // Don't show a name for this breadcrumb, only the Actions menu\n name: \"\",\n forceMenu: true,\n // Don't allow dropping directly on the actions breadcrumb\n disableDrop: true,\n // Is the menu open or not\n open: false\n },\n breadcrumbsRefs: []\n };\n },\n created() {\n window.addEventListener(\"resize\", debounce(() => {\n this.handleWindowResize();\n }, 100));\n subscribe(\"navigation-toggled\", this.delayedResize);\n },\n mounted() {\n this.handleWindowResize();\n },\n updated() {\n this.delayedResize();\n this.$nextTick(() => {\n this.hideCrumbs();\n });\n },\n beforeUnmount() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n unsubscribe(\"navigation-toggled\", this.delayedResize);\n },\n methods: {\n /**\n * Close the actions menu\n *\n * @param {object} e The event\n */\n closeActions(e) {\n if (this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)) {\n return;\n }\n this.menuBreadcrumbProps.open = false;\n },\n /**\n * Call the resize function after a delay\n */\n async delayedResize() {\n await this.$nextTick();\n this.handleWindowResize();\n },\n /**\n * Check the width of the breadcrumb and hide breadcrumbs\n * if we overflow otherwise.\n */\n handleWindowResize() {\n if (!this.$refs.container) {\n return;\n }\n const nrCrumbs = this.breadcrumbsRefs.length;\n const hiddenIndices = [];\n const availableWidth = this.$refs.container.offsetWidth;\n let totalWidth = this.getTotalWidth();\n if (this.$refs.breadcrumb__actions) {\n totalWidth += this.$refs.breadcrumb__actions.offsetWidth;\n }\n let overflow = totalWidth - availableWidth;\n overflow += overflow > 0 ? 64 : 0;\n let i = 0;\n const startIndex = Math.floor(nrCrumbs / 2);\n while (overflow > 0 && i < nrCrumbs - 2) {\n const currentIndex = startIndex + (i % 2 ? i + 1 : i) / 2 * Math.pow(-1, i + nrCrumbs % 2);\n overflow -= this.getWidth(this.breadcrumbsRefs[currentIndex]?.$el, currentIndex === this.breadcrumbsRefs.length - 1);\n hiddenIndices.push(currentIndex);\n i++;\n }\n if (!this.arraysEqual(this.hiddenIndices, hiddenIndices.sort((a, b) => a - b))) {\n this.hiddenIndices = hiddenIndices;\n }\n },\n /**\n * Checks if two arrays are equal.\n * Only works for primitive arrays, but that's enough here.\n *\n * @param {Array} a The first array\n * @param {Array} b The second array\n * @return {boolean} Wether the arrays are equal\n */\n arraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n } else if (a === b) {\n return true;\n } else if (a === null || b === null) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n },\n /**\n * Calculates the total width of all breadcrumbs\n *\n * @return {number} The total width\n */\n getTotalWidth() {\n return this.breadcrumbsRefs.reduce((width, crumb, index) => width + this.getWidth(crumb.$el, index === this.breadcrumbsRefs.length - 1), 0);\n },\n /**\n * Calculates the width of the provided element\n *\n * @param {object} el The element\n * @param {boolean} isLast Is this the last crumb\n * @return {number} The width\n */\n getWidth(el, isLast) {\n if (!el?.classList) {\n return 0;\n }\n const hide = el.classList.contains(`${crumbClass}--hidden`);\n el.style.minWidth = \"auto\";\n if (isLast) {\n el.style.maxWidth = \"210px\";\n }\n el.classList.remove(`${crumbClass}--hidden`);\n const w = el.offsetWidth;\n if (hide) {\n el.classList.add(`${crumbClass}--hidden`);\n }\n el.style.minWidth = \"\";\n el.style.maxWidth = \"\";\n return w;\n },\n /**\n * Prevents the default of a provided event\n *\n * @param {object} e The event\n * @return {boolean}\n */\n preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n return false;\n },\n /**\n * Handles the drag start.\n * Prevents a breadcrumb from being draggable.\n *\n * @param {object} e The event\n * @return {boolean}\n */\n dragStart(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles when something is dropped on the breadcrumb.\n *\n * @param {object} e The drop event\n * @param {string} path The path of the breadcrumb\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n * @return {boolean}\n */\n dropped(e, path, disabled) {\n if (!disabled) {\n this.$emit(\"dropped\", e, path);\n }\n this.menuBreadcrumbProps.open = false;\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n return this.preventDefault(e);\n },\n /**\n * Handles the drag over event\n *\n * @param {object} e The drag over event\n * @return {boolean}\n */\n dragOver(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles the drag enter event\n *\n * @param {object} e The drag over event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragEnter(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.classList && target.classList.contains(crumbClass)) {\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n target.classList.add(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Handles the drag leave event\n *\n * @param {object} e The drag leave event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragLeave(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.contains(e.relatedTarget)) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.contains(e.relatedTarget)) {\n return;\n }\n if (target.classList && target.classList.contains(crumbClass)) {\n target.classList.remove(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Check for each crumb if we have to hide it and\n * add it to the array of all crumbs.\n */\n hideCrumbs() {\n this.breadcrumbsRefs.forEach((crumb, i) => {\n if (crumb?.$el?.classList) {\n if (this.hiddenIndices.includes(i)) {\n crumb.$el.classList.add(`${crumbClass}--hidden`);\n } else {\n crumb.$el.classList.remove(`${crumbClass}--hidden`);\n }\n }\n });\n },\n isBreadcrumb(vnode) {\n return vnode?.type?.name === \"NcBreadcrumb\";\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object|undefined} The created VNode\n */\n render() {\n let breadcrumbs = [];\n this.$slots.default?.().forEach((vnode) => {\n if (this.isBreadcrumb(vnode)) {\n breadcrumbs.push(vnode);\n return;\n }\n if (vnode?.type === Fragment) {\n vnode?.children?.forEach?.((child) => {\n if (this.isBreadcrumb(child)) {\n breadcrumbs.push(child);\n }\n });\n }\n });\n if (breadcrumbs.length === 0) {\n return;\n }\n breadcrumbs[0] = cloneVNode(breadcrumbs[0], {\n icon: this.rootIcon,\n ref: \"breadcrumbs\"\n });\n const breadcrumbsRefs = [];\n breadcrumbs = breadcrumbs.map((crumb, index) => cloneVNode(crumb, {\n ref: (crumb2) => {\n breadcrumbsRefs[index] = crumb2;\n }\n }));\n const crumbs = [...breadcrumbs];\n if (this.hiddenIndices.length) {\n crumbs.splice(\n Math.round(breadcrumbs.length / 2),\n 0,\n // The Actions menu\n // Use a breadcrumb component for the hidden breadcrumbs\n // eslint-disable-line @stylistic/function-call-argument-newline\n h(NcBreadcrumb, {\n class: \"dropdown\",\n ...this.menuBreadcrumbProps,\n // Hide the dropdown menu from screen-readers,\n // since the crumbs in the menu are still in the list.\n \"aria-hidden\": true,\n // Add a ref to the Actions menu\n ref: \"actionsBreadcrumb\",\n key: \"actions-breadcrumb-1\",\n // Add handlers so the Actions menu opens on hover\n onDragenter: () => {\n this.menuBreadcrumbProps.open = true;\n },\n onDragleave: this.closeActions,\n // Make sure we keep the same open state\n // as the Actions component\n \"onUpdate:open\": (open) => {\n this.menuBreadcrumbProps.open = open;\n }\n // Add all hidden breadcrumbs as ActionRouter or ActionLink\n }, {\n default: () => this.hiddenIndices.filter((index) => index <= breadcrumbs.length - 1).map((index) => {\n const crumb = breadcrumbs[index];\n const {\n // Get the parameters from the breadcrumb component props\n to,\n href,\n disableDrop,\n name,\n // Props to forward\n ...propsToForward\n } = crumb.props;\n delete propsToForward.ref;\n let element = NcActionButton;\n let path = \"\";\n if (href) {\n element = NcActionLink;\n path = href;\n }\n if (to) {\n element = NcActionRouter;\n path = to;\n }\n const folderIcon = h(IconFolder, {\n size: 20\n });\n return h(element, {\n ...propsToForward,\n class: crumbClass,\n href: href || null,\n to: to || null,\n // Prevent the breadcrumbs from being draggable\n draggable: false,\n // Add the drag and drop handlers\n onDragstart: this.dragStart,\n onDrop: ($event) => this.dropped($event, path, disableDrop),\n onDragover: this.dragOver,\n onDragenter: ($event) => this.dragEnter($event, disableDrop),\n onDragleave: ($event) => this.dragLeave($event, disableDrop)\n }, {\n default: () => name,\n icon: () => folderIcon\n });\n })\n })\n );\n }\n const wrapper = [h(\"nav\", { \"aria-label\": this.ariaLabel }, [h(\"ul\", { class: \"breadcrumb__crumbs\" }, [crumbs])])];\n if (isSlotPopulated(this.$slots.actions?.())) {\n wrapper.push(h(\"div\", { class: \"breadcrumb__actions\", ref: \"breadcrumb__actions\" }, this.$slots.actions?.()));\n }\n this.breadcrumbsRefs = breadcrumbsRefs;\n return h(\"div\", { class: [\"breadcrumb\", { \"breadcrumb--collapsed\": this.hiddenIndices.length === breadcrumbs.length - 2 }], ref: \"container\" }, wrapper);\n }\n};\nconst NcBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-af2b1226\"]]);\nexport {\n NcBreadcrumbs as N\n};\n//# sourceMappingURL=NcBreadcrumbs-PN5_hHQn.mjs.map\n","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError(\"Cannot initialize the same private elements twice on an object\"); } }\n\nfunction _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\"); return _classApplyDescriptorGet(receiver, descriptor); }\n\nfunction _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError(\"attempted to \" + action + \" private field on non-instance\"); } return privateMap.get(receiver); }\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError(\"attempted to set read only private field\"); } descriptor.value = value; } }\n\nvar toStringTag = typeof Symbol !== 'undefined' ? Symbol.toStringTag : '@@toStringTag';\n\nvar _internals = /*#__PURE__*/new WeakMap();\n\nvar _promise = /*#__PURE__*/new WeakMap();\n\nclass CancelablePromiseInternal {\n constructor(_ref) {\n var {\n executor = () => {},\n internals = defaultInternals(),\n promise = new Promise((resolve, reject) => executor(resolve, reject, onCancel => {\n internals.onCancelList.push(onCancel);\n }))\n } = _ref;\n\n _classPrivateFieldInitSpec(this, _internals, {\n writable: true,\n value: void 0\n });\n\n _classPrivateFieldInitSpec(this, _promise, {\n writable: true,\n value: void 0\n });\n\n _defineProperty(this, toStringTag, 'CancelablePromise');\n\n this.cancel = this.cancel.bind(this);\n\n _classPrivateFieldSet(this, _internals, internals);\n\n _classPrivateFieldSet(this, _promise, promise || new Promise((resolve, reject) => executor(resolve, reject, onCancel => {\n internals.onCancelList.push(onCancel);\n })));\n }\n\n then(onfulfilled, onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).then(createCallback(onfulfilled, _classPrivateFieldGet(this, _internals)), createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n catch(onrejected) {\n return makeCancelable(_classPrivateFieldGet(this, _promise).catch(createCallback(onrejected, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n finally(onfinally, runWhenCanceled) {\n if (runWhenCanceled) {\n _classPrivateFieldGet(this, _internals).onCancelList.push(onfinally);\n }\n\n return makeCancelable(_classPrivateFieldGet(this, _promise).finally(createCallback(() => {\n if (onfinally) {\n if (runWhenCanceled) {\n _classPrivateFieldGet(this, _internals).onCancelList = _classPrivateFieldGet(this, _internals).onCancelList.filter(callback => callback !== onfinally);\n }\n\n return onfinally();\n }\n }, _classPrivateFieldGet(this, _internals))), _classPrivateFieldGet(this, _internals));\n }\n\n cancel() {\n _classPrivateFieldGet(this, _internals).isCanceled = true;\n\n var callbacks = _classPrivateFieldGet(this, _internals).onCancelList;\n\n _classPrivateFieldGet(this, _internals).onCancelList = [];\n\n for (var callback of callbacks) {\n if (typeof callback === 'function') {\n try {\n callback();\n } catch (err) {\n console.error(err);\n }\n }\n }\n }\n\n isCanceled() {\n return _classPrivateFieldGet(this, _internals).isCanceled === true;\n }\n\n}\n\nexport class CancelablePromise extends CancelablePromiseInternal {\n constructor(executor) {\n super({\n executor\n });\n }\n\n}\n\n_defineProperty(CancelablePromise, \"all\", function all(iterable) {\n return makeAllCancelable(iterable, Promise.all(iterable));\n});\n\n_defineProperty(CancelablePromise, \"allSettled\", function allSettled(iterable) {\n return makeAllCancelable(iterable, Promise.allSettled(iterable));\n});\n\n_defineProperty(CancelablePromise, \"any\", function any(iterable) {\n return makeAllCancelable(iterable, Promise.any(iterable));\n});\n\n_defineProperty(CancelablePromise, \"race\", function race(iterable) {\n return makeAllCancelable(iterable, Promise.race(iterable));\n});\n\n_defineProperty(CancelablePromise, \"resolve\", function resolve(value) {\n return cancelable(Promise.resolve(value));\n});\n\n_defineProperty(CancelablePromise, \"reject\", function reject(reason) {\n return cancelable(Promise.reject(reason));\n});\n\n_defineProperty(CancelablePromise, \"isCancelable\", isCancelablePromise);\n\nexport default CancelablePromise;\nexport function cancelable(promise) {\n return makeCancelable(promise, defaultInternals());\n}\nexport function isCancelablePromise(promise) {\n return promise instanceof CancelablePromise || promise instanceof CancelablePromiseInternal;\n}\n\nfunction createCallback(onResult, internals) {\n if (onResult) {\n return arg => {\n if (!internals.isCanceled) {\n var result = onResult(arg);\n\n if (isCancelablePromise(result)) {\n internals.onCancelList.push(result.cancel);\n }\n\n return result;\n }\n\n return arg;\n };\n }\n}\n\nfunction makeCancelable(promise, internals) {\n return new CancelablePromiseInternal({\n internals,\n promise\n });\n}\n\nfunction makeAllCancelable(iterable, promise) {\n var internals = defaultInternals();\n internals.onCancelList.push(() => {\n for (var resolvable of iterable) {\n if (isCancelablePromise(resolvable)) {\n resolvable.cancel();\n }\n }\n });\n return new CancelablePromiseInternal({\n internals,\n promise\n });\n}\n\nfunction defaultInternals() {\n return {\n isCanceled: false,\n onCancelList: []\n };\n}\n//# sourceMappingURL=CancelablePromise.mjs.map","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { CancelablePromise } from \"cancelable-promise\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { join, encodePath, basename, extname, dirname } from \"@nextcloud/paths\";\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/files\").detectUser().build();\nvar FileType = /* @__PURE__ */ ((FileType2) => {\n FileType2[\"Folder\"] = \"folder\";\n FileType2[\"File\"] = \"file\";\n return FileType2;\n})(FileType || {});\nvar Permission = /* @__PURE__ */ ((Permission2) => {\n Permission2[Permission2[\"NONE\"] = 0] = \"NONE\";\n Permission2[Permission2[\"CREATE\"] = 4] = \"CREATE\";\n Permission2[Permission2[\"READ\"] = 1] = \"READ\";\n Permission2[Permission2[\"UPDATE\"] = 2] = \"UPDATE\";\n Permission2[Permission2[\"DELETE\"] = 8] = \"DELETE\";\n Permission2[Permission2[\"SHARE\"] = 16] = \"SHARE\";\n Permission2[Permission2[\"ALL\"] = 31] = \"ALL\";\n return Permission2;\n})(Permission || {});\nconst isDavResource = function(source, davService) {\n return source.match(davService) !== null;\n};\nconst validateData = (data, davService) => {\n if (data.id && typeof data.id !== \"number\") {\n throw new Error(\"Invalid id type of value\");\n }\n if (!data.source) {\n throw new Error(\"Missing mandatory source\");\n }\n try {\n new URL(data.source);\n } catch (e) {\n throw new Error(\"Invalid source format, source must be a valid URL\");\n }\n if (!data.source.startsWith(\"http\")) {\n throw new Error(\"Invalid source format, only http(s) is supported\");\n }\n if (data.displayname && typeof data.displayname !== \"string\") {\n throw new Error(\"Invalid displayname type\");\n }\n if (data.mtime && !(data.mtime instanceof Date)) {\n throw new Error(\"Invalid mtime type\");\n }\n if (data.crtime && !(data.crtime instanceof Date)) {\n throw new Error(\"Invalid crtime type\");\n }\n if (!data.mime || typeof data.mime !== \"string\" || !data.mime.match(/^[-\\w.]+\\/[-+\\w.]+$/gi)) {\n throw new Error(\"Missing or invalid mandatory mime\");\n }\n if (\"size\" in data && typeof data.size !== \"number\" && data.size !== void 0) {\n throw new Error(\"Invalid size type\");\n }\n if (\"permissions\" in data && data.permissions !== void 0 && !(typeof data.permissions === \"number\" && data.permissions >= Permission.NONE && data.permissions <= Permission.ALL)) {\n throw new Error(\"Invalid permissions\");\n }\n if (data.owner && data.owner !== null && typeof data.owner !== \"string\") {\n throw new Error(\"Invalid owner type\");\n }\n if (data.attributes && typeof data.attributes !== \"object\") {\n throw new Error(\"Invalid attributes type\");\n }\n if (data.root && typeof data.root !== \"string\") {\n throw new Error(\"Invalid root type\");\n }\n if (data.root && !data.root.startsWith(\"/\")) {\n throw new Error(\"Root must start with a leading slash\");\n }\n if (data.root && !data.source.includes(data.root)) {\n throw new Error(\"Root must be part of the source\");\n }\n if (data.root && isDavResource(data.source, davService)) {\n const service = data.source.match(davService)[0];\n if (!data.source.includes(join(service, data.root))) {\n throw new Error(\"The root must be relative to the service. e.g /files/emma\");\n }\n }\n if (data.status && !Object.values(NodeStatus).includes(data.status)) {\n throw new Error(\"Status must be a valid NodeStatus\");\n }\n};\nvar NodeStatus = /* @__PURE__ */ ((NodeStatus2) => {\n NodeStatus2[\"NEW\"] = \"new\";\n NodeStatus2[\"FAILED\"] = \"failed\";\n NodeStatus2[\"LOADING\"] = \"loading\";\n NodeStatus2[\"LOCKED\"] = \"locked\";\n return NodeStatus2;\n})(NodeStatus || {});\nclass Node {\n _data;\n _attributes;\n _knownDavService = /(remote|public)\\.php\\/(web)?dav/i;\n readonlyAttributes = Object.entries(Object.getOwnPropertyDescriptors(Node.prototype)).filter((e) => typeof e[1].get === \"function\" && e[0] !== \"__proto__\").map((e) => e[0]);\n handler = {\n set: (target, prop, value) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.set(target, prop, value);\n },\n deleteProperty: (target, prop) => {\n if (this.readonlyAttributes.includes(prop)) {\n return false;\n }\n return Reflect.deleteProperty(target, prop);\n },\n // TODO: This is deprecated and only needed for files v3\n get: (target, prop, receiver) => {\n if (this.readonlyAttributes.includes(prop)) {\n logger.warn(`Accessing \"Node.attributes.${prop}\" is deprecated, access it directly on the Node instance.`);\n return Reflect.get(this, prop);\n }\n return Reflect.get(target, prop, receiver);\n }\n };\n constructor(data, davService) {\n if (!data.mime) {\n data.mime = \"application/octet-stream\";\n }\n validateData(data, davService || this._knownDavService);\n this._data = {\n // TODO: Remove with next major release, this is just for compatibility\n displayname: data.attributes?.displayname,\n ...data,\n attributes: {}\n };\n this._attributes = new Proxy(this._data.attributes, this.handler);\n this.update(data.attributes ?? {});\n if (davService) {\n this._knownDavService = davService;\n }\n }\n /**\n * Get the source url to this object\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get source() {\n return this._data.source.replace(/\\/$/i, \"\");\n }\n /**\n * Get the encoded source url to this object for requests purposes\n */\n get encodedSource() {\n const { origin } = new URL(this.source);\n return origin + encodePath(this.source.slice(origin.length));\n }\n /**\n * Get this object name\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get basename() {\n return basename(this.source);\n }\n /**\n * The nodes displayname\n * By default the display name and the `basename` are identical,\n * but it is possible to have a different name. This happens\n * on the files app for example for shared folders.\n */\n get displayname() {\n return this._data.displayname || this.basename;\n }\n /**\n * Set the displayname\n */\n set displayname(displayname) {\n validateData({ ...this._data, displayname }, this._knownDavService);\n this._data.displayname = displayname;\n }\n /**\n * Get this object's extension\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get extension() {\n return extname(this.source);\n }\n /**\n * Get the directory path leading to this object\n * Will use the relative path to root if available\n *\n * There is no setter as the source is not meant to be changed manually.\n * You can use the rename or move method to change the source.\n */\n get dirname() {\n if (this.root) {\n let source = this.source;\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return dirname(source.slice(firstMatch + root.length) || \"/\");\n }\n const url = new URL(this.source);\n return dirname(url.pathname);\n }\n /**\n * Get the file mime\n */\n get mime() {\n return this._data.mime || \"application/octet-stream\";\n }\n /**\n * Set the file mime\n * Removing the mime type will set it to `application/octet-stream`\n */\n set mime(mime) {\n mime ??= \"application/octet-stream\";\n validateData({ ...this._data, mime }, this._knownDavService);\n this._data.mime = mime;\n }\n /**\n * Get the file modification time\n */\n get mtime() {\n return this._data.mtime;\n }\n /**\n * Set the file modification time\n */\n set mtime(mtime) {\n validateData({ ...this._data, mtime }, this._knownDavService);\n this._data.mtime = mtime;\n }\n /**\n * Get the file creation time\n * There is no setter as the creation time is not meant to be changed\n */\n get crtime() {\n return this._data.crtime;\n }\n /**\n * Get the file size\n */\n get size() {\n return this._data.size;\n }\n /**\n * Set the file size\n */\n set size(size) {\n validateData({ ...this._data, size }, this._knownDavService);\n this.updateMtime();\n this._data.size = size;\n }\n /**\n * Get the file attribute\n * This contains all additional attributes not provided by the Node class\n */\n get attributes() {\n return this._attributes;\n }\n /**\n * Get the file permissions\n */\n get permissions() {\n if (this.owner === null && !this.isDavResource) {\n return Permission.READ;\n }\n return this._data.permissions !== void 0 ? this._data.permissions : Permission.NONE;\n }\n /**\n * Set the file permissions\n */\n set permissions(permissions) {\n validateData({ ...this._data, permissions }, this._knownDavService);\n this.updateMtime();\n this._data.permissions = permissions;\n }\n /**\n * Get the file owner\n * There is no setter as the owner is not meant to be changed\n */\n get owner() {\n if (!this.isDavResource) {\n return null;\n }\n return this._data.owner;\n }\n /**\n * Is this a dav-related resource ?\n */\n get isDavResource() {\n return isDavResource(this.source, this._knownDavService);\n }\n /**\n * @deprecated use `isDavResource` instead - will be removed in next major version.\n */\n get isDavRessource() {\n return this.isDavResource;\n }\n /**\n * Get the dav root of this object\n * There is no setter as the root is not meant to be changed\n */\n get root() {\n if (this._data.root) {\n return this._data.root.replace(/^(.+)\\/$/, \"$1\");\n }\n if (this.isDavResource) {\n const root = dirname(this.source);\n return root.split(this._knownDavService).pop() || null;\n }\n return null;\n }\n /**\n * Get the absolute path of this object relative to the root\n */\n get path() {\n if (this.root) {\n let source = this.source;\n if (this.isDavResource) {\n source = source.split(this._knownDavService).pop();\n }\n const firstMatch = source.indexOf(this.root);\n const root = this.root.replace(/\\/$/, \"\");\n return source.slice(firstMatch + root.length) || \"/\";\n }\n return (this.dirname + \"/\" + this.basename).replace(/\\/\\//g, \"/\");\n }\n /**\n * Get the node id if defined.\n * There is no setter as the fileid is not meant to be changed\n */\n get fileid() {\n return this._data?.id;\n }\n /**\n * Get the node status.\n */\n get status() {\n return this._data?.status;\n }\n /**\n * Set the node status.\n */\n set status(status) {\n validateData({ ...this._data, status }, this._knownDavService);\n this._data.status = status;\n }\n /**\n * Get the node data\n */\n get data() {\n return structuredClone(this._data);\n }\n /**\n * Move the node to a new destination\n *\n * @param {string} destination the new source.\n * e.g. https://cloud.domain.com/remote.php/dav/files/emma/Photos/picture.jpg\n */\n move(destination) {\n validateData({ ...this._data, source: destination }, this._knownDavService);\n const oldBasename = this.basename;\n this._data.source = destination;\n if (this.displayname === oldBasename && this.basename !== oldBasename) {\n this.displayname = this.basename;\n }\n }\n /**\n * Rename the node\n * This aliases the move method for easier usage\n *\n * @param basename The new name of the node\n */\n rename(basename2) {\n if (basename2.includes(\"/\")) {\n throw new Error(\"Invalid basename\");\n }\n this.move(dirname(this.source) + \"/\" + basename2);\n }\n /**\n * Update the mtime if exists\n */\n updateMtime() {\n if (this._data.mtime) {\n this._data.mtime = /* @__PURE__ */ new Date();\n }\n }\n /**\n * Update the attributes of the node\n * Warning, updating attributes will NOT automatically update the mtime.\n *\n * @param attributes The new attributes to update on the Node attributes\n */\n update(attributes) {\n for (const [name, value] of Object.entries(attributes)) {\n try {\n if (value === void 0) {\n delete this.attributes[name];\n } else {\n this.attributes[name] = value;\n }\n } catch (e) {\n if (e instanceof TypeError) {\n continue;\n }\n throw e;\n }\n }\n }\n}\nclass File extends Node {\n get type() {\n return FileType.File;\n }\n /**\n * Returns a clone of the file\n */\n clone() {\n return new File(this.data);\n }\n}\nclass Folder extends Node {\n constructor(data) {\n super({\n ...data,\n mime: \"httpd/unix-directory\"\n });\n }\n get type() {\n return FileType.Folder;\n }\n get extension() {\n return null;\n }\n get mime() {\n return \"httpd/unix-directory\";\n }\n /**\n * Returns a clone of the folder\n */\n clone() {\n return new Folder(this.data);\n }\n}\nconst parsePermissions = function(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"C\") || permString.includes(\"K\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\") || permString.includes(\"N\") || permString.includes(\"V\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n};\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nconst registerDavProperty = function(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n const namespaces = { ...window._nc_dav_namespaces, ...namespace };\n if (window._nc_dav_properties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n window._nc_dav_properties.push(prop);\n window._nc_dav_namespaces = namespaces;\n return true;\n};\nconst getDavProperties = function() {\n if (typeof window._nc_dav_properties === \"undefined\") {\n window._nc_dav_properties = [...defaultDavProperties];\n }\n return window._nc_dav_properties.map((prop) => `<${prop} />`).join(\" \");\n};\nconst getDavNameSpaces = function() {\n if (typeof window._nc_dav_namespaces === \"undefined\") {\n window._nc_dav_namespaces = { ...defaultDavNamespaces };\n }\n return Object.keys(window._nc_dav_namespaces).map((ns) => `xmlns:${ns}=\"${window._nc_dav_namespaces?.[ns]}\"`).join(\" \");\n};\nconst getDefaultPropfind = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n};\nconst getFavoritesReport = function() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n};\nconst getRecentSearch = function(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n};\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nconst getClient = function(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n};\nconst getFavoriteNodes = (davClient, path = \"/\", davRoot = defaultRootPath) => {\n const controller = new AbortController();\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n onCancel(() => controller.abort());\n try {\n const contentsResponse = await davClient.getDirectoryContents(`${davRoot}${path}`, {\n signal: controller.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n const nodes = contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n resolve(nodes);\n } catch (error) {\n reject(error);\n }\n });\n};\nconst resultToNode = function(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n};\nexport {\n FileType as F,\n Node as N,\n Permission as P,\n getRemoteURL as a,\n defaultRemoteURL as b,\n getClient as c,\n defaultRootPath as d,\n getFavoriteNodes as e,\n defaultDavProperties as f,\n getRootPath as g,\n defaultDavNamespaces as h,\n registerDavProperty as i,\n getDavProperties as j,\n getDavNameSpaces as k,\n getDefaultPropfind as l,\n getFavoritesReport as m,\n getRecentSearch as n,\n logger as o,\n parsePermissions as p,\n File as q,\n resultToNode as r,\n Folder as s,\n NodeStatus as t\n};\n//# sourceMappingURL=dav-Rt1kTtvI.mjs.map\n","import { o as logger, F as FileType } from \"./chunks/dav-Rt1kTtvI.mjs\";\nimport { q, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Rt1kTtvI.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport require$$1 from \"string_decoder\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"@nextcloud/paths\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get hotkey() {\n return this._action.hotkey;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n if (\"hotkey\" in action && action.hotkey !== void 0) {\n if (typeof action.hotkey !== \"object\") {\n throw new Error(\"Invalid hotkey configuration\");\n }\n if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n throw new Error(\"Missing or invalid hotkey key\");\n }\n if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n throw new Error(\"Missing or invalid hotkey description\");\n }\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const safeSrc = exports.safeSrc = [];\n const t2 = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t2[name] = index;\n src[index] = value;\n safeSrc[index] = safe;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NONNUMERICIDENTIFIER]}|${src[t2.NUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NONNUMERICIDENTIFIER]}|${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t2.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n if (typeof a2 === \"number\" && typeof b2 === \"number\") {\n return a2 === b2 ? 0 : a2 < b2 ? -1 : 1;\n }\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t: t2 } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n if (!m2) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m2[1];\n this.minor = +m2[2];\n this.patch = +m2[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m2[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m2[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m2[5] ? m2[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.major < other.major) {\n return -1;\n }\n if (this.major > other.major) {\n return 1;\n }\n if (this.minor < other.minor) {\n return -1;\n }\n if (this.minor > other.minor) {\n return 1;\n }\n if (this.patch < other.patch) {\n return -1;\n }\n if (this.patch > other.patch) {\n return 1;\n }\n return 0;\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i2 = 0;\n do {\n const a2 = this.prerelease[i2];\n const b2 = other.prerelease[i2];\n debug(\"prerelease compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i2 = 0;\n do {\n const a2 = this.build[i2];\n const b2 = other.build[i2];\n debug(\"build compare\", i2, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i2);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n if (release.startsWith(\"pre\")) {\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re2[t2.PRERELEASELOOSE] : re2[t2.PRERELEASE]);\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`);\n }\n }\n }\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"release\":\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`);\n }\n this.prerelease.length = 0;\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i2 = this.prerelease.length;\n while (--i2 >= 0) {\n if (typeof this.prerelease[i2] === \"number\") {\n this.prerelease[i2]++;\n i2 = -2;\n }\n }\n if (i2 === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.3\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h2) => {\n try {\n ;\n h2(event[0]);\n } catch (e2) {\n console.error(\"could not invoke event listener\", e2);\n }\n });\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nvar sax$1 = {};\nvar hasRequiredSax;\nfunction requireSax() {\n if (hasRequiredSax) return sax$1;\n hasRequiredSax = 1;\n (function(exports) {\n (function(sax2) {\n sax2.parser = function(strict, opt) {\n return new SAXParser(strict, opt);\n };\n sax2.SAXParser = SAXParser;\n sax2.SAXStream = SAXStream;\n sax2.createStream = createStream;\n sax2.MAX_BUFFER_LENGTH = 64 * 1024;\n var buffers = [\n \"comment\",\n \"sgmlDecl\",\n \"textNode\",\n \"tagName\",\n \"doctype\",\n \"procInstName\",\n \"procInstBody\",\n \"entity\",\n \"attribName\",\n \"attribValue\",\n \"cdata\",\n \"script\"\n ];\n sax2.EVENTS = [\n \"text\",\n \"processinginstruction\",\n \"sgmldeclaration\",\n \"doctype\",\n \"comment\",\n \"opentagstart\",\n \"attribute\",\n \"opentag\",\n \"closetag\",\n \"opencdata\",\n \"cdata\",\n \"closecdata\",\n \"error\",\n \"end\",\n \"ready\",\n \"script\",\n \"opennamespace\",\n \"closenamespace\"\n ];\n function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt);\n }\n var parser = this;\n clearBuffers(parser);\n parser.q = parser.c = \"\";\n parser.bufferCheckPosition = sax2.MAX_BUFFER_LENGTH;\n parser.opt = opt || {};\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;\n parser.looseCase = parser.opt.lowercase ? \"toLowerCase\" : \"toUpperCase\";\n parser.tags = [];\n parser.closed = parser.closedRoot = parser.sawRoot = false;\n parser.tag = parser.error = null;\n parser.strict = !!strict;\n parser.noscript = !!(strict || parser.opt.noscript);\n parser.state = S.BEGIN;\n parser.strictEntities = parser.opt.strictEntities;\n parser.ENTITIES = parser.strictEntities ? Object.create(sax2.XML_ENTITIES) : Object.create(sax2.ENTITIES);\n parser.attribList = [];\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS);\n }\n if (parser.opt.unquotedAttributeValues === void 0) {\n parser.opt.unquotedAttributeValues = !strict;\n }\n parser.trackPosition = parser.opt.position !== false;\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0;\n }\n emit2(parser, \"onready\");\n }\n if (!Object.create) {\n Object.create = function(o) {\n function F() {\n }\n F.prototype = o;\n var newf = new F();\n return newf;\n };\n }\n if (!Object.keys) {\n Object.keys = function(o) {\n var a2 = [];\n for (var i2 in o) if (o.hasOwnProperty(i2)) a2.push(i2);\n return a2;\n };\n }\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax2.MAX_BUFFER_LENGTH, 10);\n var maxActual = 0;\n for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n var len = parser[buffers[i2]].length;\n if (len > maxAllowed) {\n switch (buffers[i2]) {\n case \"textNode\":\n closeText(parser);\n break;\n case \"cdata\":\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n break;\n case \"script\":\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n break;\n default:\n error(parser, \"Max buffer length exceeded: \" + buffers[i2]);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n var m2 = sax2.MAX_BUFFER_LENGTH - maxActual;\n parser.bufferCheckPosition = m2 + parser.position;\n }\n function clearBuffers(parser) {\n for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n parser[buffers[i2]] = \"\";\n }\n }\n function flushBuffers(parser) {\n closeText(parser);\n if (parser.cdata !== \"\") {\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n }\n if (parser.script !== \"\") {\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n }\n }\n SAXParser.prototype = {\n end: function() {\n end(this);\n },\n write,\n resume: function() {\n this.error = null;\n return this;\n },\n close: function() {\n return this.write(null);\n },\n flush: function() {\n flushBuffers(this);\n }\n };\n var Stream;\n try {\n Stream = require(\"stream\").Stream;\n } catch (ex) {\n Stream = function() {\n };\n }\n if (!Stream) Stream = function() {\n };\n var streamWraps = sax2.EVENTS.filter(function(ev) {\n return ev !== \"error\" && ev !== \"end\";\n });\n function createStream(strict, opt) {\n return new SAXStream(strict, opt);\n }\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt);\n }\n Stream.apply(this);\n this._parser = new SAXParser(strict, opt);\n this.writable = true;\n this.readable = true;\n var me = this;\n this._parser.onend = function() {\n me.emit(\"end\");\n };\n this._parser.onerror = function(er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n this._decoder = null;\n streamWraps.forEach(function(ev) {\n Object.defineProperty(me, \"on\" + ev, {\n get: function() {\n return me._parser[\"on\" + ev];\n },\n set: function(h2) {\n if (!h2) {\n me.removeAllListeners(ev);\n me._parser[\"on\" + ev] = h2;\n return h2;\n }\n me.on(ev, h2);\n },\n enumerable: true,\n configurable: false\n });\n });\n }\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n });\n SAXStream.prototype.write = function(data) {\n if (typeof Buffer === \"function\" && typeof Buffer.isBuffer === \"function\" && Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require$$1.StringDecoder;\n this._decoder = new SD(\"utf8\");\n }\n data = this._decoder.write(data);\n }\n this._parser.write(data.toString());\n this.emit(\"data\", data);\n return true;\n };\n SAXStream.prototype.end = function(chunk) {\n if (chunk && chunk.length) {\n this.write(chunk);\n }\n this._parser.end();\n return true;\n };\n SAXStream.prototype.on = function(ev, handler) {\n var me = this;\n if (!me._parser[\"on\" + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\" + ev] = function() {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);\n args.splice(0, 0, ev);\n me.emit.apply(me, args);\n };\n }\n return Stream.prototype.on.call(me, ev, handler);\n };\n var CDATA = \"[CDATA[\";\n var DOCTYPE = \"DOCTYPE\";\n var XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\n var XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE };\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n function isWhitespace(c2) {\n return c2 === \" \" || c2 === \"\\n\" || c2 === \"\\r\" || c2 === \"\t\";\n }\n function isQuote(c2) {\n return c2 === '\"' || c2 === \"'\";\n }\n function isAttribEnd(c2) {\n return c2 === \">\" || isWhitespace(c2);\n }\n function isMatch(regex, c2) {\n return regex.test(c2);\n }\n function notMatch(regex, c2) {\n return !isMatch(regex, c2);\n }\n var S = 0;\n sax2.STATE = {\n BEGIN: S++,\n // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++,\n // leading whitespace\n TEXT: S++,\n // general stuff\n TEXT_ENTITY: S++,\n // & and such.\n OPEN_WAKA: S++,\n // <\n SGML_DECL: S++,\n // \n SCRIPT: S++,\n // \n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getClient } from '@nextcloud/files/dav'\nimport moment from '@nextcloud/moment'\nimport { encodePath, join } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport davRequest from '../utils/davRequest.ts'\nimport logger from '../utils/logger.ts'\n\nexport interface Version {\n\tfileId: string // The id of the file associated to the version.\n\tlabel: string // 'Current version' or ''\n\tauthor: string | null // UID for the author of the version\n\tauthorName: string | null // Display name of the author\n\tfilename: string // File name relative to the version DAV endpoint\n\tbasename: string // A base name generated from the mtime\n\tmime: string // Empty for the current version, else the actual mime type of the version\n\tetag: string // Empty for the current version, else the actual mime type of the version\n\tsize: number // File size in bytes\n\ttype: string // 'file'\n\tmtime: number // Version creation date as a timestamp\n\tpermissions: string // Only readable: 'R'\n\tpreviewUrl: string // Preview URL of the version\n\turl: string // Download URL of the version\n\tsource: string // The WebDAV endpoint of the resource\n\tfileVersion: string | null // The version id, null for the current version\n}\n\nconst client = getClient()\n\n/**\n * Get file versions for a given node\n *\n * @param node - The node to fetch versions for\n */\nexport async function fetchVersions(node: INode): Promise {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${node.fileid}`\n\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t}) as ResponseDataDetailed\n\n\t\tconst versions = response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map((version) => formatVersion(version as Required, node))\n\n\t\tconst authorIds = new Set(versions.map((version) => String(version.author)))\n\t\tconst authors = await axios.post(generateUrl('/displaynames'), { users: [...authorIds] })\n\n\t\tfor (const version of versions) {\n\t\t\tconst author = authors.data.users[version.author ?? '']\n\t\t\tif (author) {\n\t\t\t\tversion.authorName = author\n\t\t\t}\n\t\t}\n\n\t\treturn versions\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param version - The version to restore\n */\nexport async function restoreVersion(version: Version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param version - The version data from WebDAV\n * @param node - The original node\n */\nfunction formatVersion(version: Required, node: INode): Version {\n\tconst mtime = moment(version.lastmod).unix() * 1000\n\tlet previewUrl = ''\n\n\tif (mtime === node.mtime?.getTime()) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', {\n\t\t\tfileId: node.fileid,\n\t\t\tfileEtag: node.attributes.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', {\n\t\t\tfile: node.path,\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: node.fileid!.toString(),\n\t\t// If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n\t\tlabel: version.props['version-label'] ? String(version.props['version-label']) : '',\n\t\tauthor: version.props['version-author'] ? String(version.props['version-author']) : null,\n\t\tauthorName: null,\n\t\tfilename: version.filename,\n\t\tbasename: moment(mtime).format('LLL'),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\tpreviewUrl,\n\t\turl: join('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * Set version label\n *\n * @param version - The version to set the label for\n * @param newLabel - The new label\n */\nexport async function setVersionLabel(version: Version, newLabel: string) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${newLabel}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t},\n\t)\n}\n\n/**\n * Delete version\n *\n * @param version - The version to delete\n */\nexport async function deleteVersion(version: Version) {\n\tawait client.deleteFile(version.filename)\n}\n","\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","props","__props","emit","__emit","previewLoaded","ref","previewErrored","capabilities","loadState","humanReadableSize","computed","formatFileSize","versionLabel","label","t","versionAuthor","getCurrentUser","versionHumanExplicitDate","moment","downloadURL","getRootUrl","enableLabeling","enableDeletion","hasDeletePermissions","hasPermission","Permission","hasUpdatePermissions","isDownloadable","attribute","labelUpdate","restoreVersion","deleteVersion","nextTick","click","event","compareVersion","node","permission","_createBlock","_unref","NcListItem","_createVNode","ImageOffOutline","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","NcAvatar","_hoisted_8","_hoisted_9","NcDateTime","NcActionButton","Pencil","_createTextVNode","FileCompare","BackupRestore","NcActionLink","Download","Delete","labelInput","useTemplateRef","internalLabel","dialogButtons","buttons","setVersionLabel","svgCheck","watchEffect","NcDialog","$emit","NcTextField","_toDisplayString","logger","getLoggerBuilder","_sfc_main$1","defineComponent","containerHeight","containerTop","containerBottom","currentRowTop","currentRowBottom","visibleSections","section","visibleRows","row","distance","visibleItems","rows","items","rowIdToKeyMap","item","usedTokens","key","unusedTokens","finalMapping","id","totalHeight","sectionHeight","paddingTop","buffer","value","currentRowTopDistanceFromTop","entries","entry","cr","_normalizeStyle","_renderSlot","davRequest","client","getClient","fetchVersions","path","versions","mime","version","formatVersion","authorIds","authors","axios","generateUrl","author","exception","mtime","previewUrl","join","generateRemoteUrl","encodePath","newLabel","__expose","setActive","isMobile","useIsMobile","isActive","loading","showVersionLabelForm","editedVersion","watch","toRef","currentVersionMtime","orderedVersions","a","b","sections","initialVersionMtime","canView","canCompare","active","handleRestore","restoredNode","restoreStartedEventState","showSuccess","showError","handleLabelUpdateRequest","handleLabelUpdate","oldLabel","handleDelete","index","openVersion","_versions","v","VirtualScrolling","_withCtx","_Fragment","_renderList","VersionEntry","NcLoadingIcon","VersionLabelDialog"],"mappings":"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","x_google_ignoreList":[0,1,2,3]} \ No newline at end of file +{"version":3,"file":"FilesVersionsSidebarTab-CNKpFJer.chunk.mjs","sources":["../node_modules/vue-material-design-icons/BackupRestore.vue","../node_modules/vue-material-design-icons/FileCompare.vue","../node_modules/vue-material-design-icons/ImageOffOutline.vue","../node_modules/vue-material-design-icons/PencilOutline.vue","../build/frontend/apps/files_versions/src/components/VersionEntry.vue","../build/frontend/apps/files_versions/src/components/VersionLabelDialog.vue","../build/frontend/apps/files_versions/src/utils/logger.ts","../build/frontend/apps/files_versions/src/components/VirtualScrolling.vue","../build/frontend/apps/files_versions/src/utils/davRequest.ts","../build/frontend/apps/files_versions/src/utils/versions.ts","../build/frontend/apps/files_versions/src/views/FilesVersionsSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getClient } from '@nextcloud/files/dav'\nimport moment from '@nextcloud/moment'\nimport { encodePath, join } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport davRequest from '../utils/davRequest.ts'\nimport logger from '../utils/logger.ts'\n\nexport interface Version {\n\tfileId: string // The id of the file associated to the version.\n\tlabel: string // 'Current version' or ''\n\tauthor: string | null // UID for the author of the version\n\tauthorName: string | null // Display name of the author\n\tfilename: string // File name relative to the version DAV endpoint\n\tbasename: string // A base name generated from the mtime\n\tmime: string // Empty for the current version, else the actual mime type of the version\n\tetag: string // Empty for the current version, else the actual mime type of the version\n\tsize: number // File size in bytes\n\ttype: string // 'file'\n\tmtime: number // Version creation date as a timestamp\n\tpermissions: string // Only readable: 'R'\n\tpreviewUrl: string // Preview URL of the version\n\turl: string // Download URL of the version\n\tsource: string // The WebDAV endpoint of the resource\n\tfileVersion: string | null // The version id, null for the current version\n}\n\nconst client = getClient()\n\n/**\n * Get file versions for a given node\n *\n * @param node - The node to fetch versions for\n */\nexport async function fetchVersions(node: INode): Promise {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${node.fileid}`\n\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t}) as ResponseDataDetailed\n\n\t\tconst versions = response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map((version) => formatVersion(version as Required, node))\n\n\t\tconst authorIds = new Set(versions.map((version) => String(version.author)))\n\t\tconst authors = await axios.post(generateUrl('/displaynames'), { users: [...authorIds] })\n\n\t\tfor (const version of versions) {\n\t\t\tconst author = authors.data.users[version.author ?? '']\n\t\t\tif (author) {\n\t\t\t\tversion.authorName = author\n\t\t\t}\n\t\t}\n\n\t\treturn versions\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param version - The version to restore\n */\nexport async function restoreVersion(version: Version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param version - The version data from WebDAV\n * @param node - The original node\n */\nfunction formatVersion(version: Required, node: INode): Version {\n\tconst mtime = moment(version.lastmod).unix() * 1000\n\tlet previewUrl = ''\n\n\tif (mtime === node.mtime?.getTime()) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', {\n\t\t\tfileId: node.fileid,\n\t\t\tfileEtag: node.attributes.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', {\n\t\t\tfile: node.path,\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: node.fileid!.toString(),\n\t\t// If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n\t\tlabel: version.props['version-label'] ? String(version.props['version-label']) : '',\n\t\tauthor: version.props['version-author'] ? String(version.props['version-author']) : null,\n\t\tauthorName: null,\n\t\tfilename: version.filename,\n\t\tbasename: moment(mtime).format('LLL'),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\tpreviewUrl,\n\t\turl: join('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * Set version label\n *\n * @param version - The version to set the label for\n * @param newLabel - The new label\n */\nexport async function setVersionLabel(version: Version, newLabel: string) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${newLabel}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t},\n\t)\n}\n\n/**\n * Delete version\n *\n * @param version - The version to delete\n */\nexport async function deleteVersion(version: Version) {\n\tawait client.deleteFile(version.filename)\n}\n","\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","props","__props","emit","__emit","previewLoaded","ref","previewErrored","capabilities","loadState","humanReadableSize","computed","formatFileSize","versionLabel","label","t","versionAuthor","getCurrentUser","versionHumanExplicitDate","moment","downloadURL","getRootUrl","enableLabeling","enableDeletion","hasDeletePermissions","hasPermission","Permission","hasUpdatePermissions","isDownloadable","attribute","labelUpdate","restoreVersion","deleteVersion","nextTick","click","event","compareVersion","node","permission","_createBlock","_unref","NcListItem","_createVNode","ImageOffOutline","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","NcAvatar","_hoisted_8","_hoisted_9","NcDateTime","NcActionButton","Pencil","_createTextVNode","FileCompare","BackupRestore","NcActionLink","Download","Delete","labelInput","useTemplateRef","internalLabel","dialogButtons","buttons","setVersionLabel","svgCheck","watchEffect","NcDialog","$emit","NcTextField","_toDisplayString","logger","getLoggerBuilder","_sfc_main$1","defineComponent","containerHeight","containerTop","containerBottom","currentRowTop","currentRowBottom","visibleSections","section","visibleRows","row","distance","visibleItems","rows","items","rowIdToKeyMap","item","usedTokens","key","unusedTokens","finalMapping","id","totalHeight","sectionHeight","paddingTop","buffer","value","currentRowTopDistanceFromTop","entries","entry","cr","_normalizeStyle","_renderSlot","davRequest","client","getClient","fetchVersions","path","versions","mime","version","formatVersion","authorIds","authors","axios","generateUrl","author","exception","mtime","previewUrl","join","generateRemoteUrl","encodePath","newLabel","__expose","setActive","isMobile","useIsMobile","isActive","loading","showVersionLabelForm","editedVersion","watch","toRef","currentVersionMtime","orderedVersions","a","b","sections","initialVersionMtime","canView","canCompare","active","handleRestore","restoredNode","restoreStartedEventState","showSuccess","showError","handleLabelUpdateRequest","handleLabelUpdate","oldLabel","handleDelete","index","openVersion","_versions","v","VirtualScrolling","_withCtx","_Fragment","_renderList","VersionEntry","NcLoadingIcon","VersionLabelDialog"],"mappings":"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","x_google_ignoreList":[0,1,2,3]} \ No newline at end of file diff --git a/dist/FilesVersionsSidebarTab-DJtegyy8.chunk.mjs.map.license b/dist/FilesVersionsSidebarTab-CNKpFJer.chunk.mjs.map.license similarity index 100% rename from dist/FilesVersionsSidebarTab-DJtegyy8.chunk.mjs.map.license rename to dist/FilesVersionsSidebarTab-CNKpFJer.chunk.mjs.map.license diff --git a/dist/FilesVersionsSidebarTab-DJtegyy8.chunk.mjs b/dist/FilesVersionsSidebarTab-DJtegyy8.chunk.mjs deleted file mode 100644 index 0b6b49a00cb41..0000000000000 --- a/dist/FilesVersionsSidebarTab-DJtegyy8.chunk.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import{N as te,u as oe,d as Z,s as Y}from"./index-JpgrUA2Z-C7mmv1ig.chunk.mjs";import{E as p,o as a,H as C,F as b,f as w,z as O,j as B,q as L,l as se,s as g,t as l,B as T,c as H,w as h,y as v,e as E,b as V,a2 as Q,p as ne,ak as ee,g as re,x as M,Q as ie,al as ae,ad as le,k as ce,a4 as de,M as ue,N as ve,a6 as N}from"./string_decoder-BycPOoxV.chunk.mjs";import{N as me}from"./mdi-C5IU8XSu.chunk.mjs";import{h as pe,P as J}from"./index-wSAHvg0K.chunk.mjs";import{m as G,N as fe}from"./index-CIFgSuE2.chunk.mjs";import{_ as A,j as he,e as X,c as ge}from"./_plugin-vue_export-helper-DM8WuWZR.chunk.mjs";import{N as D,a as be}from"./NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs";import{N as ye}from"./NcAvatar-DmUGApWA-CtqXBt90.chunk.mjs";import{_ as we}from"./index-Bamwag0s.chunk.mjs";import{D as _e,_ as Ce}from"./TrashCanOutline-CC4vElfR.chunk.mjs";import{D as ke,s as Ve}from"./TrayArrowDown-C-BqUyi0.chunk.mjs";import{c as He}from"./index-D6zY57LV.chunk.mjs";import{g as Se}from"./dav-B_fZ4j3M.chunk.mjs";import"./NcNoteCard-CVhtNL04-BuDL6zff.chunk.mjs";import"./index-DpibbgL8.chunk.mjs";import"./colors-Go3zmZRD-CR3eBara.chunk.mjs";import"./NcUserStatusIcon-CGEf7fej-DG3KCpud.chunk.mjs";import"./NcInputField-Bwsh2aHY-DMKjn_ao.chunk.mjs";const Le={name:"BackupRestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ze=["aria-hidden","aria-label"],$e=["fill","width","height"],xe={d:"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"},Ae={key:0};function Ee(i,t,e,c,f,s){return a(),p("span",O(i.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon backup-restore-icon",role:"img",onClick:t[0]||(t[0]=d=>i.$emit("click",d))}),[(a(),p("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[C("path",xe,[e.title?(a(),p("title",Ae,w(e.title),1)):b("",!0)])],8,$e))],16,ze)}const Ie=A(Le,[["render",Ee]]),Me={name:"FileCompareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ne=["aria-hidden","aria-label"],De=["fill","width","height"],Te={d:"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"},Oe={key:0};function Be(i,t,e,c,f,s){return a(),p("span",O(i.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon file-compare-icon",role:"img",onClick:t[0]||(t[0]=d=>i.$emit("click",d))}),[(a(),p("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[C("path",Te,[e.title?(a(),p("title",Oe,w(e.title),1)):b("",!0)])],8,De))],16,Ne)}const Pe=A(Me,[["render",Be]]),Re={name:"ImageOffOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ue=["aria-hidden","aria-label"],qe=["fill","width","height"],Fe={d:"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"},Ke={key:0};function We(i,t,e,c,f,s){return a(),p("span",O(i.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon image-off-outline-icon",role:"img",onClick:t[0]||(t[0]=d=>i.$emit("click",d))}),[(a(),p("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[C("path",Fe,[e.title?(a(),p("title",Ke,w(e.title),1)):b("",!0)])],8,qe))],16,Ue)}const je=A(Re,[["render",We]]),Ze={name:"PencilOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ye=["aria-hidden","aria-label"],Je=["fill","width","height"],Qe={d:"M14.06,9L15,9.94L5.92,19H5V18.08L14.06,9M17.66,3C17.41,3 17.15,3.1 16.96,3.29L15.13,5.12L18.88,8.87L20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18.17,3.09 17.92,3 17.66,3M14.06,6.19L3,17.25V21H6.75L17.81,9.94L14.06,6.19Z"},Ge={key:0};function Xe(i,t,e,c,f,s){return a(),p("span",O(i.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon pencil-outline-icon",role:"img",onClick:t[0]||(t[0]=d=>i.$emit("click",d))}),[(a(),p("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[C("path",Qe,[e.title?(a(),p("title",Ge,w(e.title),1)):b("",!0)])],8,Je))],16,Ye)}const ei=A(Ze,[["render",Xe]]),ii={key:0,class:"version__image"},ti=["src"],oi={key:2,class:"version__image"},si={class:"version__info"},ni=["title"],ri={key:1,class:"version__info","data-cy-files-version-author-name":""},ai={key:0},li=["title"],ci={class:"version__info version__info__subline"},di=B({__name:"VersionEntry",props:{version:{type:Object,required:!0},node:{type:Object,required:!0},isCurrent:{type:Boolean,default:!1},isFirstVersion:{type:Boolean,default:!1},loadPreview:{type:Boolean,default:!1},canView:{type:Boolean,default:!1},canCompare:{type:Boolean,default:!1}},emits:["click","compare","restore","delete","label-update-request"],setup(i,{emit:t}){const e=i,c=t,f=L(!1),s=L(!1),d=L(se("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})),_=g(()=>pe(e.version.size)),u=g(()=>{const r=e.version.label??"";return e.isCurrent?r===""?l("files_versions","Current version"):`${r} (${l("files_versions","Current version")})`:e.isFirstVersion&&r===""?l("files_versions","Initial version"):r}),y=g(()=>!e.version.author||!e.version.authorName?"":e.version.author===T()?.uid?l("files_versions","You"):e.version.authorName??e.version.author),n=g(()=>G(e.version.mtime).format("LLLL")),k=g(()=>e.isCurrent?e.node.source:he()+e.version.url),S=g(()=>d.value.files.version_labeling===!0),z=g(()=>d.value.files.version_deletion===!0),R=g(()=>o(e.node,J.DELETE)),I=g(()=>o(e.node,J.UPDATE)),U=g(()=>!((e.node.permissions&J.READ)===0||e.node.attributes["mount-type"]==="shared"&&e.node.attributes["share-attributes"]&&(JSON.parse(e.node.attributes["share-attributes"]).find(r=>r.scope==="permissions"&&r.key==="download")||{})?.value===!1));function q(){c("label-update-request")}function F(){c("restore",e.version)}async function K(){await Q(),await Q(),c("delete",e.version)}function W(r){e.canView&&r.preventDefault(),c("click",{version:e.version})}function j(){if(!e.canView)throw new Error("Cannot compare version of this file");c("compare",{version:e.version})}function o(r,m){return(r.permissions&m)!==0}return(r,m)=>(a(),H(v(fe),{class:"version","force-display-actions":!0,"actions-aria-label":v(l)("files_versions","Actions for version from {versionHumanExplicitDate}",{versionHumanExplicitDate:n.value}),"data-files-versions-version":i.version.fileVersion,href:k.value,onClick:W},{icon:h(()=>[i.loadPreview||f.value?i.version.previewUrl&&!s.value?(a(),p("img",{key:1,src:i.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy",class:"version__image",onLoad:m[0]||(m[0]=x=>f.value=!0),onError:m[1]||(m[1]=x=>s.value=!0)},null,40,ti)):(a(),p("div",oi,[V(je,{size:20})])):(a(),p("div",ii))]),name:h(()=>[C("div",si,[u.value?(a(),p("div",{key:0,class:"version__info__label","data-cy-files-version-label":"",title:u.value},w(u.value),9,ni)):b("",!0),y.value?(a(),p("div",ri,[u.value?(a(),p("span",ai,"•")):b("",!0),V(v(ye),{class:"avatar",user:i.version.author??void 0,size:20,"disable-menu":"","disable-tooltip":"","hide-status":""},null,8,["user"]),C("div",{class:"version__info__author_name",title:y.value},w(y.value),9,li)])):b("",!0)])]),subname:h(()=>[C("div",ci,[V(v(we),{class:"version__info__date","relative-time":"short",timestamp:i.version.mtime},null,8,["timestamp"]),m[2]||(m[2]=C("span",null,"•",-1)),C("span",null,w(_.value),1)])]),actions:h(()=>[S.value&&I.value?(a(),H(v(D),{key:0,"data-cy-files-versions-version-action":"label","close-after-click":!0,onClick:q},{icon:h(()=>[V(ei,{size:22})]),default:h(()=>[E(" "+w(i.version.label===""?v(l)("files_versions","Name this version"):v(l)("files_versions","Edit version name")),1)]),_:1})):b("",!0),!i.isCurrent&&i.canView&&i.canCompare?(a(),H(v(D),{key:1,"data-cy-files-versions-version-action":"compare","close-after-click":!0,onClick:j},{icon:h(()=>[V(Pe,{size:22})]),default:h(()=>[E(" "+w(v(l)("files_versions","Compare to current version")),1)]),_:1})):b("",!0),!i.isCurrent&&I.value?(a(),H(v(D),{key:2,"data-cy-files-versions-version-action":"restore","close-after-click":!0,onClick:F},{icon:h(()=>[V(Ie,{size:22})]),default:h(()=>[E(" "+w(v(l)("files_versions","Restore version")),1)]),_:1})):b("",!0),U.value?(a(),H(v(be),{key:3,"data-cy-files-versions-version-action":"download",href:k.value,"close-after-click":!0,download:k.value},{icon:h(()=>[V(ke,{size:22})]),default:h(()=>[E(" "+w(v(l)("files_versions","Download version")),1)]),_:1},8,["href","download"])):b("",!0),!i.isCurrent&&z.value&&R.value?(a(),H(v(D),{key:4,"data-cy-files-versions-version-action":"delete","close-after-click":!0,onClick:K},{icon:h(()=>[V(_e,{size:22})]),default:h(()=>[E(" "+w(v(l)("files_versions","Delete version")),1)]),_:1})):b("",!0)]),_:1},8,["actions-aria-label","data-files-versions-version","href"]))}}),ui=A(di,[["__scopeId","data-v-ef281a62"]]),vi={class:"version-label-modal__info"},mi=B({__name:"VersionLabelDialog",props:{open:{type:Boolean,default:!1},label:{type:String,default:""}},emits:["update:open","update:label"],setup(i,{emit:t}){const e=i,c=t,f=ne("labelInput"),s=L(""),d=g(()=>{const u=[];return e.label.trim()===""?u.push({label:l("files_versions","Cancel")}):u.push({label:l("files_versions","Remove version name"),type:"reset",variant:"error",callback:()=>{_("")}}),[...u,{label:l("files_versions","Save version name"),icon:Ve,type:"submit",variant:"primary"}]});ee(()=>{s.value=e.label??""}),ee(()=>{e.open&&Q(()=>f.value?.focus()),s.value=e.label});function _(u){c("update:label",u)}return(u,y)=>(a(),H(v(te),{buttons:d.value,"content-classes":"version-label-modal","is-form":"",open:i.open,size:"normal",name:v(l)("files_versions","Name this version"),"onUpdate:open":y[1]||(y[1]=n=>u.$emit("update:open",n)),onSubmit:y[2]||(y[2]=n=>_(s.value))},{default:h(()=>[V(v(Ce),{ref_key:"labelInput",ref:f,modelValue:s.value,"onUpdate:modelValue":y[0]||(y[0]=n=>s.value=n),class:"version-label-modal__input",label:v(l)("files_versions","Version name"),placeholder:v(l)("files_versions","Version name")},null,8,["modelValue","label","placeholder"]),C("p",vi,w(v(l)("files_versions","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.")),1)]),_:1},8,["buttons","open","name"]))}}),pi=A(mi,[["__scopeId","data-v-6a69577b"]]),$=re().setApp("files_version").detectUser().build(),fi=B({name:"VirtualScrolling",props:{sections:{type:Array,required:!0},containerElement:{type:HTMLElement,default:null},useWindow:{type:Boolean,default:!1},headerHeight:{type:Number,default:75},renderDistance:{type:Number,default:.5},bottomBufferRatio:{type:Number,default:2},scrollToKey:{type:String,default:""}},emits:["need-content"],data(){return{scrollPosition:0,containerHeight:0,rowsContainerHeight:0,resizeObserver:null}},computed:{visibleSections(){$.debug("[VirtualScrolling] Computing visible section",{sections:this.sections});const i=this.containerHeight,t=this.scrollPosition,e=t+i;let c=0,f=0;const s=this.sections.map(n=>(f+=this.headerHeight,{...n,rows:n.rows.reduce((k,S)=>{c=f,f+=S.height;let z=0;return fe&&(z=(c-e)/i),z>this.renderDistance?k:[...k,{...S,distance:z}]},[])})).filter(n=>n.rows.length>0),d=s.flatMap(({rows:n})=>n).flatMap(({items:n})=>n),_=this._rowIdToKeyMap;d.forEach(n=>n.key=_[n.id]);const u=d.map(({key:n})=>n).filter(n=>n!==void 0),y=Object.values(_).filter(n=>!u.includes(n));return d.filter(({key:n})=>n===void 0).forEach(n=>n.key=y.pop()??Math.random().toString(36).substr(2)),this._rowIdToKeyMap=d.reduce((n,{id:k,key:S})=>({...n,[`${k}`]:S}),{}),s},totalHeight(){return this.sections.map(i=>this.headerHeight+i.height).reduce((i,t)=>i+t,0)+0},paddingTop(){if(this.visibleSections.length===0)return 0;let i=0;for(const t of this.sections){if(t.key!==this.visibleSections[0].rows[0].sectionKey){i+=this.headerHeight+t.height;continue}for(const e of t.rows){if(e.key===this.visibleSections[0].rows[0].key)return i;i+=e.height}i+=this.headerHeight}return i},rowsContainerStyle(){return{height:`${this.totalHeight}px`,paddingTop:`${this.paddingTop}px`}},isNearBottom(){const i=this.containerHeight*this.bottomBufferRatio;return this.scrollPosition+this.containerHeight>=this.totalHeight-i},container(){return $.debug("[VirtualScrolling] Computing container"),this.containerElement!==null?this.containerElement:this.useWindow?window:this.$refs.container}},watch:{isNearBottom(i){$.debug("[VirtualScrolling] isNearBottom changed",{value:i}),i&&this.$emit("need-content")},visibleSections(){this.isNearBottom&&this.$emit("need-content")},scrollToKey(i){let t=0;for(const e of this.sections){if(e.key!==i){t+=this.headerHeight+e.height;continue}break}$.debug("[VirtualScrolling] Scrolling to",{currentRowTopDistanceFromTop:t}),this.container.scrollTo({top:t,behavior:"smooth"})}},beforeCreate(){this._rowIdToKeyMap={}},mounted(){this.resizeObserver=new ResizeObserver(i=>{for(const t of i){const e=t.contentRect;t.target===this.container&&(this.containerHeight=e.height),t.target.classList.contains("vs-rows-container")&&(this.rowsContainerHeight=e.height)}}),this.useWindow?(window.addEventListener("resize",this.updateContainerSize,{passive:!0}),this.containerHeight=window.innerHeight):this.resizeObserver.observe(this.container),this.resizeObserver.observe(this.$refs.rowsContainer),this.container.addEventListener("scroll",this.updateScrollPosition,{passive:!0})},beforeUnmount(){this.useWindow&&window.removeEventListener("resize",this.updateContainerSize),this.resizeObserver?.disconnect(),this.container.removeEventListener("scroll",this.updateScrollPosition)},methods:{updateScrollPosition(){this._onScrollHandle??=requestAnimationFrame(()=>{this._onScrollHandle=null,this.useWindow?this.scrollPosition=this.container.scrollY:this.scrollPosition=this.container.scrollTop})},updateContainerSize(){this.containerHeight=window.innerHeight}}}),hi={key:0,ref:"container",class:"vs-container"};function gi(i,t,e,c,f,s){return!i.useWindow&&i.containerElement===null?(a(),p("div",hi,[C("div",{ref:"rowsContainer",class:"vs-rows-container",style:ie(i.rowsContainerStyle)},[M(i.$slots,"default",{visibleSections:i.visibleSections},void 0,!0),M(i.$slots,"loader",{},void 0,!0)],4)],512)):(a(),p("div",{key:1,ref:"rowsContainer",class:"vs-rows-container",style:ie(i.rowsContainerStyle)},[M(i.$slots,"default",{visibleSections:i.visibleSections},void 0,!0),M(i.$slots,"loader",{},void 0,!0)],4))}const bi=A(fi,[["render",gi],["__scopeId","data-v-b0f92288"]]),yi=` - - - - - - - - - - -`,P=Se();async function wi(i){const t=`/versions/${T()?.uid}/versions/${i.fileid}`;try{const e=(await P.getDirectoryContents(t,{data:yi,details:!0})).data.filter(({mime:s})=>s!=="").map(s=>Ci(s,i)),c=new Set(e.map(s=>String(s.author))),f=await He.post(X("/displaynames"),{users:[...c]});for(const s of e){const d=f.data.users[s.author??""];d&&(s.authorName=d)}return e}catch(e){throw $.error("Could not fetch version",{exception:e}),e}}async function _i(i){try{$.debug("Restoring version",{url:i.url}),await P.moveFile(`/versions/${T()?.uid}/versions/${i.fileId}/${i.fileVersion}`,`/versions/${T()?.uid}/restore/target`)}catch(t){throw $.error("Could not restore version",{exception:t}),t}}function Ci(i,t){const e=G(i.lastmod).unix()*1e3;let c="";return e===t.mtime?.getTime()?c=X("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1",{fileId:t.fileid,fileEtag:t.attributes.etag}):c=X("/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1",{file:t.path,fileVersion:i.basename}),{fileId:t.fileid.toString(),label:i.props["version-label"]?String(i.props["version-label"]):"",author:i.props["version-author"]?String(i.props["version-author"]):null,authorName:null,filename:i.filename,basename:G(e).format("LLL"),mime:i.mime,etag:`${i.props.getetag}`,size:i.size,type:i.type,mtime:e,permissions:"R",previewUrl:c,url:ae("/remote.php/dav",i.filename),source:ge("dav")+le(i.filename),fileVersion:i.basename}}async function ki(i,t){return await P.customRequest(i.filename,{method:"PROPPATCH",data:` - - - - ${t} - - - `})}async function Vi(i){await P.deleteFile(i.filename)}const Hi={key:0,class:"versions-tab__container"},Si=["aria-label"],Wi=B({__name:"FilesVersionsSidebarTab",props:{node:{},folder:{},view:{}},setup(i,{expose:t}){const e=i;t({setActive:I});const c=oe(),f=L(!1),s=L([]),d=L(!1),_=L(!1),u=L(null);ce(de(()=>e.node),async()=>{if(e.node)try{d.value=!0,s.value=await wi(e.node)}finally{d.value=!1}},{immediate:!0});const y=g(()=>e.node?.mtime?.getTime()??0),n=g(()=>[...s.value].sort((o,r)=>e.node?o.mtime===e.node.mtime?.getTime()?-1:r.mtime===e.node.mtime?.getTime()?1:r.mtime-o.mtime:0)),k=g(()=>[{key:"versions",rows:n.value.map(o=>({key:o.mtime.toString(),height:68,sectionKey:"versions",items:[{id:o.mtime.toString(),version:o}]})),height:68*n.value.length}]),S=g(()=>s.value.map(o=>o.mtime).reduce((o,r)=>Math.min(o,r))),z=g(()=>e.node?window.OCA.Viewer?.mimetypes?.includes(e.node?.mime):!1),R=g(()=>!c.value&&window.OCA.Viewer?.mimetypesCompare?.includes(e.node?.mime));function I(o){f.value=o}async function U(o){if(!e.node)return;const r=e.node.clone();r.attributes.etag=o.etag,r.size=o.size,r.mtime=new Date(o.mtime);const m={preventDefault:!1,node:r,version:o};if(N("files_versions:restore:requested",m),!m.preventDefault)try{await _i(o),o.label?Z(l("files_versions",`${o.label} restored`)):o.mtime===S.value?Z(l("files_versions","Initial version restored")):Z(l("files_versions","Version restored")),N("files:node:updated",r),N("files_versions:restore:restored",{node:r,version:o})}catch{Y(l("files_versions","Could not restore version")),N("files_versions:restore:failed",o)}}function q(o){_.value=!0,u.value=o}async function F(o){if(u.value===null)throw new Error("editedVersion should be set at that point");const r=u.value.label;u.value.label=o,_.value=!1;try{await ki(u.value,o),u.value=null}catch(m){u.value.label=r,Y(l("files_versions","Could not set version label")),$.error("Could not set version label",{exception:m})}}async function K(o){const r=s.value.indexOf(o);s.value.splice(r,1);try{await Vi(o)}catch{s.value.push(o),Y(l("files_versions","Could not delete version"))}}function W({version:o}){if(e.node!==null){if(o.mtime===e.node?.mtime?.getTime()){window.OCA.Viewer.open({path:e.node.path});return}window.OCA.Viewer.open({fileInfo:{...o,filename:o.filename,previewUrl:void 0},enableSidebar:!1})}}function j({version:o}){const r=s.value.map(m=>({...m,previewUrl:void 0}));window.OCA.Viewer.compare({path:e.node.path},r.find(m=>m.source===o.source))}return(o,r)=>i.node?(a(),p("div",Hi,[V(bi,{sections:k.value,"header-height":0},{default:h(({visibleSections:m})=>[C("ul",{"aria-label":v(l)("files_versions","File versions"),"data-files-versions-versions-list":""},[m.length===1?(a(!0),p(ue,{key:0},ve(m[0].rows,x=>(a(),H(ui,{key:x.items[0].version.mtime,"can-view":z.value,"can-compare":R.value,"load-preview":f.value,version:x.items[0].version,node:i.node,"is-current":x.items[0].version.mtime===y.value,"is-first-version":x.items[0].version.mtime===S.value,onClick:W,onCompare:j,onRestore:U,onLabelUpdateRequest:Li=>q(x.items[0].version),onDelete:K},null,8,["can-view","can-compare","load-preview","version","node","is-current","is-first-version","onLabelUpdateRequest"]))),128)):b("",!0)],8,Si)]),loader:h(()=>[d.value?(a(),H(v(me),{key:0,class:"files-list-viewer__loader"})):b("",!0)]),_:1},8,["sections"]),u.value?(a(),H(pi,{key:0,open:_.value,"onUpdate:open":r[0]||(r[0]=m=>_.value=m),label:u.value.label,"onUpdate:label":F},null,8,["open","label"])):b("",!0)])):b("",!0)}});export{Wi as default}; -//# sourceMappingURL=FilesVersionsSidebarTab-DJtegyy8.chunk.mjs.map diff --git a/dist/NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs b/dist/NcActionRouter-oT-YU_jf-Bo7WEQMz.chunk.mjs similarity index 87% rename from dist/NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs rename to dist/NcActionRouter-oT-YU_jf-Bo7WEQMz.chunk.mjs index 21155037fd2bc..c1d994751e3c7 100644 --- a/dist/NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs +++ b/dist/NcActionRouter-oT-YU_jf-Bo7WEQMz.chunk.mjs @@ -1,2 +1,2 @@ -import{N as g,f as C,c as I}from"./NcNoteCard-CVhtNL04-BuDL6zff.chunk.mjs";import{e as S,f as p}from"./index-JpgrUA2Z-C7mmv1ig.chunk.mjs";import{b as m}from"./_plugin-vue_export-helper-DM8WuWZR.chunk.mjs";import{r as x,E as i,o as e,H as o,x as h,c as f,F as c,Q as b,G as d,f as l,z as v,b as V,w}from"./string_decoder-BycPOoxV.chunk.mjs";const M={beforeUpdate(){this.text=this.getText()},data(){return{text:this.getText()}},computed:{isLongText(){return this.text&&this.text.trim().length>20}},methods:{getText(){return this.$slots.default?.()[0].children?.trim?.()||""}}},_={mixins:[M],props:{icon:{type:String,default:""},name:{type:String,default:""},title:{type:String,default:""},closeAfterClick:{type:Boolean,default:!1},ariaLabel:{type:String,default:null}},inject:{closeMenu:{from:S}},emits:["click"],created(){"ariaHidden"in this.$attrs},computed:{isIconUrl(){try{return!!new URL(this.icon,this.icon.startsWith("/")?window.location.origin:void 0)}catch{return!1}}},methods:{onClick(t){this.$emit("click",t),this.closeAfterClick&&this.closeMenu(!1)}}},L={name:"NcActionButton",components:{NcIconSvgWrapper:g},mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{disabled:{type:Boolean,default:!1},isMenu:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>["button","checkbox","radio","reset","submit"].includes(t)},modelValue:{type:[Boolean,String],default:null},value:{type:String,default:null},description:{type:String,default:""}},emits:["update:modelValue"],setup(){return{mdiCheck:I,mdiChevronRight:C}},computed:{isFocusable(){return!this.disabled},isChecked(){return this.type==="radio"&&typeof this.modelValue!="boolean"?this.modelValue===this.value:this.modelValue},nativeType(){return this.type==="submit"||this.type==="reset"?this.type:"button"},buttonAttributes(){const t={};return this.isInSemanticMenu?(t.role="menuitem",this.type==="radio"?(t.role="menuitemradio",t["aria-checked"]=this.isChecked?"true":"false"):(this.type==="checkbox"||this.nativeType==="button"&&this.modelValue!==null)&&(t.role="menuitemcheckbox",t["aria-checked"]=this.modelValue===null?"mixed":this.modelValue?"true":"false")):this.modelValue!==null&&this.nativeType==="button"&&(t["aria-pressed"]=this.modelValue?"true":"false"),t}},methods:{handleClick(t){this.onClick(t),(this.modelValue!==null||this.type!=="button")&&(this.type==="radio"?typeof this.modelValue!="boolean"?this.isChecked||this.$emit("update:modelValue",this.value):this.$emit("update:modelValue",!this.isChecked):this.$emit("update:modelValue",!this.isChecked))}}},$=["role"],T=["aria-label","disabled","title","type"],U={class:"action-button__longtext-wrapper"},A={key:0,class:"action-button__name"},N=["textContent"],R={key:2,class:"action-button__text"},W=["textContent"],j={key:2,class:"action-button__pressed-icon material-design-icon"};function B(t,s,a,u,k,n){const r=x("NcIconSvgWrapper");return e(),i("li",{class:d(["action",{"action--disabled":a.disabled}]),role:n.isInSemanticMenu&&"presentation"},[o("button",v({"aria-label":t.ariaLabel,class:["action-button button-vue",{"action-button--active":n.isChecked,focusable:n.isFocusable}],disabled:a.disabled,title:t.title,type:n.nativeType},n.buttonAttributes,{onClick:s[0]||(s[0]=(...y)=>n.handleClick&&n.handleClick(...y))}),[h(t.$slots,"icon",{},()=>[o("span",{class:d([[t.isIconUrl?"action-button__icon--url":t.icon],"action-button__icon"]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null}),"aria-hidden":"true"},null,6)],!0),o("span",U,[t.name?(e(),i("strong",A,l(t.name),1)):c("",!0),t.isLongText?(e(),i("span",{key:1,class:"action-button__longtext",textContent:l(t.text)},null,8,N)):(e(),i("span",R,l(t.text),1)),a.description?(e(),i("span",{key:3,class:"action-button__description",textContent:l(a.description)},null,8,W)):c("",!0)]),a.isMenu?(e(),f(r,{key:0,class:"action-button__menu-icon",directional:"",path:u.mdiChevronRight},null,8,["path"])):n.isChecked?(e(),f(r,{key:1,path:u.mdiCheck,class:"action-button__pressed-icon"},null,8,["path"])):n.isChecked===!1?(e(),i("span",j)):c("",!0),c("",!0)],16,T)],10,$)}const lt=m(L,[["render",B],["__scopeId","data-v-6c2daf4e"]]),F={name:"NcActionLink",mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{href:{type:String,required:!0,validator:t=>{try{return new URL(t)}catch{return t.startsWith("#")||t.startsWith("/")}}},download:{type:String,default:null},target:{type:String,default:"_self",validator:t=>t&&(!t.startsWith("_")||["_blank","_self","_parent","_top"].indexOf(t)>-1)},title:{type:String,default:null}}},q=["role"],H=["download","href","aria-label","target","title","role"],O={key:0,class:"action-link__longtext-wrapper"},z={class:"action-link__name"},E=["textContent"],G=["textContent"],Q={key:2,class:"action-link__text"};function D(t,s,a,u,k,n){return e(),i("li",{class:"action",role:n.isInSemanticMenu&&"presentation"},[o("a",{download:a.download,href:a.href,"aria-label":t.ariaLabel,target:a.target,title:a.title,class:"action-link focusable",rel:"nofollow noreferrer noopener",role:n.isInSemanticMenu&&"menuitem",onClick:s[0]||(s[0]=(...r)=>t.onClick&&t.onClick(...r))},[h(t.$slots,"icon",{},()=>[o("span",{"aria-hidden":"true",class:d(["action-link__icon",[t.isIconUrl?"action-link__icon--url":t.icon]]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null})},null,6)],!0),t.name?(e(),i("span",O,[o("strong",z,l(t.name),1),s[1]||(s[1]=o("br",null,null,-1)),o("span",{class:"action-link__longtext",textContent:l(t.text)},null,8,E)])):t.isLongText?(e(),i("span",{key:1,class:"action-link__longtext",textContent:l(t.text)},null,8,G)):(e(),i("span",Q,l(t.text),1)),c("",!0)],8,H)],8,q)}const st=m(F,[["render",D],["__scopeId","data-v-32f01b7a"]]),J={name:"NcActionRouter",mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{to:{type:[String,Object],required:!0}}},K=["role"],P={key:0,class:"action-router__longtext-wrapper"},X={class:"action-router__name"},Y=["textContent"],Z=["textContent"],tt={key:2,class:"action-router__text"};function et(t,s,a,u,k,n){const r=x("RouterLink");return e(),i("li",{class:"action",role:n.isInSemanticMenu&&"presentation"},[V(r,{"aria-label":t.ariaLabel,class:"action-router focusable",rel:"nofollow noreferrer noopener",role:n.isInSemanticMenu&&"menuitem",title:t.title,to:a.to,onClick:t.onClick},{default:w(()=>[h(t.$slots,"icon",{},()=>[o("span",{"aria-hidden":"true",class:d(["action-router__icon",[t.isIconUrl?"action-router__icon--url":t.icon]]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null})},null,6)],!0),t.name?(e(),i("span",P,[o("strong",X,l(t.name),1),s[0]||(s[0]=o("br",null,null,-1)),o("span",{class:"action-router__longtext",textContent:l(t.text)},null,8,Y)])):t.isLongText?(e(),i("span",{key:1,class:"action-router__longtext",textContent:l(t.text)},null,8,Z)):(e(),i("span",tt,l(t.text),1)),c("",!0)]),_:3},8,["aria-label","role","title","to","onClick"])],8,K)}const rt=m(J,[["render",et],["__scopeId","data-v-87267750"]]);export{_ as A,lt as N,st as a,rt as b,M as c}; -//# sourceMappingURL=NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs.map +import{N as g,f as C,c as I}from"./NcNoteCard-CVhtNL04-B9GbPOf_.chunk.mjs";import{e as S,f as p}from"./index-JpgrUA2Z-Bcb7_yWp.chunk.mjs";import{b as m}from"./_plugin-vue_export-helper-CXvX4IZ0.chunk.mjs";import{r as x,E as i,o as e,H as o,x as h,c as f,F as c,R as b,G as d,f as l,z as v,b as V,w}from"./string_decoder-BY7m9-pN.chunk.mjs";const M={beforeUpdate(){this.text=this.getText()},data(){return{text:this.getText()}},computed:{isLongText(){return this.text&&this.text.trim().length>20}},methods:{getText(){return this.$slots.default?.()[0].children?.trim?.()||""}}},_={mixins:[M],props:{icon:{type:String,default:""},name:{type:String,default:""},title:{type:String,default:""},closeAfterClick:{type:Boolean,default:!1},ariaLabel:{type:String,default:null}},inject:{closeMenu:{from:S}},emits:["click"],created(){"ariaHidden"in this.$attrs},computed:{isIconUrl(){try{return!!new URL(this.icon,this.icon.startsWith("/")?window.location.origin:void 0)}catch{return!1}}},methods:{onClick(t){this.$emit("click",t),this.closeAfterClick&&this.closeMenu(!1)}}},L={name:"NcActionButton",components:{NcIconSvgWrapper:g},mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{disabled:{type:Boolean,default:!1},isMenu:{type:Boolean,default:!1},type:{type:String,default:"button",validator:t=>["button","checkbox","radio","reset","submit"].includes(t)},modelValue:{type:[Boolean,String],default:null},value:{type:String,default:null},description:{type:String,default:""}},emits:["update:modelValue"],setup(){return{mdiCheck:I,mdiChevronRight:C}},computed:{isFocusable(){return!this.disabled},isChecked(){return this.type==="radio"&&typeof this.modelValue!="boolean"?this.modelValue===this.value:this.modelValue},nativeType(){return this.type==="submit"||this.type==="reset"?this.type:"button"},buttonAttributes(){const t={};return this.isInSemanticMenu?(t.role="menuitem",this.type==="radio"?(t.role="menuitemradio",t["aria-checked"]=this.isChecked?"true":"false"):(this.type==="checkbox"||this.nativeType==="button"&&this.modelValue!==null)&&(t.role="menuitemcheckbox",t["aria-checked"]=this.modelValue===null?"mixed":this.modelValue?"true":"false")):this.modelValue!==null&&this.nativeType==="button"&&(t["aria-pressed"]=this.modelValue?"true":"false"),t}},methods:{handleClick(t){this.onClick(t),(this.modelValue!==null||this.type!=="button")&&(this.type==="radio"?typeof this.modelValue!="boolean"?this.isChecked||this.$emit("update:modelValue",this.value):this.$emit("update:modelValue",!this.isChecked):this.$emit("update:modelValue",!this.isChecked))}}},$=["role"],T=["aria-label","disabled","title","type"],U={class:"action-button__longtext-wrapper"},A={key:0,class:"action-button__name"},N=["textContent"],R={key:2,class:"action-button__text"},W=["textContent"],j={key:2,class:"action-button__pressed-icon material-design-icon"};function B(t,s,a,u,k,n){const r=x("NcIconSvgWrapper");return e(),i("li",{class:d(["action",{"action--disabled":a.disabled}]),role:n.isInSemanticMenu&&"presentation"},[o("button",v({"aria-label":t.ariaLabel,class:["action-button button-vue",{"action-button--active":n.isChecked,focusable:n.isFocusable}],disabled:a.disabled,title:t.title,type:n.nativeType},n.buttonAttributes,{onClick:s[0]||(s[0]=(...y)=>n.handleClick&&n.handleClick(...y))}),[h(t.$slots,"icon",{},()=>[o("span",{class:d([[t.isIconUrl?"action-button__icon--url":t.icon],"action-button__icon"]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null}),"aria-hidden":"true"},null,6)],!0),o("span",U,[t.name?(e(),i("strong",A,l(t.name),1)):c("",!0),t.isLongText?(e(),i("span",{key:1,class:"action-button__longtext",textContent:l(t.text)},null,8,N)):(e(),i("span",R,l(t.text),1)),a.description?(e(),i("span",{key:3,class:"action-button__description",textContent:l(a.description)},null,8,W)):c("",!0)]),a.isMenu?(e(),f(r,{key:0,class:"action-button__menu-icon",directional:"",path:u.mdiChevronRight},null,8,["path"])):n.isChecked?(e(),f(r,{key:1,path:u.mdiCheck,class:"action-button__pressed-icon"},null,8,["path"])):n.isChecked===!1?(e(),i("span",j)):c("",!0),c("",!0)],16,T)],10,$)}const lt=m(L,[["render",B],["__scopeId","data-v-6c2daf4e"]]),F={name:"NcActionLink",mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{href:{type:String,required:!0,validator:t=>{try{return new URL(t)}catch{return t.startsWith("#")||t.startsWith("/")}}},download:{type:String,default:null},target:{type:String,default:"_self",validator:t=>t&&(!t.startsWith("_")||["_blank","_self","_parent","_top"].indexOf(t)>-1)},title:{type:String,default:null}}},q=["role"],H=["download","href","aria-label","target","title","role"],O={key:0,class:"action-link__longtext-wrapper"},z={class:"action-link__name"},E=["textContent"],G=["textContent"],D={key:2,class:"action-link__text"};function J(t,s,a,u,k,n){return e(),i("li",{class:"action",role:n.isInSemanticMenu&&"presentation"},[o("a",{download:a.download,href:a.href,"aria-label":t.ariaLabel,target:a.target,title:a.title,class:"action-link focusable",rel:"nofollow noreferrer noopener",role:n.isInSemanticMenu&&"menuitem",onClick:s[0]||(s[0]=(...r)=>t.onClick&&t.onClick(...r))},[h(t.$slots,"icon",{},()=>[o("span",{"aria-hidden":"true",class:d(["action-link__icon",[t.isIconUrl?"action-link__icon--url":t.icon]]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null})},null,6)],!0),t.name?(e(),i("span",O,[o("strong",z,l(t.name),1),s[1]||(s[1]=o("br",null,null,-1)),o("span",{class:"action-link__longtext",textContent:l(t.text)},null,8,E)])):t.isLongText?(e(),i("span",{key:1,class:"action-link__longtext",textContent:l(t.text)},null,8,G)):(e(),i("span",D,l(t.text),1)),c("",!0)],8,H)],8,q)}const st=m(F,[["render",J],["__scopeId","data-v-32f01b7a"]]),K={name:"NcActionRouter",mixins:[_],inject:{isInSemanticMenu:{from:p,default:!1}},props:{to:{type:[String,Object],required:!0}}},P=["role"],Q={key:0,class:"action-router__longtext-wrapper"},X={class:"action-router__name"},Y=["textContent"],Z=["textContent"],tt={key:2,class:"action-router__text"};function et(t,s,a,u,k,n){const r=x("RouterLink");return e(),i("li",{class:"action",role:n.isInSemanticMenu&&"presentation"},[V(r,{"aria-label":t.ariaLabel,class:"action-router focusable",rel:"nofollow noreferrer noopener",role:n.isInSemanticMenu&&"menuitem",title:t.title,to:a.to,onClick:t.onClick},{default:w(()=>[h(t.$slots,"icon",{},()=>[o("span",{"aria-hidden":"true",class:d(["action-router__icon",[t.isIconUrl?"action-router__icon--url":t.icon]]),style:b({backgroundImage:t.isIconUrl?`url(${t.icon})`:null})},null,6)],!0),t.name?(e(),i("span",Q,[o("strong",X,l(t.name),1),s[0]||(s[0]=o("br",null,null,-1)),o("span",{class:"action-router__longtext",textContent:l(t.text)},null,8,Y)])):t.isLongText?(e(),i("span",{key:1,class:"action-router__longtext",textContent:l(t.text)},null,8,Z)):(e(),i("span",tt,l(t.text),1)),c("",!0)]),_:3},8,["aria-label","role","title","to","onClick"])],8,P)}const rt=m(K,[["render",et],["__scopeId","data-v-87267750"]]);export{_ as A,lt as N,st as a,rt as b,M as c}; +//# sourceMappingURL=NcActionRouter-oT-YU_jf-Bo7WEQMz.chunk.mjs.map diff --git a/dist/NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs.license b/dist/NcActionRouter-oT-YU_jf-Bo7WEQMz.chunk.mjs.license similarity index 100% rename from dist/NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs.license rename to dist/NcActionRouter-oT-YU_jf-Bo7WEQMz.chunk.mjs.license diff --git a/dist/NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs.map b/dist/NcActionRouter-oT-YU_jf-Bo7WEQMz.chunk.mjs.map similarity index 99% rename from dist/NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs.map rename to dist/NcActionRouter-oT-YU_jf-Bo7WEQMz.chunk.mjs.map index fc0c5bd2dff5a..0884ab843c5d8 100644 --- a/dist/NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs.map +++ b/dist/NcActionRouter-oT-YU_jf-Bo7WEQMz.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"NcActionRouter-oT-YU_jf-axw0lkuI.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/actionGlobal-BZFdtdJL.mjs","../node_modules/@nextcloud/vue/dist/chunks/actionText-DYzDdbVe.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionButton-pKOSrlGE.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionLink-vEvKSV4N.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionRouter-oT-YU_jf.mjs"],"sourcesContent":["const ActionGlobalMixin = {\n beforeUpdate() {\n this.text = this.getText();\n },\n data() {\n return {\n // $slots are not reactive.\n // We need to update the content manually\n text: this.getText()\n };\n },\n computed: {\n isLongText() {\n return this.text && this.text.trim().length > 20;\n }\n },\n methods: {\n getText() {\n return this.$slots.default?.()[0].children?.trim?.() || \"\";\n }\n }\n};\nexport {\n ActionGlobalMixin as A\n};\n//# sourceMappingURL=actionGlobal-BZFdtdJL.mjs.map\n","import { warn } from \"vue\";\nimport { N as NC_ACTIONS_CLOSE_MENU } from \"./useNcActions-CiGWxAJE.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nconst ActionTextMixin = {\n mixins: [ActionGlobalMixin],\n props: {\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Whether we close the Actions menu after the click\n */\n closeAfterClick: {\n type: Boolean,\n default: false\n },\n /**\n * Aria label for the button. Not needed if the button has text.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n inject: {\n closeMenu: {\n from: NC_ACTIONS_CLOSE_MENU\n }\n },\n emits: [\n \"click\"\n ],\n created() {\n if (\"ariaHidden\" in this.$attrs) {\n warn(\"[NcAction*]: Do not set the ariaHidden attribute as the root element will inherit the incorrect aria-hidden.\");\n }\n },\n computed: {\n /**\n * Check if icon prop is an URL\n *\n * @return {boolean} Whether the icon prop is an URL\n */\n isIconUrl() {\n try {\n return !!new URL(this.icon, this.icon.startsWith(\"/\") ? window.location.origin : void 0);\n } catch {\n return false;\n }\n }\n },\n methods: {\n onClick(event) {\n this.$emit(\"click\", event);\n if (this.closeAfterClick) {\n this.closeMenu(false);\n }\n }\n }\n};\nexport {\n ActionTextMixin as A\n};\n//# sourceMappingURL=actionText-DYzDdbVe.mjs.map\n","import '../assets/NcActionButton-Bb0ihLdt.css';\nimport { c as mdiChevronRight, d as mdiCheck } from \"./mdi-XFJRiRqJ.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-BvLanNaW.mjs\";\nimport { A as ActionTextMixin } from \"./actionText-DYzDdbVe.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-CiGWxAJE.mjs\";\nimport { resolveComponent, createElementBlock, openBlock, normalizeClass, createElementVNode, mergeProps, renderSlot, createBlock, createCommentVNode, normalizeStyle, toDisplayString } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionButton\",\n components: {\n NcIconSvgWrapper\n },\n mixins: [ActionTextMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * disabled state of the action button\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * If this is a menu, a chevron icon will\n * be added at the end of the line\n */\n isMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The button's behavior, by default the button acts like a normal button with optional toggle button behavior if `modelValue` is `true` or `false`.\n * But you can also set to checkbox button behavior with tri-state or radio button like behavior.\n * This extends the native HTML button type attribute.\n */\n type: {\n type: String,\n default: \"button\",\n validator: (behavior) => [\"button\", \"checkbox\", \"radio\", \"reset\", \"submit\"].includes(behavior)\n },\n /**\n * The buttons state if `type` is 'checkbox' or 'radio' (meaning if it is pressed / selected).\n * For checkbox and toggle button behavior - boolean value.\n * For radio button behavior - could be a boolean checked or a string with the value of the button.\n * Note: Unlike native radio buttons, NcActionButton are not grouped by name, so you need to connect them by bind correct modelValue.\n *\n * **This is not availabe for `type='submit'` or `type='reset'`**\n *\n * If using `type='checkbox'` a `model-value` of `true` means checked, `false` means unchecked and `null` means indeterminate (tri-state)\n * For `type='radio'` `null` is equal to `false`\n */\n modelValue: {\n type: [Boolean, String],\n default: null\n },\n /**\n * The value used for the `modelValue` when this component is used with radio behavior\n * Similar to the `value` attribute of ``\n */\n value: {\n type: String,\n default: null\n },\n /**\n * Small underlying text content of the entry\n */\n description: {\n type: String,\n default: \"\"\n }\n },\n emits: [\"update:modelValue\"],\n setup() {\n return {\n mdiCheck,\n mdiChevronRight\n };\n },\n computed: {\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n },\n /**\n * The current \"checked\" or \"pressed\" state for the model behavior\n */\n isChecked() {\n if (this.type === \"radio\" && typeof this.modelValue !== \"boolean\") {\n return this.modelValue === this.value;\n }\n return this.modelValue;\n },\n /**\n * The native HTML type to set on the button\n */\n nativeType() {\n if (this.type === \"submit\" || this.type === \"reset\") {\n return this.type;\n }\n return \"button\";\n },\n /**\n * HTML attributes to bind to the