Merge pull request #57129 from nextcloud/backport/55726/stable32
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable32, 8.1, stable32, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions

[stable32] chore: Update `@nextcloud/dialogs` to v7.0.0
This commit is contained in:
Ferdinand Thiessen 2025-12-17 20:56:20 +01:00 committed by GitHub
commit 7e20e30bcb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
337 changed files with 20943 additions and 2387 deletions

View file

@ -102,8 +102,8 @@ jobs:
matrix:
# Run multiple copies of the current job in parallel
# Please increase the number or runners as your tests suite grows (0 based index for e2e tests)
containers: ['component', 'setup', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# Hack as strategy.job-total includes the component and GitHub does not allow math expressions
containers: ['setup', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# Hack as strategy.job-total includes the "setup" and GitHub does not allow math expressions
# Always align this number with the total of e2e runners (max. index + 1)
total-containers: [10]

View file

@ -2,6 +2,7 @@
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: CC0-1.0
*/
export function setup() {
process.env.TZ = 'UTC'
}

View file

@ -2,5 +2,6 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: CC0-1.0
*/
import '@testing-library/jest-dom/vitest'
import 'core-js/stable/index.js'

View file

@ -65,11 +65,11 @@
</template>
<script>
import axios from '@nextcloud/axios'
import { DialogBuilder, showError } from '@nextcloud/dialogs'
import { loadState } from '@nextcloud/initial-state'
import { DialogBuilder, DialogSeverity, showError } from '@nextcloud/dialogs'
import { generateOcsUrl } from '@nextcloud/router'
import { confirmPassword } from '@nextcloud/password-confirmation'
import axios from '@nextcloud/axios'
import NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'
import NcSettingsSection from '@nextcloud/vue/components/NcSettingsSection'
@ -114,10 +114,8 @@ export default {
const dialog = new DialogBuilder(t('federatedfilesharing', 'Confirm data upload to lookup server'))
await dialog
.setSeverity(DialogSeverity.Warning)
.setText(
t('federatedfilesharing', 'When enabled, all account properties (e.g. email address) with scope visibility set to "published", will be automatically synced and transmitted to an external system and made available in a public, global address book.'),
)
.setSeverity('warning')
.setText(t('federatedfilesharing', 'When enabled, all account properties (e.g. email address) with scope visibility set to "published", will be automatically synced and transmitted to an external system and made available in a public, global address book.'))
.addButton({
callback: () => this.setLookupServerUploadEnabled(false),
label: t('federatedfilesharing', 'Disable upload'),
@ -147,9 +145,8 @@ export default {
const dialog = new DialogBuilder(t('federatedfilesharing', 'Confirm querying lookup server'))
await dialog
.setSeverity(DialogSeverity.Warning)
.setText(
t('federatedfilesharing', 'When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book.')
.setSeverity('warning')
.setText(t('federatedfilesharing', 'When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book.')
+ t('federatedfilesharing', 'This is used to retrieve the federated cloud ID to make federated sharing easier.')
+ t('federatedfilesharing', 'Moreover, email addresses of users might be sent to that system in order to verify them.'),
)

View file

@ -1,123 +0,0 @@
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import RemoteShareDialog from './RemoteShareDialog.vue'
describe('RemoteShareDialog', () => {
it('can be mounted', () => {
cy.mount(RemoteShareDialog, {
propsData: {
owner: 'user123',
name: 'my-photos',
remote: 'nextcloud.local',
passwordRequired: false,
},
})
cy.findByRole('dialog')
.should('be.visible')
.and('contain.text', 'user123@nextcloud.local')
.and('contain.text', 'my-photos')
cy.findByRole('button', { name: 'Cancel' })
.should('be.visible')
cy.findByRole('button', { name: /add remote share/i })
.should('be.visible')
})
it('does not show password input if not enabled', () => {
cy.mount(RemoteShareDialog, {
propsData: {
owner: 'user123',
name: 'my-photos',
remote: 'nextcloud.local',
passwordRequired: false,
},
})
cy.findByRole('dialog')
.should('be.visible')
.find('input[type="password"]')
.should('not.exist')
})
it('emits true when accepted', () => {
const onClose = cy.spy().as('onClose')
cy.mount(RemoteShareDialog, {
listeners: {
close: onClose,
},
propsData: {
owner: 'user123',
name: 'my-photos',
remote: 'nextcloud.local',
passwordRequired: false,
},
})
cy.findByRole('button', { name: 'Cancel' }).click()
cy.get('@onClose')
.should('have.been.calledWith', false)
})
it('show password input if needed', () => {
cy.mount(RemoteShareDialog, {
propsData: {
owner: 'admin',
name: 'secret-data',
remote: 'nextcloud.local',
passwordRequired: true,
},
})
cy.findByRole('dialog')
.should('be.visible')
.find('input[type="password"]')
.should('be.visible')
})
it('emits the submitted password', () => {
const onClose = cy.spy().as('onClose')
cy.mount(RemoteShareDialog, {
listeners: {
close: onClose,
},
propsData: {
owner: 'admin',
name: 'secret-data',
remote: 'nextcloud.local',
passwordRequired: true,
},
})
cy.get('input[type="password"]')
.type('my password{enter}')
cy.get('@onClose')
.should('have.been.calledWith', true, 'my password')
})
it('emits no password if cancelled', () => {
const onClose = cy.spy().as('onClose')
cy.mount(RemoteShareDialog, {
listeners: {
close: onClose,
},
propsData: {
owner: 'admin',
name: 'secret-data',
remote: 'nextcloud.local',
passwordRequired: true,
},
})
cy.get('input[type="password"]')
.type('my password')
cy.findByRole('button', { name: 'Cancel' }).click()
cy.get('@onClose')
.should('have.been.calledWith', false)
})
})

View file

@ -0,0 +1,115 @@
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { cleanup, fireEvent, render } from '@testing-library/vue'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import RemoteShareDialog from './RemoteShareDialog.vue'
describe('RemoteShareDialog', () => {
beforeEach(cleanup)
it('can be mounted', async () => {
const component = render(RemoteShareDialog, {
props: {
owner: 'user123',
name: 'my-photos',
remote: 'nextcloud.local',
passwordRequired: false,
},
})
await expect(component.findByRole('dialog', { name: 'Remote share' })).resolves.not.toThrow()
expect(component.getByRole('dialog').innerText).toContain(/my-photos from user123@nextcloud.local/)
await expect(component.findByRole('button', { name: 'Cancel' })).resolves.not.toThrow()
await expect(component.findByRole('button', { name: /Add remote share/ })).resolves.not.toThrow()
})
it('does not show password input if not enabled', async () => {
const component = render(RemoteShareDialog, {
props: {
owner: 'user123',
name: 'my-photos',
remote: 'nextcloud.local',
passwordRequired: false,
},
})
await expect(component.findByLabelText('Remote share password')).rejects.toThrow()
})
it('emits true when accepted', () => {
const onClose = vi.fn()
const component = render(RemoteShareDialog, {
listeners: {
close: onClose,
},
props: {
owner: 'user123',
name: 'my-photos',
remote: 'nextcloud.local',
passwordRequired: false,
},
})
component.getByRole('button', { name: 'Cancel' }).click()
expect(onClose).toHaveBeenCalledWith(false)
})
it('show password input if needed', async () => {
const component = render(RemoteShareDialog, {
props: {
owner: 'admin',
name: 'secret-data',
remote: 'nextcloud.local',
passwordRequired: true,
},
})
await expect(component.findByLabelText('Remote share password')).resolves.not.toThrow()
})
it('emits the submitted password', async () => {
const onClose = vi.fn()
const component = render(RemoteShareDialog, {
listeners: {
close: onClose,
},
props: {
owner: 'admin',
name: 'secret-data',
remote: 'nextcloud.local',
passwordRequired: true,
},
})
const input = component.getByLabelText('Remote share password')
await fireEvent.update(input, 'my password')
component.getByRole('button', { name: 'Add remote share' }).click()
expect(onClose).toHaveBeenCalledWith(true, 'my password')
})
it('emits no password if cancelled', async () => {
const onClose = vi.fn()
const component = render(RemoteShareDialog, {
listeners: {
close: onClose,
},
props: {
owner: 'admin',
name: 'secret-data',
remote: 'nextcloud.local',
passwordRequired: true,
},
})
const input = component.getByLabelText('Remote share password')
await fireEvent.update(input, 'my password')
component.getByRole('button', { name: 'Cancel' }).click()
expect(onClose).toHaveBeenCalledWith(false)
})
})

View file

@ -35,8 +35,8 @@ const buttons = computed(() => [
},
{
label: t('federatedfilesharing', 'Add remote share'),
nativeType: props.passwordRequired ? 'submit' : undefined,
type: 'primary',
type: props.passwordRequired ? 'submit' : undefined,
variant: 'primary',
callback: () => emit('close', true, password.value),
},
])

View file

@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { spawnDialog } from '@nextcloud/dialogs'
import { spawnDialog } from '@nextcloud/vue/functions/dialog'
import RemoteShareDialog from '../components/RemoteShareDialog.vue'
/**

View file

@ -1,56 +0,0 @@
/*!
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { defineComponent } from 'vue'
import { useFileListWidth } from './useFileListWidth.ts'
const ComponentMock = defineComponent({
template: '<div id="test-component" style="width: 100%;background: white;">{{ fileListWidth }}</div>',
setup() {
return {
fileListWidth: useFileListWidth(),
}
},
})
const FileListMock = defineComponent({
template: '<main id="app-content-vue" style="width: 100%;"><component-mock /></main>',
components: {
ComponentMock,
},
})
describe('composable: fileListWidth', () => {
it('Has initial value', () => {
cy.viewport(600, 400)
cy.mount(FileListMock, {})
cy.get('#app-content-vue')
.should('be.visible')
.and('contain.text', '600')
})
it('Is reactive to size change', () => {
cy.viewport(600, 400)
cy.mount(FileListMock)
cy.get('#app-content-vue').should('contain.text', '600')
cy.viewport(800, 400)
cy.screenshot()
cy.get('#app-content-vue').should('contain.text', '800')
})
it('Is reactive to style changes', () => {
cy.viewport(600, 400)
cy.mount(FileListMock)
cy.get('#app-content-vue')
.should('be.visible')
.and('contain.text', '600')
.invoke('attr', 'style', 'width: 100px')
cy.get('#app-content-vue')
.should('contain.text', '100')
})
})

View file

@ -0,0 +1,79 @@
/*!
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { cleanup, render } from '@testing-library/vue'
import { configMocks, mockResizeObserver } from 'jsdom-testing-mocks'
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it } from 'vitest'
import { defineComponent, nextTick } from 'vue'
let resizeObserver: ReturnType<typeof mockResizeObserver>
describe('composable: fileListWidth', () => {
configMocks({ beforeAll, afterAll, beforeEach, afterEach })
beforeAll(() => {
resizeObserver = mockResizeObserver()
})
beforeEach(cleanup)
it('Has initial value', async () => {
const { component } = await getFileList()
expect(component.textContent).toBe('600')
})
it('observes the file list element', async () => {
const { fileList } = await getFileList()
expect(resizeObserver.getObservedElements()).toContain(fileList)
})
it('Is reactive to size change', async () => {
const { component, fileList } = await getFileList()
expect(component.textContent).toBe('600')
expect(resizeObserver.getObservedElements()).toHaveLength(1)
resizeObserver.mockElementSize(fileList, { contentBoxSize: { inlineSize: 800, blockSize: 300 } })
resizeObserver.resize(fileList)
// await rending
await nextTick()
expect(component.textContent).toBe('800')
})
})
async function getFileList() {
const { useFileListWidth } = await import('./useFileListWidth.ts')
const ComponentMock = defineComponent({
template: '<div data-testid="component" style="width: 100%;background: white;">{{ fileListWidth }}</div>',
setup() {
return {
fileListWidth: useFileListWidth(),
}
},
})
const FileListMock = defineComponent({
template: '<main id="app-content-vue" style="width: 100%;"><component-mock /></main>',
components: {
ComponentMock,
},
})
const root = render(FileListMock)
const fileList = root.baseElement.querySelector('#app-content-vue') as HTMLElement
// mock initial size
resizeObserver.mockElementSize(fileList, { contentBoxSize: { inlineSize: 600, blockSize: 200 } })
resizeObserver.resize()
// await rending
await nextTick()
return {
root,
component: root.getByTestId('component'),
fileList,
}
}

View file

@ -4,7 +4,8 @@
*/
import type { Node } from '@nextcloud/files'
import { spawnDialog } from '@nextcloud/dialogs'
import { spawnDialog } from '@nextcloud/vue/functions/dialog'
import NewNodeDialog from '../components/NewNodeDialog.vue'
interface ILabels {

View file

@ -1,161 +0,0 @@
/*!
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { createTestingPinia } from '@pinia/testing'
import DialogConfirmFileExtension from './DialogConfirmFileExtension.vue'
import { useUserConfigStore } from '../store/userconfig'
describe('DialogConfirmFileExtension', () => {
it('renders with both extensions', () => {
cy.mount(DialogConfirmFileExtension, {
propsData: {
oldExtension: '.old',
newExtension: '.new',
},
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
})
cy.findByRole('dialog')
.as('dialog')
.should('be.visible')
cy.get('@dialog')
.findByRole('heading')
.should('contain.text', 'Change file extension')
cy.get('@dialog')
.findByRole('checkbox', { name: /Do not show this dialog again/i })
.should('exist')
.and('not.be.checked')
cy.get('@dialog')
.findByRole('button', { name: 'Keep .old' })
.should('be.visible')
cy.get('@dialog')
.findByRole('button', { name: 'Use .new' })
.should('be.visible')
})
it('renders without old extension', () => {
cy.mount(DialogConfirmFileExtension, {
propsData: {
newExtension: '.new',
},
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
})
cy.findByRole('dialog')
.as('dialog')
.should('be.visible')
cy.get('@dialog')
.findByRole('button', { name: 'Keep without extension' })
.should('be.visible')
cy.get('@dialog')
.findByRole('button', { name: 'Use .new' })
.should('be.visible')
})
it('renders without new extension', () => {
cy.mount(DialogConfirmFileExtension, {
propsData: {
oldExtension: '.old',
},
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
})
cy.findByRole('dialog')
.as('dialog')
.should('be.visible')
cy.get('@dialog')
.findByRole('button', { name: 'Keep .old' })
.should('be.visible')
cy.get('@dialog')
.findByRole('button', { name: 'Remove extension' })
.should('be.visible')
})
it('emits correct value on keep old', () => {
cy.mount(DialogConfirmFileExtension, {
propsData: {
oldExtension: '.old',
newExtension: '.new',
},
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
}).as('component')
cy.findByRole('dialog')
.as('dialog')
.should('be.visible')
cy.get('@dialog')
.findByRole('button', { name: 'Keep .old' })
.click()
cy.get('@component')
.its('wrapper')
.should((wrapper) => expect(wrapper.emitted('close')).to.eql([[false]]))
})
it('emits correct value on use new', () => {
cy.mount(DialogConfirmFileExtension, {
propsData: {
oldExtension: '.old',
newExtension: '.new',
},
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
}).as('component')
cy.findByRole('dialog')
.as('dialog')
.should('be.visible')
cy.get('@dialog')
.findByRole('button', { name: 'Use .new' })
.click()
cy.get('@component')
.its('wrapper')
.should((wrapper) => expect(wrapper.emitted('close')).to.eql([[true]]))
})
it('updates user config when checking the checkbox', () => {
const pinia = createTestingPinia({
createSpy: cy.spy,
})
cy.mount(DialogConfirmFileExtension, {
propsData: {
oldExtension: '.old',
newExtension: '.new',
},
global: {
plugins: [pinia],
},
}).as('component')
cy.findByRole('dialog')
.as('dialog')
.should('be.visible')
cy.get('@dialog')
.findByRole('checkbox', { name: /Do not show this dialog again/i })
.check({ force: true })
cy.wrap(useUserConfigStore())
.its('update')
.should('have.been.calledWith', 'show_dialog_file_extension', false)
})
})

View file

@ -0,0 +1,132 @@
/*!
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { createTestingPinia } from '@pinia/testing'
import { cleanup, fireEvent, render } from '@testing-library/vue'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import DialogConfirmFileExtension from './DialogConfirmFileExtension.vue'
import { useUserConfigStore } from '../store/userconfig.ts'
describe('DialogConfirmFileExtension', () => {
beforeEach(cleanup)
it('renders with both extensions', async () => {
const component = render(DialogConfirmFileExtension, {
props: {
oldExtension: '.old',
newExtension: '.new',
},
global: {
plugins: [createTestingPinia({
createSpy: vi.fn,
})],
},
})
await expect(component.findByRole('dialog', { name: 'Change file extension' })).resolves.not.toThrow()
expect((component.getByRole('checkbox', { name: /Do not show this dialog again/i }) as HTMLInputElement).checked).toBe(false)
await expect(component.findByRole('button', { name: 'Keep .old' })).resolves.not.toThrow()
await expect(component.findByRole('button', { name: 'Use .new' })).resolves.not.toThrow()
})
it('renders without old extension', async () => {
const component = render(DialogConfirmFileExtension, {
props: {
newExtension: '.new',
},
global: {
plugins: [createTestingPinia({
createSpy: vi.fn,
})],
},
})
await expect(component.findByRole('dialog', { name: 'Change file extension' })).resolves.not.toThrow()
await expect(component.findByRole('button', { name: 'Keep without extension' })).resolves.not.toThrow()
await expect(component.findByRole('button', { name: 'Use .new' })).resolves.not.toThrow()
})
it('renders without new extension', async () => {
const component = render(DialogConfirmFileExtension, {
props: {
oldExtension: '.old',
},
global: {
plugins: [createTestingPinia({
createSpy: vi.fn,
})],
},
})
await expect(component.findByRole('dialog', { name: 'Change file extension' })).resolves.not.toThrow()
await expect(component.findByRole('button', { name: 'Keep .old' })).resolves.not.toThrow()
await expect(component.findByRole('button', { name: 'Remove extension' })).resolves.not.toThrow()
})
it('emits correct value on keep old', async () => {
const onclose = vi.fn()
const component = render(DialogConfirmFileExtension, {
props: {
oldExtension: '.old',
newExtension: '.new',
},
listeners: {
close: onclose,
},
global: {
plugins: [createTestingPinia({
createSpy: vi.fn,
})],
},
})
await fireEvent.click(component.getByRole('button', { name: 'Keep .old' }))
expect(onclose).toHaveBeenCalledOnce()
expect(onclose).toHaveBeenCalledWith(false)
})
it('emits correct value on use new', async () => {
const onclose = vi.fn()
const component = render(DialogConfirmFileExtension, {
props: {
oldExtension: '.old',
newExtension: '.new',
},
listeners: {
close: onclose,
},
global: {
plugins: [createTestingPinia({
createSpy: vi.fn,
})],
},
})
await fireEvent.click(component.getByRole('button', { name: 'Use .new' }))
expect(onclose).toHaveBeenCalledOnce()
expect(onclose).toHaveBeenCalledWith(true)
})
it('updates user config when checking the checkbox', async () => {
const pinia = createTestingPinia({
createSpy: vi.fn,
})
const component = render(DialogConfirmFileExtension, {
props: {
oldExtension: '.old',
newExtension: '.new',
},
global: {
plugins: [pinia],
},
})
await fireEvent.click(component.getByRole('checkbox', { name: /Do not show this dialog again/i }))
const store = useUserConfigStore()
expect(store.update).toHaveBeenCalledOnce()
expect(store.update).toHaveBeenCalledWith('show_dialog_file_extension', false)
})
})

View file

@ -4,80 +4,79 @@
-->
<template>
<div :id="containerId">
<FilePicker v-bind="filepickerOptions" @close="onClose" />
</div>
<div :id="containerId" />
</template>
<script lang="ts">
import type { Node as NcNode } from '@nextcloud/files'
<script setup lang="ts">
import type { IFilePickerButton } from '@nextcloud/dialogs'
import type { Node as NcNode } from '@nextcloud/files'
import { FilePickerVue as FilePicker } from '@nextcloud/dialogs/filepicker.js'
import { translate as t } from '@nextcloud/l10n'
import { defineComponent } from 'vue'
import { generateFileUrl } from '../../../files_sharing/src/utils/generateUrl'
import { FilePickerBuilder } from '@nextcloud/dialogs'
import { t } from '@nextcloud/l10n'
import { generateUrl } from '@nextcloud/router'
import { onMounted } from 'vue'
import logger from '../logger.ts'
export default defineComponent({
name: 'FileReferencePickerElement',
components: {
FilePicker,
},
props: {
providerId: {
type: String,
required: true,
},
accessible: {
type: Boolean,
default: false,
},
},
computed: {
containerId() {
return `filepicker-${Math.random().toString(36).slice(7)}`
},
filepickerOptions() {
return {
allowPickDirectory: true,
buttons: this.buttonFactory,
container: `#${this.containerId}`,
multiselect: false,
name: t('files', 'Select file or folder to link to'),
}
},
},
methods: {
t,
defineProps<{
providerId: string
accessible: boolean
}>()
buttonFactory(selected: NcNode[]): IFilePickerButton[] {
const buttons = [] as IFilePickerButton[]
if (selected.length === 0) {
return []
}
const node = selected.at(0)
if (node.path === '/') {
return [] // Do not allow selecting the users root folder
}
buttons.push({
label: t('files', 'Choose {file}', { file: node.displayname }),
type: 'primary',
callback: this.onClose,
})
return buttons
},
const emit = defineEmits<{
(e: 'submit', url: string): void
(e: 'cancel'): void
}>()
onClose(nodes?: NcNode[]) {
if (nodes === undefined || nodes.length === 0) {
this.$emit('cancel')
} else {
this.onSubmit(nodes[0])
}
},
const containerId = `filepicker-${Math.random().toString(36).slice(7)}`
onSubmit(node: NcNode) {
this.$emit('submit', generateFileUrl(node.fileid!))
},
},
const filePicker = new FilePickerBuilder(t('files', 'Select file or folder to link to'))
.allowDirectories(true)
.setButtonFactory(buttonFactory)
.setContainer(`#${containerId}`)
.setMultiSelect(false)
.build()
onMounted(async () => {
try {
const [node] = await filePicker.pickNodes()
onSubmit(node)
} catch (error) {
logger.debug('Aborted picking nodes:', { error })
emit('cancel')
}
})
/**
* Get buttons for the file picker dialog
*
* @param selected - currently selected nodes
*/
function buttonFactory(selected: NcNode[]): IFilePickerButton[] {
const buttons = [] as IFilePickerButton[]
const node = selected[0]
if (node === undefined) {
return []
}
if (node.path === '/') {
return [] // Do not allow selecting the users root folder
}
buttons.push({
label: t('files', 'Choose {file}', { file: node.displayname }),
variant: 'primary',
callback: () => {}, // handled by the pickNodes method
})
return buttons
}
/**
* @param node - selected node
*/
function onSubmit(node: NcNode) {
const url = new URL(window.location.href)
url.pathname = generateUrl('/f/{fileId}', { fileId: node.fileid! })
url.search = ''
emit('submit', url.href)
}
</script>

View file

@ -1,260 +0,0 @@
/**
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Navigation } from '@nextcloud/files'
import FolderSvg from '@mdi/svg/svg/folder.svg?raw'
import { createTestingPinia } from '@pinia/testing'
import NavigationView from './Navigation.vue'
import { useViewConfigStore } from '../store/viewConfig'
import { Folder, View, getNavigation } from '@nextcloud/files'
import router from '../router/router.ts'
import RouterService from '../services/RouterService'
const resetNavigation = () => {
const nav = getNavigation()
;[...nav.views].forEach(({ id }) => nav.remove(id))
nav.setActive(null)
}
const createView = (id: string, name: string, parent?: string) => new View({
id,
name,
getContents: async () => ({ folder: {} as Folder, contents: [] }),
icon: FolderSvg,
order: 1,
parent,
})
/**
*
*/
function mockWindow() {
window.OCP ??= {}
window.OCP.Files ??= {}
window.OCP.Files.Router = new RouterService(router)
}
describe('Navigation renders', () => {
before(async () => {
delete window._nc_navigation
mockWindow()
getNavigation().register(createView('files', 'Files'))
await router.replace({ name: 'filelist', params: { view: 'files' } })
cy.mockInitialState('files', 'storageStats', {
used: 1000 * 1000 * 1000,
quota: -1,
})
})
after(() => cy.unmockInitialState())
it('renders', () => {
cy.mount(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
})
cy.get('[data-cy-files-navigation]').should('be.visible')
cy.get('[data-cy-files-navigation-settings-quota]').should('be.visible')
cy.get('[data-cy-files-navigation-settings-button]').should('be.visible')
})
})
describe('Navigation API', () => {
let Navigation: Navigation
before(async () => {
delete window._nc_navigation
Navigation = getNavigation()
mockWindow()
await router.replace({ name: 'filelist', params: { view: 'files' } })
})
beforeEach(() => resetNavigation())
it('Check API entries rendering', () => {
Navigation.register(createView('files', 'Files'))
console.warn(Navigation.views)
cy.mount(NavigationView, {
router,
global: {
plugins: [
createTestingPinia({
createSpy: cy.spy,
}),
],
},
})
cy.get('[data-cy-files-navigation]').should('be.visible')
cy.get('[data-cy-files-navigation-item]').should('have.length', 1)
cy.get('[data-cy-files-navigation-item="files"]').should('be.visible')
cy.get('[data-cy-files-navigation-item="files"]').should('contain.text', 'Files')
})
it('Adds a new entry and render', () => {
Navigation.register(createView('files', 'Files'))
Navigation.register(createView('sharing', 'Sharing'))
cy.mount(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
})
cy.get('[data-cy-files-navigation]').should('be.visible')
cy.get('[data-cy-files-navigation-item]').should('have.length', 2)
cy.get('[data-cy-files-navigation-item="sharing"]').should('be.visible')
cy.get('[data-cy-files-navigation-item="sharing"]').should('contain.text', 'Sharing')
})
it('Adds a new children, render and open menu', () => {
Navigation.register(createView('files', 'Files'))
Navigation.register(createView('sharing', 'Sharing'))
Navigation.register(createView('sharingin', 'Shared with me', 'sharing'))
cy.mount(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
})
cy.wrap(useViewConfigStore()).as('viewConfigStore')
cy.get('[data-cy-files-navigation]').should('be.visible')
cy.get('[data-cy-files-navigation-item]').should('have.length', 3)
// Toggle the sharing entry children
cy.get('[data-cy-files-navigation-item="sharing"] button.icon-collapse').should('exist')
cy.get('[data-cy-files-navigation-item="sharing"] button.icon-collapse').click({ force: true })
// Expect store update to be called
cy.get('@viewConfigStore').its('update').should('have.been.calledWith', 'sharing', 'expanded', true)
// Validate children
cy.get('[data-cy-files-navigation-item="sharingin"]').should('be.visible')
cy.get('[data-cy-files-navigation-item="sharingin"]').should('contain.text', 'Shared with me')
// Toggle the sharing entry children 🇦again
cy.get('[data-cy-files-navigation-item="sharing"] button.icon-collapse').click({ force: true })
cy.get('[data-cy-files-navigation-item="sharingin"]').should('not.be.visible')
// Expect store update to be called
cy.get('@viewConfigStore').its('update').should('have.been.calledWith', 'sharing', 'expanded', false)
})
it('Throws when adding a duplicate entry', () => {
Navigation.register(createView('files', 'Files'))
expect(() => Navigation.register(createView('files', 'Files')))
.to.throw('View id files is already registered')
})
})
describe('Quota rendering', () => {
before(async () => {
delete window._nc_navigation
mockWindow()
getNavigation().register(createView('files', 'Files'))
await router.replace({ name: 'filelist', params: { view: 'files' } })
})
afterEach(() => cy.unmockInitialState())
it('Unknown quota', () => {
cy.mount(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
})
cy.get('[data-cy-files-navigation-settings-quota]').should('not.exist')
})
it('Unlimited quota', () => {
cy.mockInitialState('files', 'storageStats', {
used: 1024 * 1024 * 1024,
quota: -1,
total: 50 * 1024 * 1024 * 1024,
})
cy.mount(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
})
cy.get('[data-cy-files-navigation-settings-quota]').should('be.visible')
cy.get('[data-cy-files-navigation-settings-quota]').should('contain.text', '1 GB used')
cy.get('[data-cy-files-navigation-settings-quota] progress').should('not.exist')
})
it('Non-reached quota', () => {
cy.mockInitialState('files', 'storageStats', {
used: 1024 * 1024 * 1024,
quota: 5 * 1024 * 1024 * 1024,
total: 5 * 1024 * 1024 * 1024,
relative: 20, // percent
})
cy.mount(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
})
cy.get('[data-cy-files-navigation-settings-quota]').should('be.visible')
cy.get('[data-cy-files-navigation-settings-quota]').should('contain.text', '1 GB of 5 GB used')
cy.get('[data-cy-files-navigation-settings-quota] progress')
.should('exist')
.and('have.attr', 'value', '20')
})
it('Reached quota', () => {
cy.mockInitialState('files', 'storageStats', {
used: 5 * 1024 * 1024 * 1024,
quota: 1024 * 1024 * 1024,
total: 1024 * 1024 * 1024,
relative: 500, // percent
})
cy.mount(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: cy.spy,
})],
},
})
cy.get('[data-cy-files-navigation-settings-quota]').should('be.visible')
cy.get('[data-cy-files-navigation-settings-quota]').should('contain.text', '5 GB of 1 GB used')
cy.get('[data-cy-files-navigation-settings-quota] progress')
.should('exist')
.and('have.attr', 'value', '100') // progress max is 100
})
})

View file

@ -0,0 +1,286 @@
/**
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Folder, Navigation } from '@nextcloud/files'
import FolderSvg from '@mdi/svg/svg/folder.svg?raw'
import { getNavigation, View } from '@nextcloud/files'
import { createTestingPinia } from '@pinia/testing'
import { cleanup, fireEvent, getAllByRole, render } from '@testing-library/vue'
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'
import NavigationView from './Navigation.vue'
import router from '../router/router.ts'
import RouterService from '../services/RouterService.ts'
import { useViewConfigStore } from '../store/viewConfig.ts'
afterEach(() => removeInitialState())
beforeAll(async () => {
Object.defineProperty(document.documentElement, 'clientWidth', { value: 1920 })
await fireEvent.resize(window)
})
describe('Navigation', () => {
beforeEach(cleanup)
beforeEach(async () => {
delete window._nc_navigation
mockWindow()
getNavigation().register(createView('files', 'Files'))
await router.replace({ name: 'filelist', params: { view: 'files' } })
})
it('renders navigation with settings button and search', async () => {
const component = render(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: vi.fn,
})],
},
})
// see the navigation
await expect(component.findByRole('navigation', { name: 'Files' })).resolves.not.toThrow()
// see the search box
await expect(component.findByRole('searchbox', { name: /Search here/ })).resolves.not.toThrow()
// see the settings entry
await expect(component.findByRole('link', { name: /Files settings/ })).resolves.not.toThrow()
})
it('renders no quota without storage stats', () => {
const component = render(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: vi.fn,
})],
},
})
expect(component.baseElement.querySelector('[data-cy-files-navigation-settings-quota]')).toBeNull()
})
it('Unlimited quota shows used storage but no progressbar', async () => {
mockInitialState('files', 'storageStats', {
used: 1024 * 1024 * 1024,
quota: -1,
total: 50 * 1024 * 1024 * 1024,
})
const component = render(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: vi.fn,
})],
},
})
expect(component.baseElement.querySelector('[data-cy-files-navigation-settings-quota]')).not.toBeNull()
await expect(component.findByText('1 GB used')).resolves.not.toThrow()
await expect(component.findByRole('progressbar')).rejects.toThrow()
})
it('Non-reached quota shows stats and progress', async () => {
mockInitialState('files', 'storageStats', {
used: 1024 * 1024 * 1024,
quota: 5 * 1024 * 1024 * 1024,
total: 5 * 1024 * 1024 * 1024,
relative: 20, // percent
})
const component = render(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: vi.fn,
})],
},
})
await expect(component.findByText('1 GB of 5 GB used')).resolves.not.toThrow()
await expect(component.findByRole('progressbar')).resolves.not.toThrow()
expect((component.getByRole('progressbar') as HTMLProgressElement).value).toBe(20)
})
it('Reached quota', async () => {
mockInitialState('files', 'storageStats', {
used: 5 * 1024 * 1024 * 1024,
quota: 1024 * 1024 * 1024,
total: 1024 * 1024 * 1024,
relative: 500, // percent
})
const component = render(NavigationView, {
router,
global: {
plugins: [createTestingPinia({
createSpy: vi.fn,
})],
},
})
await expect(component.findByText('5 GB of 1 GB used')).resolves.not.toThrow()
await expect(component.findByRole('progressbar')).resolves.not.toThrow()
expect((component.getByRole('progressbar') as HTMLProgressElement).value).toBe(100)
})
})
describe('Navigation API', () => {
let Navigation: Navigation
beforeEach(async () => {
delete window._nc_navigation
Navigation = getNavigation()
mockWindow()
await router.replace({ name: 'filelist', params: { view: 'files' } })
})
beforeEach(resetNavigation)
beforeEach(cleanup)
it('Check API entries rendering', async () => {
Navigation.register(createView('files', 'Files'))
const component = render(NavigationView, {
router,
global: {
plugins: [
createTestingPinia({
createSpy: vi.fn,
}),
],
},
})
// see the navigation
await expect(component.findByRole('navigation', { name: 'Files' })).resolves.not.toThrow()
// see the views
await expect(component.findByRole('list', { name: 'Views' })).resolves.not.toThrow()
// see the entry
await expect(component.findByRole('link', { name: 'Files' })).resolves.not.toThrow()
// see that the entry has all props
const entry = component.getByRole('link', { name: 'Files' })
expect(entry.getAttribute('href')).toMatch(/\/apps\/files\/files$/)
expect(entry.getAttribute('aria-current')).toBe('page')
expect(entry.getAttribute('title')).toBe('Files')
})
it('Adds a new entry and render', async () => {
Navigation.register(createView('files', 'Files'))
Navigation.register(createView('sharing', 'Sharing'))
const component = render(NavigationView, {
router,
global: {
plugins: [
createTestingPinia({
createSpy: vi.fn,
}),
],
},
})
const list = component.getByRole('list', { name: 'Views' })
expect(getAllByRole(list, 'listitem')).toHaveLength(2)
await expect(component.findByRole('link', { name: 'Files' })).resolves.not.toThrow()
await expect(component.findByRole('link', { name: 'Sharing' })).resolves.not.toThrow()
// see that the entry has all props
const entry = component.getByRole('link', { name: 'Sharing' })
expect(entry.getAttribute('href')).toMatch(/\/apps\/files\/sharing$/)
expect(entry.getAttribute('aria-current')).toBeNull()
expect(entry.getAttribute('title')).toBe('Sharing')
})
it('Adds a new children, render and open menu', async () => {
Navigation.register(createView('files', 'Files'))
Navigation.register(createView('sharing', 'Sharing'))
Navigation.register(createView('sharingin', 'Shared with me', 'sharing'))
const component = render(NavigationView, {
router,
global: {
plugins: [
createTestingPinia({
createSpy: vi.fn,
}),
],
},
})
const viewConfigStore = useViewConfigStore()
const list = component.getByRole('list', { name: 'Views' })
expect(getAllByRole(list, 'listitem')).toHaveLength(3)
// Toggle the sharing entry children
const entry = component.getByRole('link', { name: 'Sharing' })
expect(entry.getAttribute('aria-expanded')).toBe('false')
await fireEvent.click(component.getByRole('button', { name: 'Open menu' }))
expect(entry.getAttribute('aria-expanded')).toBe('true')
// Expect store update to be called
expect(viewConfigStore.update).toHaveBeenCalled()
expect(viewConfigStore.update).toHaveBeenCalledWith('sharing', 'expanded', true)
// Validate children
await expect(component.findByRole('link', { name: 'Shared with me' })).resolves.not.toThrow()
await fireEvent.click(component.getByRole('button', { name: 'Collapse menu' }))
// Expect store update to be called
expect(viewConfigStore.update).toHaveBeenCalledWith('sharing', 'expanded', false)
})
})
/**
* Remove the mocked initial state
*/
function removeInitialState(): void {
document.querySelectorAll('input[type="hidden"]').forEach((el) => {
el.remove()
})
// clear the cache
delete globalThis._nc_initial_state
}
/**
* Helper to mock an initial state value
* @param app - The app
* @param key - The key
* @param value - The value
*/
function mockInitialState(app: string, key: string, value: unknown): void {
const el = document.createElement('input')
el.value = btoa(JSON.stringify(value))
el.id = `initial-state-${app}-${key}`
el.type = 'hidden'
document.head.appendChild(el)
}
function resetNavigation() {
const nav = getNavigation()
;[...nav.views].forEach(({ id }) => nav.remove(id))
nav.setActive(null)
}
function createView(id: string, name: string, parent?: string) {
return new View({
id,
name,
getContents: async () => ({ folder: {} as Folder, contents: [] }),
icon: FolderSvg,
order: 1,
parent,
})
}
function mockWindow() {
window.OCP ??= {}
window.OCP.Files ??= {}
window.OCP.Files.Router = new RouterService(router)
}

View file

@ -50,13 +50,14 @@
import type { TemplateFile } from '../types.ts'
import { getCurrentUser } from '@nextcloud/auth'
import { showError, spawnDialog } from '@nextcloud/dialogs'
import { showError } from '@nextcloud/dialogs'
import { emit } from '@nextcloud/event-bus'
import { File, Node } from '@nextcloud/files'
import { getClient, getRootPath, resultToNode, getDefaultPropfind } from '@nextcloud/files/dav'
import { translate as t } from '@nextcloud/l10n'
import { generateRemoteUrl } from '@nextcloud/router'
import { normalize, extname, join } from 'path'
import { spawnDialog } from '@nextcloud/vue/functions/dialog'
import { extname, join, normalize } from 'path'
import { defineComponent } from 'vue'
import { createFromTemplate, getTemplates, getTemplateFields } from '../services/Templates.js'

View file

@ -7,15 +7,15 @@ import type { AxiosResponse } from '@nextcloud/axios'
import type { Node } from '@nextcloud/files'
import type { StorageConfig } from '../services/externalStorage'
import LoginSvg from '@mdi/svg/svg/login.svg?raw'
import axios from '@nextcloud/axios'
import { showError, showSuccess } from '@nextcloud/dialogs'
import { DefaultType, FileAction } from '@nextcloud/files'
import { t } from '@nextcloud/l10n'
import { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation'
import { generateUrl } from '@nextcloud/router'
import { showError, showSuccess, spawnDialog } from '@nextcloud/dialogs'
import { translate as t } from '@nextcloud/l10n'
import axios from '@nextcloud/axios'
import LoginSvg from '@mdi/svg/svg/login.svg?raw'
import { spawnDialog } from '@nextcloud/vue/functions/dialog'
import Vue, { defineAsyncComponent } from 'vue'
import { FileAction, DefaultType } from '@nextcloud/files'
import { STORAGE_STATUS, isMissingAuthConfig } from '../utils/credentialsUtils'
import { isNodeExternalStorage } from '../utils/externalStorageUtils'

View file

@ -2,15 +2,16 @@
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Entry, Folder, Node } from '@nextcloud/files'
import type { NewMenuEntry, Folder, Node } from '@nextcloud/files'
import { t } from '@nextcloud/l10n'
import { isPublicShare } from '@nextcloud/sharing/public'
import { spawnDialog } from '@nextcloud/vue/functions/dialog'
import { defineAsyncComponent } from 'vue'
import { spawnDialog } from '@nextcloud/dialogs'
import { translate as t } from '@nextcloud/l10n'
import FileUploadSvg from '@mdi/svg/svg/file-upload-outline.svg?raw'
import Config from '../services/ConfigService'
import { isPublicShare } from '@nextcloud/sharing/public'
const sharingConfig = new Config()
const NewFileRequestDialogVue = defineAsyncComponent(() => import('../components/NewFileRequestDialog.vue'))
@ -39,4 +40,4 @@ export const entry = {
content,
})
},
} as Entry
} as NewMenuEntry

View file

@ -2,16 +2,14 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Node, View, Folder } from '@nextcloud/files'
import type { Folder, Node, View } from '@nextcloud/files'
import { getDialogBuilder } from '@nextcloud/dialogs'
import { emit } from '@nextcloud/event-bus'
import { FileListAction } from '@nextcloud/files'
import { loadState } from '@nextcloud/initial-state'
import { t } from '@nextcloud/l10n'
import {
DialogSeverity,
getDialogBuilder,
} from '@nextcloud/dialogs'
import { emptyTrash } from '../services/api.ts'
import { TRASHBIN_VIEW_ID } from '../files_views/trashbinView.ts'
@ -41,18 +39,18 @@ export const emptyTrashAction = new FileListAction({
async exec(view: View, nodes: Node[]): Promise<null> {
const askConfirmation = new Promise<boolean>((resolve) => {
const dialog = getDialogBuilder(t('files_trashbin', 'Confirm permanent deletion'))
.setSeverity(DialogSeverity.Warning)
.setSeverity('warning')
// TODO Add note for groupfolders
.setText(t('files_trashbin', 'Are you sure you want to permanently delete all files and folders in the trash? This cannot be undone.'))
.setButtons([
{
label: t('files_trashbin', 'Cancel'),
type: 'secondary',
variant: 'secondary',
callback: () => resolve(false),
},
{
label: t('files_trashbin', 'Empty deleted files'),
type: 'error',
variant: 'error',
callback: () => resolve(true),
},
])

View file

@ -5,15 +5,17 @@
<script setup lang="ts">
import type { OCSResponse } from '@nextcloud/typings/ocs'
import { showError, spawnDialog } from '@nextcloud/dialogs'
import axios from '@nextcloud/axios'
import { showError } from '@nextcloud/dialogs'
import { loadState } from '@nextcloud/initial-state'
import { t } from '@nextcloud/l10n'
import { confirmPassword } from '@nextcloud/password-confirmation'
import { generateOcsUrl } from '@nextcloud/router'
import { spawnDialog } from '@nextcloud/vue/functions/dialog'
import { ref } from 'vue'
import { textExistingFilesNotEncrypted } from './sharedTexts.ts'
import axios from '@nextcloud/axios'
import logger from '../../logger.ts'
import NcCheckboxRadioSwitch from '@nextcloud/vue/components/NcCheckboxRadioSwitch'

View file

@ -1,58 +0,0 @@
/*!
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import Markdown from './Markdown.vue'
describe('Markdown component', () => {
it('renders links', () => {
cy.mount(Markdown, {
propsData: {
text: 'This is [a link](http://example.com)!',
},
})
cy.contains('This is')
.find('a')
.should('exist')
.and('have.attr', 'href', 'http://example.com')
.and('contain.text', 'a link')
})
it('renders headings', () => {
cy.mount(Markdown, {
propsData: {
text: '# level 1\nText\n## level 2\nText\n### level 3\nText\n#### level 4\nText\n##### level 5\nText\n###### level 6\nText\n',
},
})
for (let level = 1; level <= 6; level++) {
cy.contains(`h${level}`, `level ${level}`)
.should('be.visible')
}
})
it('can limit headings', () => {
cy.mount(Markdown, {
propsData: {
text: '# level 1\nText\n## level 2\nText\n### level 3\nText\n#### level 4\nText\n##### level 5\nText\n###### level 6\nText\n',
minHeading: 4,
},
})
cy.get('h1').should('not.exist')
cy.get('h2').should('not.exist')
cy.get('h3').should('not.exist')
cy.get('h4')
.should('exist')
.and('contain.text', 'level 1')
cy.get('h5')
.should('exist')
.and('contain.text', 'level 2')
cy.contains('h6', 'level 3').should('exist')
cy.contains('h6', 'level 4').should('exist')
cy.contains('h6', 'level 5').should('exist')
cy.contains('h6', 'level 6').should('exist')
})
})

View file

@ -0,0 +1,58 @@
/*!
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { cleanup, render } from '@testing-library/vue'
import { beforeEach, describe, expect, it } from 'vitest'
import Markdown from './Markdown.vue'
describe('Markdown component', () => {
beforeEach(cleanup)
it('renders links', () => {
const component = render(Markdown, {
props: {
text: 'This is [a link](http://example.com)!',
},
})
const link = component.getByRole('link')
expect(link).toBeInstanceOf(HTMLAnchorElement)
expect(link.getAttribute('href')).toBe('http://example.com')
expect(link.textContent).toBe('a link')
})
it('renders headings', () => {
const component = render(Markdown, {
props: {
text: '# level 1\nText\n## level 2\nText\n### level 3\nText\n#### level 4\nText\n##### level 5\nText\n###### level 6\nText\n',
},
})
for (let level = 1; level <= 6; level++) {
const heading = component.getByRole('heading', { level })
expect(heading.textContent).toBe(`level ${level}`)
}
})
it('can limit headings', async () => {
const component = render(Markdown, {
props: {
text: '# level 1\nText\n## level 2\nText\n### level 3\nText\n#### level 4\nText\n##### level 5\nText\n###### level 6\nText\n',
minHeading: 4,
},
})
await expect(component.findByRole('heading', { level: 1 })).rejects.toThrow()
await expect(component.findByRole('heading', { level: 2 })).rejects.toThrow()
await expect(component.findByRole('heading', { level: 3 })).rejects.toThrow()
expect(component.getByRole('heading', { level: 4 }).textContent).toBe('level 1')
expect(component.getByRole('heading', { level: 5 }).textContent).toBe('level 2')
await expect(component.findByRole('heading', { level: 6, name: 'level 3' })).resolves.not.toThrow()
await expect(component.findByRole('heading', { level: 6, name: 'level 4' })).resolves.not.toThrow()
await expect(component.findByRole('heading', { level: 6, name: 'level 5' })).resolves.not.toThrow()
await expect(component.findByRole('heading', { level: 6, name: 'level 6' })).resolves.not.toThrow()
})
})

View file

@ -2,13 +2,14 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { Permission, type Node } from '@nextcloud/files'
import { defineAsyncComponent } from 'vue'
import { FileAction } from '@nextcloud/files'
import { isPublicShare } from '@nextcloud/sharing/public'
import { spawnDialog } from '@nextcloud/dialogs'
import type { Node } from '@nextcloud/files'
import { FileAction, Permission } from '@nextcloud/files'
import { t } from '@nextcloud/l10n'
import { isPublicShare } from '@nextcloud/sharing/public'
import { spawnDialog } from '@nextcloud/vue/functions/dialog'
import { defineAsyncComponent } from 'vue'
import TagMultipleSvg from '@mdi/svg/svg/tag-multiple-outline.svg?raw'

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -10,10 +10,9 @@ import $ from 'jquery'
import IconMove from '@mdi/svg/svg/folder-move.svg?raw'
import IconCopy from '@mdi/svg/svg/folder-multiple-outline.svg?raw'
import OC from './index.js'
import { DialogBuilder, FilePickerType, getFilePickerBuilder, spawnDialog } from '@nextcloud/dialogs'
import { translate as t } from '@nextcloud/l10n'
import { DialogBuilder, FilePickerType, getFilePickerBuilder } from '@nextcloud/dialogs'
import { t } from '@nextcloud/l10n'
import { spawnDialog } from '@nextcloud/vue/functions/dialog'
import { basename } from 'path'
import { defineAsyncComponent } from 'vue'
@ -111,7 +110,7 @@ const Dialogs = {
? [
{
label: t('core', 'Yes'),
type: 'error',
variant: 'error',
callback: () => {
callback.clicked = true
callback(true)
@ -149,7 +148,7 @@ const Dialogs = {
},
{
label: t('core', 'Yes'),
type: 'primary',
variant: 'primary',
callback: () => {
callback.clicked = true
callback(true)
@ -272,7 +271,7 @@ const Dialogs = {
builder.addButton({
callback: legacyCallback(callback, button.type),
label: button.text,
type: button.defaultButton ? 'primary' : 'secondary',
variant: button.defaultButton ? 'primary' : 'secondary',
})
})
} else {
@ -285,14 +284,14 @@ const Dialogs = {
buttons.push({
callback: legacyCallback(callback, FilePickerType.Choose),
label: node && !this.multiSelect ? t('core', 'Choose {file}', { file: target }) : t('core', 'Choose'),
type: 'primary',
variant: 'primary',
})
}
if (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {
buttons.push({
callback: legacyCallback(callback, FilePickerType.Copy),
label: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),
type: 'primary',
variant: 'primary',
icon: IconCopy,
})
}
@ -300,7 +299,7 @@ const Dialogs = {
buttons.push({
callback: legacyCallback(callback, FilePickerType.Move),
label: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),
type: type === FilePickerType.Move ? 'primary' : 'secondary',
variant: type === FilePickerType.Move ? 'primary' : 'secondary',
icon: IconMove,
})
}
@ -375,7 +374,7 @@ const Dialogs = {
})
buttonList.push({
label: buttons?.confirm ?? t('core', 'Yes'),
type: 'primary',
variant: 'primary',
callback: () => {
callback._clicked = true
callback(true)
@ -385,7 +384,7 @@ const Dialogs = {
case Dialogs.OK_BUTTONS:
buttonList.push({
label: buttons?.confirm ?? t('core', 'OK'),
type: 'primary',
variant: 'primary',
callback: () => {
callback._clicked = true
callback(true)

View file

@ -3,19 +3,23 @@
- SPDX-License-Identifier: AGPL-3.0-or-later
-->
<template>
<PublicPageMenuEntry :id="id"
:icon="icon"
href="#"
:label="label"
@click="openDialog" />
<Fragment>
<PublicPageMenuEntry :id="id"
:icon="icon"
href="#"
:label="label"
@click="openDialog" />
<PublicPageMenuExternalDialog v-if="showDialog" :label="label" />
</Fragment>
</template>
<script setup lang="ts">
import { spawnDialog } from '@nextcloud/dialogs'
import { ref } from 'vue'
import { Fragment } from 'vue-frag'
import PublicPageMenuEntry from './PublicPageMenuEntry.vue'
import PublicPageMenuExternalDialog from './PublicPageMenuExternalDialog.vue'
const props = defineProps<{
defineProps<{
id: string
label: string
icon: string
@ -26,11 +30,13 @@ const emit = defineEmits<{
(e: 'click'): void
}>()
const showDialog = ref(false)
/**
* Open the "create federated share" dialog
*/
function openDialog() {
spawnDialog(PublicPageMenuExternalDialog, { label: props.label })
showDialog.value = true
emit('click')
}
</script>

View file

@ -1,375 +0,0 @@
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { SetupConfig, SetupLinks } from '../install'
import SetupView from './Setup.vue'
import '../../css/guest.css'
const defaultConfig = Object.freeze({
adminlogin: '',
adminpass: '',
dbuser: '',
dbpass: '',
dbname: '',
dbtablespace: '',
dbhost: '',
dbtype: '',
databases: {
sqlite: 'SQLite',
mysql: 'MySQL/MariaDB',
pgsql: 'PostgreSQL',
},
directory: '',
hasAutoconfig: false,
htaccessWorking: true,
serverRoot: '/var/www/html',
errors: [],
}) as SetupConfig
const links = {
adminInstall: 'https://docs.nextcloud.com/server/32/go.php?to=admin-install',
adminSourceInstall: 'https://docs.nextcloud.com/server/32/go.php?to=admin-source_install',
adminDBConfiguration: 'https://docs.nextcloud.com/server/32/go.php?to=admin-db-configuration',
} as SetupLinks
describe('Default setup page', () => {
beforeEach(() => {
cy.mockInitialState('core', 'links', links)
})
afterEach(() => cy.unmockInitialState())
it('Renders default config', () => {
cy.mockInitialState('core', 'config', defaultConfig)
cy.mount(SetupView)
cy.get('[data-cy-setup-form]').scrollIntoView()
cy.get('[data-cy-setup-form]').should('be.visible')
// Single note is the footer help
cy.get('[data-cy-setup-form-note]')
.should('have.length', 1)
.should('be.visible')
cy.get('[data-cy-setup-form-note]').should('contain', 'See the documentation')
// DB radio selectors
cy.get('[data-cy-setup-form-field^="dbtype"]')
.should('exist')
.find('input')
.should('be.checked')
cy.get('[data-cy-setup-form-field="dbtype-mysql"]').should('exist')
cy.get('[data-cy-setup-form-field="dbtype-pgsql"]').should('exist')
cy.get('[data-cy-setup-form-field="dbtype-oci"]').should('not.exist')
// Sqlite warning
cy.get('[data-cy-setup-form-db-note="sqlite"]')
.should('be.visible')
// admin login, password, data directory and 3 DB radio selectors
cy.get('[data-cy-setup-form-field]')
.should('be.visible')
.should('have.length', 6)
})
it('Renders single DB sqlite', () => {
const config = {
...defaultConfig,
databases: {
sqlite: 'SQLite',
},
}
cy.mockInitialState('core', 'config', config)
cy.mount(SetupView)
cy.get('[data-cy-setup-form-field^="dbtype"]')
.should('exist')
.should('not.be.visible')
.find('input')
.should('be.checked')
cy.get('[data-cy-setup-form-field="dbtype-sqlite"]').should('exist')
// Two warnings: sqlite and single db support
cy.get('[data-cy-setup-form-db-note="sqlite"]')
.should('be.visible')
cy.get('[data-cy-setup-form-db-note="single-db"]')
.should('be.visible')
// Admin login, password, data directory and db type
cy.get('[data-cy-setup-form-field]')
.should('be.visible')
.should('have.length', 4)
})
it('Renders single DB mysql', () => {
const config = {
...defaultConfig,
databases: {
mysql: 'MySQL/MariaDB',
},
}
cy.mockInitialState('core', 'config', config)
cy.mount(SetupView)
cy.get('[data-cy-setup-form-field^="dbtype"]')
.should('exist')
.should('not.be.visible')
.find('input')
.should('be.checked')
// Single db support warning
cy.get('[data-cy-setup-form-db-note="single-db"]')
.should('be.visible')
.invoke('html')
.should('contains', links.adminSourceInstall)
// No SQLite warning
cy.get('[data-cy-setup-form-db-note="sqlite"]')
.should('not.exist')
// Admin login, password, data directory, db type, db user,
// db password, db name and db host
cy.get('[data-cy-setup-form-field]')
.should('be.visible')
.should('have.length', 8)
})
it('Changes fields from sqlite to mysql then oci', () => {
const config = {
...defaultConfig,
databases: {
sqlite: 'SQLite',
mysql: 'MySQL/MariaDB',
pgsql: 'PostgreSQL',
oci: 'Oracle',
},
}
cy.mockInitialState('core', 'config', config)
cy.mount(SetupView)
// SQLite selected
cy.get('[data-cy-setup-form-field="dbtype-sqlite"]')
.should('be.visible')
.find('input')
.should('be.checked')
// Admin login, password, data directory and 4 DB radio selectors
cy.get('[data-cy-setup-form-field]')
.should('be.visible')
.should('have.length', 7)
// Change to MySQL
cy.get('[data-cy-setup-form-field="dbtype-mysql"]').click()
cy.get('[data-cy-setup-form-field="dbtype-mysql"] input').should('be.checked')
// Admin login, password, data directory, db user, db password,
// db name, db host and 4 DB radio selectors
cy.get('[data-cy-setup-form-field]')
.should('be.visible')
.should('have.length', 11)
// Change to Oracle
cy.get('[data-cy-setup-form-field="dbtype-oci"]').click()
cy.get('[data-cy-setup-form-field="dbtype-oci"] input').should('be.checked')
// Admin login, password, data directory, db user, db password,
// db name, db table space, db host and 4 DB radio selectors
cy.get('[data-cy-setup-form-field]')
.should('be.visible')
.should('have.length', 12)
cy.get('[data-cy-setup-form-field="dbtablespace"]')
.should('be.visible')
})
})
describe('Setup page with errors and warning', () => {
beforeEach(() => {
cy.mockInitialState('core', 'links', links)
})
afterEach(() => cy.unmockInitialState())
it('Renders error from backend', () => {
const config = {
...defaultConfig,
errors: [
{
error: 'Error message',
hint: 'Error hint',
},
],
}
cy.mockInitialState('core', 'config', config)
cy.mount(SetupView)
// Error message and hint
cy.get('[data-cy-setup-form-note="error"]')
.should('be.visible')
.should('have.length', 1)
.should('contain', 'Error message')
.should('contain', 'Error hint')
})
it('Renders errors from backend', () => {
const config = {
...defaultConfig,
errors: [
'Error message 1',
{
error: 'Error message',
hint: 'Error hint',
},
],
}
cy.mockInitialState('core', 'config', config)
cy.mount(SetupView)
// Error message and hint
cy.get('[data-cy-setup-form-note="error"]')
.should('be.visible')
.should('have.length', 2)
cy.get('[data-cy-setup-form-note="error"]').eq(0)
.should('contain', 'Error message 1')
cy.get('[data-cy-setup-form-note="error"]').eq(1)
.should('contain', 'Error message')
.should('contain', 'Error hint')
})
it('Renders all the submitted fields on error', () => {
const config = {
...defaultConfig,
adminlogin: 'admin',
adminpass: 'password',
dbname: 'nextcloud',
dbtype: 'mysql',
dbuser: 'nextcloud',
dbpass: 'password',
dbhost: 'localhost',
directory: '/var/www/html/nextcloud',
} as SetupConfig
cy.mockInitialState('core', 'config', config)
cy.mount(SetupView)
cy.get('input[data-cy-setup-form-field="adminlogin"]')
.should('have.value', 'admin')
cy.get('input[data-cy-setup-form-field="adminpass"]')
.should('have.value', 'password')
cy.get('[data-cy-setup-form-field="dbtype-mysql"] input')
.should('be.checked')
cy.get('input[data-cy-setup-form-field="dbname"]')
.should('have.value', 'nextcloud')
cy.get('input[data-cy-setup-form-field="dbuser"]')
.should('have.value', 'nextcloud')
cy.get('input[data-cy-setup-form-field="dbpass"]')
.should('have.value', 'password')
cy.get('input[data-cy-setup-form-field="dbhost"]')
.should('have.value', 'localhost')
cy.get('input[data-cy-setup-form-field="directory"]')
.should('have.value', '/var/www/html/nextcloud')
})
it('Renders the htaccess warning', () => {
const config = {
...defaultConfig,
htaccessWorking: false,
}
cy.mockInitialState('core', 'config', config)
cy.mount(SetupView)
cy.get('[data-cy-setup-form-note="htaccess"]')
.should('be.visible')
.should('contain', 'Security warning')
.invoke('html')
.should('contains', links.adminInstall)
})
})
describe('Setup page with autoconfig', () => {
beforeEach(() => {
cy.mockInitialState('core', 'links', links)
})
afterEach(() => cy.unmockInitialState())
it('Renders autoconfig', () => {
const config = {
...defaultConfig,
hasAutoconfig: true,
dbname: 'nextcloud',
dbtype: 'mysql',
dbuser: 'nextcloud',
dbpass: 'password',
dbhost: 'localhost',
directory: '/var/www/html/nextcloud',
} as SetupConfig
cy.mockInitialState('core', 'config', config)
cy.mount(SetupView)
// Autoconfig info note
cy.get('[data-cy-setup-form-note="autoconfig"]')
.should('be.visible')
.should('contain', 'Autoconfig file detected')
// Database and storage section is hidden as already set in autoconfig
cy.get('[data-cy-setup-form-advanced-config]').should('be.visible')
.invoke('attr', 'open')
.should('equal', undefined)
// Oracle tablespace is hidden
cy.get('[data-cy-setup-form-field="dbtablespace"]')
.should('not.exist')
})
})
describe('Submit a full form sends the data', () => {
beforeEach(() => {
cy.mockInitialState('core', 'links', links)
})
afterEach(() => cy.unmockInitialState())
it('Submits a full form', () => {
const config = {
...defaultConfig,
adminlogin: 'admin',
adminpass: 'password',
dbname: 'nextcloud',
dbtype: 'mysql',
dbuser: 'nextcloud',
dbpass: 'password',
dbhost: 'localhost',
dbtablespace: 'tablespace',
directory: '/var/www/html/nextcloud',
} as SetupConfig
cy.intercept('POST', '**', {
delay: 2000,
}).as('setup')
cy.mockInitialState('core', 'config', config)
cy.mount(SetupView)
// Not chaining breaks the test as the POST prevents the element from being retrieved twice
// eslint-disable-next-line cypress/unsafe-to-chain-command
cy.get('[data-cy-setup-form-submit]')
.click()
.invoke('attr', 'disabled')
.should('equal', 'disabled', { timeout: 500 })
cy.wait('@setup')
.its('request.body')
.should('deep.equal', new URLSearchParams({
adminlogin: 'admin',
adminpass: 'password',
directory: '/var/www/html/nextcloud',
dbtype: 'mysql',
dbuser: 'nextcloud',
dbpass: 'password',
dbname: 'nextcloud',
dbhost: 'localhost',
}).toString())
})
})

View file

@ -0,0 +1,306 @@
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { SetupConfig, SetupLinks } from '../install.ts'
import { cleanup, findByRole, fireEvent, getAllByRole, getByRole, render } from '@testing-library/vue'
import { beforeEach, describe, expect, it } from 'vitest'
import SetupView from './Setup.vue'
import '../../css/guest.css'
const defaultConfig = Object.freeze({
adminlogin: '',
adminpass: '',
dbuser: '',
dbpass: '',
dbname: '',
dbtablespace: '',
dbhost: '',
dbtype: '',
databases: {
sqlite: 'SQLite',
mysql: 'MySQL/MariaDB',
pgsql: 'PostgreSQL',
},
directory: '',
hasAutoconfig: false,
htaccessWorking: true,
serverRoot: '/var/www/html',
errors: [],
}) as SetupConfig
const links = {
adminInstall: 'https://docs.nextcloud.com/server/32/go.php?to=admin-install',
adminSourceInstall: 'https://docs.nextcloud.com/server/32/go.php?to=admin-source_install',
adminDBConfiguration: 'https://docs.nextcloud.com/server/32/go.php?to=admin-db-configuration',
} as SetupLinks
describe('Default setup page', () => {
beforeEach(cleanup)
beforeEach(() => {
removeInitialState()
mockInitialState('core', 'links', links)
})
it('Renders default config', async () => {
mockInitialState('core', 'config', defaultConfig)
const component = render(SetupView)
// Single note is the footer help
expect(component.getAllByRole('note')).toHaveLength(1)
expect(component.getByRole('note').textContent).toContain('See the documentation')
// DB radio selectors
const dbTypes = component.getByRole('group', { name: 'Database type' })
expect(getAllByRole(dbTypes, 'radio')).toHaveLength(3)
await expect(findByRole(dbTypes, 'radio', { checked: true })).resolves.not.toThrow()
await expect(findByRole(dbTypes, 'radio', { name: /MySQL/ })).resolves.not.toThrow()
await expect(findByRole(dbTypes, 'radio', { name: /PostgreSQL/ })).resolves.not.toThrow()
await expect(findByRole(dbTypes, 'radio', { name: /SQLite/ })).resolves.not.toThrow()
// Sqlite warning
await expect(component.findByText(/SQLite should only be used for minimal and development instances/)).resolves.not.toThrow()
// admin login, password, data directory
await expect(component.findByRole('textbox', { name: 'Administration account name' })).resolves.not.toThrow()
await expect(component.findByLabelText('Administration account password')).resolves.not.toThrow()
await expect(component.findByRole('textbox', { name: 'Data folder' })).resolves.not.toThrow()
})
it('Renders single DB sqlite', async () => {
mockInitialState('core', 'config', {
...defaultConfig,
databases: {
sqlite: 'SQLite',
},
})
const component = render(SetupView)
const dbTypes = component.getByRole('group', { name: 'Database type' })
expect(getAllByRole(dbTypes, 'radio', { hidden: true })).toHaveLength(1)
await expect(findByRole(dbTypes, 'radio', { name: /SQLite/, hidden: true })).resolves.not.toThrow()
// Two warnings: sqlite and single db support
await expect(component.findByText(/Only SQLite is available./)).resolves.not.toThrow()
await expect(component.findByText(/SQLite should only be used for minimal and development instances/)).resolves.not.toThrow()
})
it('Renders single DB mysql', async () => {
mockInitialState('core', 'config', {
...defaultConfig,
databases: {
mysql: 'MySQL/MariaDB',
},
})
const component = render(SetupView)
const dbTypes = component.getByRole('group', { name: 'Database type' })
expect(getAllByRole(dbTypes, 'radio', { hidden: true })).toHaveLength(1)
await expect(findByRole(dbTypes, 'radio', { name: /MySQL/, hidden: true })).resolves.not.toThrow()
// Single db support warning
await expect(component.findByText(/Only MySQL.* is available./)).resolves.not.toThrow()
// No SQLite warning
await expect(component.findByText(/SQLite should only be used for minimal and development instances/)).rejects.toThrow()
// database config
await expect(component.findByRole('textbox', { name: /Database user/ })).resolves.not.toThrow()
await expect(component.findByRole('textbox', { name: /Database name/ })).resolves.not.toThrow()
await expect(component.findByRole('textbox', { name: /Database host/ })).resolves.not.toThrow()
await expect(component.findByLabelText(/Database password/)).resolves.not.toThrow()
})
it('Changes fields from sqlite to mysql then oci', async () => {
mockInitialState('core', 'config', {
...defaultConfig,
databases: {
sqlite: 'SQLite',
mysql: 'MySQL/MariaDB',
pgsql: 'PostgreSQL',
oci: 'Oracle',
},
})
const component = render(SetupView)
// SQLite selected
await expect(component.findByRole('radio', { name: /SQLite/, checked: true })).resolves.not.toThrow()
// 4 db toggles
const dbTypes = component.getByRole('group', { name: 'Database type' })
expect(getAllByRole(dbTypes, 'radio')).toHaveLength(4)
// but no database config fields
await expect(findByRole(dbTypes, 'group', { name: /Database connection/ })).rejects.toThrow()
// Change to MySQL
await fireEvent.click(getByRole(dbTypes, 'radio', { name: /MySQL/, checked: false }))
expect((getByRole(dbTypes, 'radio', { name: /SQLite/, checked: false }) as HTMLInputElement).checked).toBe(false)
expect((getByRole(dbTypes, 'radio', { name: /MySQL/, checked: true }) as HTMLInputElement).checked).toBe(true)
// now the database config fields are visible
await expect(component.findByRole('group', { name: /Database connection/ })).resolves.not.toThrow()
// but not the Database tablespace
await expect(component.findByRole('textbox', { name: /Database tablespace/ })).rejects.toThrow()
// Change to Oracle
await fireEvent.click(getByRole(dbTypes, 'radio', { name: /Oracle/, checked: false }))
// see database config fields are visible and tablespace
await expect(component.findByRole('textbox', { name: /Database tablespace/ })).resolves.not.toThrow()
await expect(component.findByRole('group', { name: /Database connection/ })).resolves.not.toThrow()
})
})
describe('Setup page with errors and warning', () => {
beforeEach(cleanup)
beforeEach(() => {
removeInitialState()
mockInitialState('core', 'links', links)
})
it('Renders error from backend', async () => {
mockInitialState('core', 'config', {
...defaultConfig,
errors: [
{
error: 'Error message',
hint: 'Error hint',
},
],
})
const component = render(SetupView)
// Error message and hint
await expect(component.findByText('Error message')).resolves.not.toThrow()
await expect(component.findByText('Error hint')).resolves.not.toThrow()
})
it('Renders errors from backend', async () => {
const config = {
...defaultConfig,
errors: [
'Error message 1',
{
error: 'Error message 2',
hint: 'Error hint',
},
],
}
mockInitialState('core', 'config', config)
const component = render(SetupView)
// Error message and hint
await expect(component.findByText('Error message 1')).resolves.not.toThrow()
await expect(component.findByText('Error message 2')).resolves.not.toThrow()
await expect(component.findByText('Error hint')).resolves.not.toThrow()
})
it('Renders all the submitted fields on error', async () => {
const config = {
...defaultConfig,
adminlogin: 'admin',
adminpass: 'password',
dbname: 'nextcloud',
dbtype: 'mysql',
dbuser: 'nextcloud',
dbpass: 'password',
dbhost: 'localhost',
directory: '/var/www/html/nextcloud',
} as SetupConfig
mockInitialState('core', 'config', config)
const component = render(SetupView)
await expect(component.findByRole('textbox', { name: 'Data folder' })).resolves.not.toThrow()
expect((component.getByRole('textbox', { name: 'Data folder' }) as HTMLInputElement).value).toBe('/var/www/html/nextcloud')
await expect(component.findByRole('textbox', { name: 'Administration account name' })).resolves.not.toThrow()
expect((component.getByRole('textbox', { name: 'Administration account name' }) as HTMLInputElement).value).toBe('admin')
await expect(component.findByLabelText('Administration account password')).resolves.not.toThrow()
expect((component.getByLabelText('Administration account password') as HTMLInputElement).value).toBe('password')
await expect(component.findByRole('radio', { name: /MySQL/, checked: true, hidden: true })).resolves.not.toThrow()
await expect(component.findByRole('textbox', { name: 'Database name' })).resolves.not.toThrow()
expect((component.getByRole('textbox', { name: 'Database name' }) as HTMLInputElement).value).toBe('nextcloud')
await expect(component.findByRole('textbox', { name: 'Database user' })).resolves.not.toThrow()
expect((component.getByRole('textbox', { name: 'Database user' }) as HTMLInputElement).value).toBe('nextcloud')
await expect(component.findByRole('textbox', { name: 'Database host' })).resolves.not.toThrow()
expect((component.getByRole('textbox', { name: 'Database host' }) as HTMLInputElement).value).toBe('localhost')
await expect(component.findByLabelText('Database password')).resolves.not.toThrow()
expect((component.getByLabelText('Database password') as HTMLInputElement).value).toBe('password')
})
it('Renders the htaccess warning', async () => {
const config = {
...defaultConfig,
htaccessWorking: false,
}
mockInitialState('core', 'config', config)
const component = render(SetupView)
await expect(component.findByText('Security warning')).resolves.not.toThrow()
})
})
describe('Setup page with autoconfig', () => {
beforeEach(cleanup)
beforeEach(() => {
removeInitialState()
mockInitialState('core', 'links', links)
})
it('Renders autoconfig', async () => {
const config = {
...defaultConfig,
hasAutoconfig: true,
dbname: 'nextcloud',
dbtype: 'mysql',
dbuser: 'nextcloud',
dbpass: 'password',
dbhost: 'localhost',
directory: '/var/www/html/nextcloud',
} as SetupConfig
mockInitialState('core', 'config', config)
const component = render(SetupView)
// Autoconfig info note
await expect(component.findByText('Autoconfig file detected')).resolves.not.toThrow()
// Oracle tablespace is hidden
await expect(component.findByRole('textbox', { name: 'Database tablespace' })).rejects.toThrow()
// Database and storage section is hidden as already set in autoconfig
await expect(component.findByText('Storage & database')).resolves.not.toThrow()
expect(component.getByText('Storage & database').closest('details')!.getAttribute('hidden')).toBeNull()
})
})
/**
* Remove the mocked initial state
*/
function removeInitialState(): void {
document.querySelectorAll('input[type="hidden"]').forEach((el) => {
el.remove()
})
// clear the cache
delete globalThis._nc_initial_state
}
/**
* Helper to mock an initial state value
* @param app - The app
* @param key - The key
* @param value - The value
*/
function mockInitialState(app: string, key: string, value: unknown): void {
const el = document.createElement('input')
el.value = btoa(JSON.stringify(value))
el.id = `initial-state-${app}-${key}`
el.type = 'hidden'
document.head.appendChild(el)
}

View file

@ -82,6 +82,10 @@
<!-- Database type select -->
<fieldset class="setup-form__database-type">
<legend class="hidden-visually">
{{ t('core', 'Database type') }}
</legend>
<!-- Using v-show instead of v-if ensures that the input dbtype remains set even when only one database engine is available -->
<p v-show="!firstAndOnlyDatabase" :class="`setup-form__database-type-select--${DBTypeGroupDirection}`" class="setup-form__database-type-select">
<NcCheckboxRadioSwitch v-for="(name, db) in config.databases"
@ -117,6 +121,10 @@
<!-- Database configuration -->
<fieldset v-if="config.dbtype !== 'sqlite'">
<legend class="hidden-visually">
{{ t('core', 'Database connection') }}
</legend>
<NcTextField v-model="config.dbuser"
:label="t('core', 'Database user')"
autocapitalize="none"
@ -300,7 +308,7 @@ export default defineComponent({
firstAndOnlyDatabase(): string|null {
const dbNames = Object.values(this.config?.databases || {})
if (dbNames.length === 1) {
return dbNames[0]
return dbNames[0]!
}
return null

View file

@ -133,39 +133,4 @@ export default defineConfig({
return config
},
},
component: {
specPattern: ['core/**/*.cy.ts', 'apps/**/*.cy.ts'],
devServer: {
framework: 'vue',
bundler: 'webpack',
webpackConfig: async () => {
process.env.npm_package_name = 'NcCypress'
process.env.npm_package_version = '1.0.0'
process.env.NODE_ENV = 'development'
/**
* Needed for cypress stubbing
*
* @see https://github.com/sinonjs/sinon/issues/1121
* @see https://github.com/cypress-io/cypress/issues/18662
*/
const babel = require('./babel.config.js')
babel.plugins.push([
'@babel/plugin-transform-modules-commonjs',
{
loose: true,
},
])
const config = webpackConfig
config.module.rules.push({
test: /\.svg$/,
type: 'asset/source',
})
return config
},
},
},
})

View file

@ -120,7 +120,10 @@ export const moveFile = (fileName: string, dirPath: string) => {
if (dirPath === '/') {
// select home folder
cy.get('button[title="Home"]').should('be.visible').click()
cy.get('.breadcrumb')
.findByRole('button', { name: 'All files' })
.should('be.visible')
.click()
// click move
cy.contains('button', 'Move').should('be.visible').click()
} else if (dirPath === '.') {
@ -151,7 +154,10 @@ export const copyFile = (fileName: string, dirPath: string) => {
if (dirPath === '/') {
// select home folder
cy.get('button[title="Home"]').should('be.visible').click()
cy.get('.breadcrumb')
.findByRole('button', { name: 'All files' })
.should('be.visible')
.click()
// click copy
cy.contains('button', 'Copy').should('be.visible').click()
} else if (dirPath === '.') {

View file

@ -40,7 +40,10 @@ export const moveFileForbidden = (fileName: string, dirPath: string) => {
cy.intercept('MOVE', /\/(remote|public)\.php\/dav\/files\//).as('moveFile')
// select home folder
cy.get('button[title="Home"]').should('be.visible').click()
cy.get('.breadcrumb')
.findByRole('button', { name: 'All files' })
.should('be.visible')
.click()
const directories = dirPath.split('/')
directories.forEach((directory) => {

View file

@ -222,7 +222,7 @@ describe('User select a custom background', function() {
// Pick background
cy.get('[data-user-theming-background-custom]').click()
cy.get('.file-picker__files tr').contains(image).click()
cy.get('.dialog__actions .button-vue--vue-primary').click()
cy.findByRole('button', { name: 'Select background' }).click()
// Wait for background to be set
cy.wait('@setBackground')
@ -260,7 +260,7 @@ describe('User changes settings and reload the page', function() {
// Pick background
cy.get('[data-user-theming-background-custom]').click()
cy.get('.file-picker__files tr').contains(image).click()
cy.get('.dialog__actions .button-vue--vue-primary').click()
cy.findByRole('button', { name: 'Select background' }).click()
// Wait for background to be set
cy.wait('@setBackground')

View file

@ -1,16 +0,0 @@
<!DOCTYPE html>
<!--
- SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
- SPDX-License-Identifier: AGPL-3.0-or-later
-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Components App</title>
</head>
<body>
<div data-cy-root></div>
</body>
</html>

View file

@ -1,45 +0,0 @@
/**
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import '@testing-library/cypress/add-commands'
import 'cypress-axe'
// styles
import '../../apps/theming/css/default.css'
import '../../core/css/server.css'
/* eslint-disable */
import { mount } from '@cypress/vue2'
Cypress.Commands.add('mount', (component, options = {}) => {
// Setup options object
options.extensions = options.extensions || {}
options.extensions.plugins = options.extensions.plugins || []
options.extensions.components = options.extensions.components || {}
return mount(component, options)
})
Cypress.Commands.add('mockInitialState', (app: string, key: string, value: unknown) => {
cy.document().then(($document) => {
const input = $document.createElement('input')
input.setAttribute('type', 'hidden')
input.setAttribute('id', `initial-state-${app}-${key}`)
input.setAttribute('value', btoa(JSON.stringify(value)))
$document.body.appendChild(input)
})
})
Cypress.Commands.add('unmockInitialState', (app?: string, key?: string) => {
cy.window().then(($window) => {
// @ts-expect-error internal value
delete $window._nc_initial_state
})
cy.document().then(($document) => {
$document.querySelectorAll('body > input[type="hidden"]' + (app ? `[id="initial-state-${app}-${key}"]` : ''))
.forEach((node) => $document.body.removeChild(node))
})
})

View file

@ -1,17 +0,0 @@
/*!
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { mount } from '@cypress/vue2'
declare global {
// eslint-disable-next-line @typescript-eslint/no-namespace
namespace Cypress {
interface Chainable {
mount: typeof mount
mockInitialState: (app: string, key: string, value: unknown) => Cypress.Chainable<void>
unmockInitialState: (app?: string, key?: string) => Cypress.Chainable<void>
}
}
}

View file

@ -1,6 +1,6 @@
{
"extends": "../tsconfig.json",
"include": ["./**/*.ts", "../**/*.cy.ts", "./cypress-e2e.d.ts", "./cypress-component.d.ts"],
"include": ["./**/*.ts", "./cypress-e2e.d.ts", "./cypress-component.d.ts"],
"exclude": [],
"compilerOptions": {
"types": [

View file

@ -38,7 +38,7 @@ This file is generated from multiple sources. Included packages:
- version: 7.1.2
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3

4
dist/23-23.js vendored

File diff suppressed because one or more lines are too long

View file

@ -27,7 +27,7 @@ This file is generated from multiple sources. Included packages:
- version: 7.1.2
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3

2
dist/23-23.js.map vendored

File diff suppressed because one or more lines are too long

1
dist/2391-2391.js vendored Normal file
View file

@ -0,0 +1 @@
"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[2391],{72391:(l,u,a)=>{a.r(u),a.d(u,{default:()=>e.N});var e=a(64951)}}]);

74
dist/2391-2391.js.license vendored Normal file
View file

@ -0,0 +1,74 @@
SPDX-License-Identifier: MIT
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: date-fns developers
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: Guillaume Chau
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Eduardo San Martin Morote
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
This file is generated from multiple sources. Included packages:
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @nextcloud/vue
- version: 9.3.1
- license: AGPL-3.0-or-later
- vue-router
- version: 4.6.4
- license: MIT
- vue-select
- version: 4.0.0-beta.6
- license: MIT
- vue
- version: 3.5.25
- license: MIT
- @nextcloud/l10n
- version: 3.4.1
- license: GPL-3.0-or-later
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @vue/devtools-api
- version: 6.6.4
- license: MIT
- @vue/reactivity
- version: 3.5.25
- license: MIT
- @vue/runtime-core
- version: 3.5.25
- license: MIT
- @vue/runtime-dom
- version: 3.5.25
- license: MIT
- @vue/shared
- version: 3.5.25
- license: MIT
- css-loader
- version: 7.1.2
- license: MIT
- date-fns
- version: 4.1.0
- license: MIT
- dompurify
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3
- license: MIT
- style-loader
- version: 4.0.0
- license: MIT

2
dist/2880-2880.js vendored Normal file

File diff suppressed because one or more lines are too long

427
dist/2880-2880.js.license vendored Normal file
View file

@ -0,0 +1,427 @@
SPDX-License-Identifier: MIT
SPDX-License-Identifier: ISC
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: string_decoder developers
SPDX-FileCopyrightText: rhysd <lin90162@yahoo.co.jp>
SPDX-FileCopyrightText: p-queue developers
SPDX-FileCopyrightText: omahlama
SPDX-FileCopyrightText: inline-style-parser developers
SPDX-FileCopyrightText: inherits developers
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: debounce developers
SPDX-FileCopyrightText: date-fns developers
SPDX-FileCopyrightText: chenkai
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: Varun A P
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)
SPDX-FileCopyrightText: T. Jameson Little <t.jameson.little@gmail.com>
SPDX-FileCopyrightText: Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)
SPDX-FileCopyrightText: Sindre Sorhus
SPDX-FileCopyrightText: Shuhei Kagawa
SPDX-FileCopyrightText: Scott Cooper <scttcper@gmail.com>
SPDX-FileCopyrightText: Roman Shtylman <shtylman@gmail.com>
SPDX-FileCopyrightText: OpenJS Foundation and other contributors
SPDX-FileCopyrightText: Nick Frasser (https://nfrasser.com)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Max <max@nextcloud.com>
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Mark <mark@remarkablemark.org>
SPDX-FileCopyrightText: Joyent
SPDX-FileCopyrightText: Jordan Humphreys <jordan@zurb.com>
SPDX-FileCopyrightText: Jonas Schade <derzade@gmail.com>
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: Guillaume Chau
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Feross Aboukhadijeh
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Eugene Sharygin <eush77@gmail.com>
SPDX-FileCopyrightText: Eric Norris (https://github.com/ericnorris)
SPDX-FileCopyrightText: Eduardo San Martin Morote
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
SPDX-FileCopyrightText: David Clark
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Borys Serebrov
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Arnout Kazemier
SPDX-FileCopyrightText: Antoni Andre <antoniandre.web@gmail.com>
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
SPDX-FileCopyrightText: Andrea Giammarchi
SPDX-FileCopyrightText: Alkemics
SPDX-FileCopyrightText: @nextcloud/dialogs developers
This file is generated from multiple sources. Included packages:
- @ctrl/tinycolor
- version: 3.6.1
- license: MIT
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @mdi/js
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later
- @nextcloud/axios
- version: 2.5.2
- license: GPL-3.0-or-later
- @nextcloud/browser-storage
- version: 0.5.0
- license: GPL-3.0-or-later
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later
- @ckpack/vue-color
- version: 1.6.0
- license: MIT
- @vueuse/core
- version: 14.1.0
- license: MIT
- @nextcloud/vue
- version: 9.3.1
- license: AGPL-3.0-or-later
- @vueuse/shared
- version: 14.1.0
- license: MIT
- debounce
- version: 3.0.0
- license: MIT
- eventemitter3
- version: 5.0.1
- license: MIT
- p-queue
- version: 9.0.1
- license: MIT
- rehype-react
- version: 8.0.0
- license: MIT
- splitpanes
- version: 4.0.4
- license: MIT
- vue-router
- version: 4.6.4
- license: MIT
- vue-select
- version: 4.0.0-beta.6
- license: MIT
- vue
- version: 3.5.25
- license: MIT
- @nextcloud/dialogs
- version: 7.1.0
- license: AGPL-3.0-or-later
- semver
- version: 7.7.2
- license: ISC
- @nextcloud/event-bus
- version: 3.3.3
- license: GPL-3.0-or-later
- @nextcloud/initial-state
- version: 2.2.0
- license: GPL-3.0-or-later
- @nextcloud/files
- version: 3.12.0
- license: AGPL-3.0-or-later
- @nextcloud/initial-state
- version: 3.0.0
- license: GPL-3.0-or-later
- @nextcloud/l10n
- version: 3.4.1
- license: GPL-3.0-or-later
- @nextcloud/logger
- version: 3.0.2
- license: GPL-3.0-or-later
- @nextcloud/paths
- version: 2.3.0
- license: GPL-3.0-or-later
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @nextcloud/sharing
- version: 0.3.0
- license: GPL-3.0-or-later
- @ungap/structured-clone
- version: 1.3.0
- license: ISC
- @vue/devtools-api
- version: 6.6.4
- license: MIT
- @vue/reactivity
- version: 3.5.25
- license: MIT
- @vue/runtime-core
- version: 3.5.25
- license: MIT
- @vue/runtime-dom
- version: 3.5.25
- license: MIT
- @vue/shared
- version: 3.5.25
- license: MIT
- axios
- version: 1.12.2
- license: MIT
- base64-js
- version: 1.5.1
- license: MIT
- blurhash
- version: 2.0.5
- license: MIT
- buffer
- version: 5.7.1
- license: MIT
- cancelable-promise
- version: 4.3.1
- license: MIT
- comma-separated-tokens
- version: 2.0.3
- license: MIT
- css-loader
- version: 7.1.2
- license: MIT
- date-fns
- version: 4.1.0
- license: MIT
- decode-named-character-reference
- version: 1.2.0
- license: MIT
- devlop
- version: 1.1.0
- license: MIT
- dompurify
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- emoji-mart-vue-fast
- version: 15.0.5
- license: BSD-3-Clause
- escape-html
- version: 1.0.3
- license: MIT
- estree-util-is-identifier-name
- version: 3.0.0
- license: MIT
- extend
- version: 3.0.2
- license: MIT
- focus-trap
- version: 7.6.6
- license: MIT
- hast-util-is-element
- version: 3.0.0
- license: MIT
- hast-util-whitespace
- version: 3.0.0
- license: MIT
- property-information
- version: 7.1.0
- license: MIT
- hast-util-to-jsx-runtime
- version: 2.3.6
- license: MIT
- ieee754
- version: 1.2.1
- license: BSD-3-Clause
- is-absolute-url
- version: 4.0.1
- license: MIT
- jquery
- version: 3.7.1
- license: MIT
- linkifyjs
- version: 4.3.2
- license: MIT
- material-colors
- version: 1.2.6
- license: ISC
- mdast-squeeze-paragraphs
- version: 6.0.0
- license: MIT
- escape-string-regexp
- version: 5.0.0
- license: MIT
- mdast-util-find-and-replace
- version: 3.0.2
- license: MIT
- mdast-util-from-markdown
- version: 2.0.2
- license: MIT
- mdast-util-newline-to-break
- version: 2.0.0
- license: MIT
- mdast-util-to-hast
- version: 13.2.1
- license: MIT
- mdast-util-to-string
- version: 4.0.0
- license: MIT
- micromark-core-commonmark
- version: 2.0.3
- license: MIT
- micromark-factory-destination
- version: 2.0.1
- license: MIT
- micromark-factory-label
- version: 2.0.1
- license: MIT
- micromark-factory-space
- version: 2.0.1
- license: MIT
- micromark-factory-title
- version: 2.0.1
- license: MIT
- micromark-factory-whitespace
- version: 2.0.1
- license: MIT
- micromark-util-character
- version: 2.1.1
- license: MIT
- micromark-util-chunked
- version: 2.0.1
- license: MIT
- micromark-util-classify-character
- version: 2.0.1
- license: MIT
- micromark-util-combine-extensions
- version: 2.0.1
- license: MIT
- micromark-util-decode-numeric-character-reference
- version: 2.0.2
- license: MIT
- micromark-util-decode-string
- version: 2.0.1
- license: MIT
- micromark-util-encode
- version: 2.0.1
- license: MIT
- micromark-util-html-tag-name
- version: 2.0.1
- license: MIT
- micromark-util-normalize-identifier
- version: 2.0.1
- license: MIT
- micromark-util-resolve-all
- version: 2.0.1
- license: MIT
- micromark-util-sanitize-uri
- version: 2.0.1
- license: MIT
- micromark-util-subtokenize
- version: 2.1.0
- license: MIT
- micromark
- version: 4.0.2
- license: MIT
- buffer
- version: 6.0.3
- license: MIT
- inherits
- version: 2.0.3
- license: ISC
- util
- version: 0.10.4
- license: MIT
- path
- version: 0.12.7
- license: MIT
- process
- version: 0.11.10
- license: MIT
- rehype-external-links
- version: 3.0.0
- license: MIT
- remark-breaks
- version: 4.0.0
- license: MIT
- remark-parse
- version: 11.0.0
- license: MIT
- remark-rehype
- version: 11.1.2
- license: MIT
- remark-unlink-protocols
- version: 1.0.0
- license: MIT
- safe-buffer
- version: 5.2.1
- license: MIT
- space-separated-tokens
- version: 2.0.2
- license: MIT
- string_decoder
- version: 1.3.0
- license: MIT
- striptags
- version: 3.2.0
- license: MIT
- style-loader
- version: 4.0.0
- license: MIT
- inline-style-parser
- version: 0.2.7
- license: MIT
- style-to-object
- version: 1.0.14
- license: MIT
- style-to-js
- version: 1.1.21
- license: MIT
- tabbable
- version: 6.3.0
- license: MIT
- toastify-js
- version: 1.12.0
- license: MIT
- tributejs
- version: 5.1.3
- license: MIT
- trim-lines
- version: 3.0.1
- license: MIT
- trough
- version: 2.2.0
- license: MIT
- typescript-event-target
- version: 1.1.1
- license: MIT
- unified
- version: 11.0.5
- license: MIT
- unist-builder
- version: 4.0.0
- license: MIT
- unist-util-is
- version: 6.0.0
- license: MIT
- unist-util-position
- version: 5.0.0
- license: MIT
- unist-util-stringify-position
- version: 4.0.0
- license: MIT
- unist-util-visit-parents
- version: 6.0.1
- license: MIT
- unist-util-visit
- version: 5.0.0
- license: MIT
- vfile-message
- version: 4.0.3
- license: MIT
- vfile
- version: 6.0.3
- license: MIT
- vue-loader
- version: 15.11.1
- license: MIT

1
dist/2880-2880.js.map vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/2880-2880.js.map.license vendored Symbolic link
View file

@ -0,0 +1 @@
2880-2880.js.license

2
dist/3278-3278.js vendored
View file

@ -1,2 +0,0 @@
"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[3278],{73278:(e,l,c)=>{c.d(l,{FilePickerVue:()=>i});const i=(0,c(85471).$V)(()=>Promise.all([c.e(4208),c.e(8790)]).then(c.bind(c,78790)))}}]);
//# sourceMappingURL=3278-3278.js.map?v=c97a360506d6ebb6afd2

View file

@ -1 +0,0 @@
{"version":3,"file":"3278-3278.js?v=c97a360506d6ebb6afd2","mappings":"gJACA,MAAMA,GAAgB,E,SAAA,IAAqB,IAAM,yD","sources":["webpack:///nextcloud/node_modules/@nextcloud/dialogs/dist/chunks/index-hTwX2gcC.mjs"],"sourcesContent":["import { defineAsyncComponent } from \"vue\";\nconst FilePickerVue = defineAsyncComponent(() => import(\"./FilePicker-lO8J1a0C.mjs\"));\nexport {\n FilePickerVue\n};\n//# sourceMappingURL=index-hTwX2gcC.mjs.map\n"],"names":["FilePickerVue"],"ignoreList":[],"sourceRoot":""}

View file

@ -1 +0,0 @@
3278-3278.js.license

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
3564-3564.js.license

View file

@ -5,33 +5,51 @@ SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: string_decoder developers
SPDX-FileCopyrightText: rhysd <lin90162@yahoo.co.jp>
SPDX-FileCopyrightText: readable-stream developers
SPDX-FileCopyrightText: qs developers
SPDX-FileCopyrightText: p-queue developers
SPDX-FileCopyrightText: omahlama
SPDX-FileCopyrightText: jden <jason@denizac.org>
SPDX-FileCopyrightText: inline-style-parser developers
SPDX-FileCopyrightText: inherits developers
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: defunctzombie
SPDX-FileCopyrightText: debounce developers
SPDX-FileCopyrightText: date-fns developers
SPDX-FileCopyrightText: chenkai
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: Varun A P
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)
SPDX-FileCopyrightText: T. Jameson Little <t.jameson.little@gmail.com>
SPDX-FileCopyrightText: Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)
SPDX-FileCopyrightText: Sindre Sorhus
SPDX-FileCopyrightText: Shuhei Kagawa
SPDX-FileCopyrightText: Scott Cooper <scttcper@gmail.com>
SPDX-FileCopyrightText: Roman Shtylman <shtylman@gmail.com>
SPDX-FileCopyrightText: Rob Cresswell <robcresswell@pm.me>
SPDX-FileCopyrightText: Raynos <raynos2@gmail.com>
SPDX-FileCopyrightText: Perry Mitchell <perry@perrymitchell.net>
SPDX-FileCopyrightText: Paul Vorbach <paul@vorba.ch> (http://paul.vorba.ch)
SPDX-FileCopyrightText: Paul Vorbach <paul@vorb.de> (http://vorb.de)
SPDX-FileCopyrightText: OpenJS Foundation and other contributors
SPDX-FileCopyrightText: Olivier Scherrer <pode.fr@gmail.com>
SPDX-FileCopyrightText: Nick Frasser (https://nfrasser.com)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)
SPDX-FileCopyrightText: Max <max@nextcloud.com>
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Mathias Bynens
SPDX-FileCopyrightText: Mark <mark@remarkablemark.org>
SPDX-FileCopyrightText: Julian Gruber
SPDX-FileCopyrightText: Joyent
SPDX-FileCopyrightText: José F. Romaniello <jfromaniello@gmail.com> (http://joseoncode.com)
SPDX-FileCopyrightText: Jordan Humphreys <jordan@zurb.com>
SPDX-FileCopyrightText: Jordan Harband <ljharb@gmail.com>
SPDX-FileCopyrightText: Jordan Harband
SPDX-FileCopyrightText: John Hiesey
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: James Halliday
SPDX-FileCopyrightText: Jacob Clevenger<https://github.com/wheatjs>
SPDX-FileCopyrightText: Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)
@ -48,15 +66,30 @@ SPDX-FileCopyrightText: Dylan Piercey <pierceydylan@gmail.com>
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
SPDX-FileCopyrightText: David Clark
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Borys Serebrov
SPDX-FileCopyrightText: Ben Drucker
SPDX-FileCopyrightText: Arnout Kazemier
SPDX-FileCopyrightText: Antoni Andre <antoniandre.web@gmail.com>
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
SPDX-FileCopyrightText: Andrea Giammarchi
SPDX-FileCopyrightText: Amit Gupta (https://solothought.com)
SPDX-FileCopyrightText: Amit Gupta (https://amitkumargupta.work/)
SPDX-FileCopyrightText: @nextcloud/dialogs developers
This file is generated from multiple sources. Included packages:
- @ctrl/tinycolor
- version: 3.6.1
- license: MIT
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later
@ -69,8 +102,44 @@ This file is generated from multiple sources. Included packages:
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later
- @ckpack/vue-color
- version: 1.6.0
- license: MIT
- @vueuse/core
- version: 14.1.0
- license: MIT
- @nextcloud/vue
- version: 9.3.1
- license: AGPL-3.0-or-later
- @vueuse/shared
- version: 14.1.0
- license: MIT
- debounce
- version: 3.0.0
- license: MIT
- eventemitter3
- version: 5.0.1
- license: MIT
- p-queue
- version: 9.0.1
- license: MIT
- rehype-react
- version: 8.0.0
- license: MIT
- splitpanes
- version: 4.0.4
- license: MIT
- vue-router
- version: 4.6.4
- license: MIT
- vue-select
- version: 4.0.0-beta.6
- license: MIT
- vue
- version: 3.5.25
- license: MIT
- @nextcloud/dialogs
- version: 6.4.1
- version: 7.1.0
- license: AGPL-3.0-or-later
- semver
- version: 7.7.2
@ -87,15 +156,36 @@ This file is generated from multiple sources. Included packages:
- @nextcloud/logger
- version: 3.0.2
- license: GPL-3.0-or-later
- @nextcloud/paths
- version: 2.3.0
- license: GPL-3.0-or-later
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @nextcloud/sharing
- version: 0.3.0
- license: GPL-3.0-or-later
- @nextcloud/vue
- version: 8.34.0
- license: AGPL-3.0-or-later
- @ungap/structured-clone
- version: 1.3.0
- license: ISC
- @vue/devtools-api
- version: 6.6.4
- license: MIT
- @vue/reactivity
- version: 3.5.25
- license: MIT
- @vue/runtime-core
- version: 3.5.25
- license: MIT
- @vue/runtime-dom
- version: 3.5.25
- license: MIT
- @vue/shared
- version: 3.5.25
- license: MIT
- @vueuse/components
- version: 11.3.0
- license: MIT
@ -120,6 +210,9 @@ This file is generated from multiple sources. Included packages:
- base64-js
- version: 1.5.1
- license: MIT
- blurhash
- version: 2.0.5
- license: MIT
- brace-expansion
- version: 2.0.2
- license: MIT
@ -144,21 +237,36 @@ This file is generated from multiple sources. Included packages:
- charenc
- version: 0.0.2
- license: BSD-3-Clause
- comma-separated-tokens
- version: 2.0.3
- license: MIT
- crypt
- version: 0.0.2
- license: BSD-3-Clause
- css-loader
- version: 7.1.2
- license: MIT
- date-fns
- version: 4.1.0
- license: MIT
- decode-named-character-reference
- version: 1.2.0
- license: MIT
- define-data-property
- version: 1.1.4
- license: MIT
- devlop
- version: 1.1.0
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- dunder-proto
- version: 1.0.1
- license: MIT
- emoji-mart-vue-fast
- version: 15.0.5
- license: BSD-3-Clause
- es-define-property
- version: 1.0.1
- license: MIT
@ -171,9 +279,15 @@ This file is generated from multiple sources. Included packages:
- escape-html
- version: 1.0.3
- license: MIT
- estree-util-is-identifier-name
- version: 3.0.0
- license: MIT
- events
- version: 3.3.0
- license: MIT
- extend
- version: 3.0.2
- license: MIT
- floating-vue
- version: 1.0.0-beta.19
- license: MIT
@ -207,6 +321,18 @@ This file is generated from multiple sources. Included packages:
- hasown
- version: 2.0.2
- license: MIT
- hast-util-is-element
- version: 3.0.0
- license: MIT
- hast-util-whitespace
- version: 3.0.0
- license: MIT
- property-information
- version: 7.1.0
- license: MIT
- hast-util-to-jsx-runtime
- version: 2.3.6
- license: MIT
- hot-patcher
- version: 2.0.1
- license: MIT
@ -219,6 +345,9 @@ This file is generated from multiple sources. Included packages:
- inherits
- version: 2.0.4
- license: ISC
- is-absolute-url
- version: 4.0.1
- license: MIT
- is-arguments
- version: 1.2.0
- license: MIT
@ -237,15 +366,102 @@ This file is generated from multiple sources. Included packages:
- is-typed-array
- version: 1.1.15
- license: MIT
- jquery
- version: 3.7.1
- license: MIT
- layerr
- version: 3.0.0
- license: MIT
- linkifyjs
- version: 4.3.2
- license: MIT
- material-colors
- version: 1.2.6
- license: ISC
- math-intrinsics
- version: 1.1.0
- license: MIT
- md5
- version: 2.3.0
- license: BSD-3-Clause
- mdast-squeeze-paragraphs
- version: 6.0.0
- license: MIT
- escape-string-regexp
- version: 5.0.0
- license: MIT
- mdast-util-find-and-replace
- version: 3.0.2
- license: MIT
- mdast-util-from-markdown
- version: 2.0.2
- license: MIT
- mdast-util-newline-to-break
- version: 2.0.0
- license: MIT
- mdast-util-to-hast
- version: 13.2.1
- license: MIT
- mdast-util-to-string
- version: 4.0.0
- license: MIT
- micromark-core-commonmark
- version: 2.0.3
- license: MIT
- micromark-factory-destination
- version: 2.0.1
- license: MIT
- micromark-factory-label
- version: 2.0.1
- license: MIT
- micromark-factory-space
- version: 2.0.1
- license: MIT
- micromark-factory-title
- version: 2.0.1
- license: MIT
- micromark-factory-whitespace
- version: 2.0.1
- license: MIT
- micromark-util-character
- version: 2.1.1
- license: MIT
- micromark-util-chunked
- version: 2.0.1
- license: MIT
- micromark-util-classify-character
- version: 2.0.1
- license: MIT
- micromark-util-combine-extensions
- version: 2.0.1
- license: MIT
- micromark-util-decode-numeric-character-reference
- version: 2.0.2
- license: MIT
- micromark-util-decode-string
- version: 2.0.1
- license: MIT
- micromark-util-encode
- version: 2.0.1
- license: MIT
- micromark-util-html-tag-name
- version: 2.0.1
- license: MIT
- micromark-util-normalize-identifier
- version: 2.0.1
- license: MIT
- micromark-util-resolve-all
- version: 2.0.1
- license: MIT
- micromark-util-sanitize-uri
- version: 2.0.1
- license: MIT
- micromark-util-subtokenize
- version: 2.1.0
- license: MIT
- micromark
- version: 4.0.2
- license: MIT
- minimatch
- version: 9.0.5
- license: ISC
@ -261,15 +477,6 @@ This file is generated from multiple sources. Included packages:
- path-posix
- version: 1.0.0
- license: ISC
- inherits
- version: 2.0.3
- license: ISC
- util
- version: 0.10.4
- license: MIT
- path
- version: 0.12.7
- license: MIT
- pinia
- version: 2.3.1
- license: MIT
@ -288,6 +495,21 @@ This file is generated from multiple sources. Included packages:
- querystringify
- version: 2.2.0
- license: MIT
- rehype-external-links
- version: 3.0.0
- license: MIT
- remark-breaks
- version: 4.0.0
- license: MIT
- remark-parse
- version: 11.0.0
- license: MIT
- remark-rehype
- version: 11.1.2
- license: MIT
- remark-unlink-protocols
- version: 1.0.0
- license: MIT
- requires-port
- version: 1.0.0
- license: MIT
@ -312,6 +534,9 @@ This file is generated from multiple sources. Included packages:
- side-channel
- version: 1.1.0
- license: MIT
- space-separated-tokens
- version: 2.0.2
- license: MIT
- readable-stream
- version: 3.6.2
- license: MIT
@ -333,18 +558,45 @@ This file is generated from multiple sources. Included packages:
- style-loader
- version: 4.0.0
- license: MIT
- inline-style-parser
- version: 0.2.7
- license: MIT
- style-to-object
- version: 1.0.14
- license: MIT
- style-to-js
- version: 1.1.21
- license: MIT
- tabbable
- version: 6.3.0
- license: MIT
- toastify-js
- version: 1.12.0
- license: MIT
- tributejs
- version: 5.1.3
- license: MIT
- trim-lines
- version: 3.0.1
- license: MIT
- trough
- version: 2.2.0
- license: MIT
- unified
- version: 11.0.5
- license: MIT
- unist-builder
- version: 4.0.0
- license: MIT
- unist-util-is
- version: 6.0.0
- license: MIT
- unist-util-position
- version: 5.0.0
- license: MIT
- unist-util-stringify-position
- version: 4.0.0
- license: MIT
- unist-util-visit-parents
- version: 6.0.1
- license: MIT
@ -366,6 +618,12 @@ This file is generated from multiple sources. Included packages:
- util
- version: 0.12.5
- license: MIT
- vfile-message
- version: 4.0.3
- license: MIT
- vfile
- version: 6.0.3
- license: MIT
- vue-loader
- version: 15.11.1
- license: MIT

2
dist/3973-3973.js vendored Normal file

File diff suppressed because one or more lines are too long

441
dist/3973-3973.js.license vendored Normal file
View file

@ -0,0 +1,441 @@
SPDX-License-Identifier: MIT
SPDX-License-Identifier: ISC
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: string_decoder developers
SPDX-FileCopyrightText: rhysd <lin90162@yahoo.co.jp>
SPDX-FileCopyrightText: p-queue developers
SPDX-FileCopyrightText: omahlama
SPDX-FileCopyrightText: inline-style-parser developers
SPDX-FileCopyrightText: inherits developers
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: debounce developers
SPDX-FileCopyrightText: date-fns developers
SPDX-FileCopyrightText: chenkai
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: Varun A P
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)
SPDX-FileCopyrightText: T. Jameson Little <t.jameson.little@gmail.com>
SPDX-FileCopyrightText: Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)
SPDX-FileCopyrightText: Sindre Sorhus
SPDX-FileCopyrightText: Shuhei Kagawa
SPDX-FileCopyrightText: Scott Cooper <scttcper@gmail.com>
SPDX-FileCopyrightText: Roman Shtylman <shtylman@gmail.com>
SPDX-FileCopyrightText: OpenJS Foundation and other contributors
SPDX-FileCopyrightText: Nick Frasser (https://nfrasser.com)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Max <max@nextcloud.com>
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Mark <mark@remarkablemark.org>
SPDX-FileCopyrightText: Joyent
SPDX-FileCopyrightText: Jordan Humphreys <jordan@zurb.com>
SPDX-FileCopyrightText: Jonas Schade <derzade@gmail.com>
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: Guillaume Chau <guillaume.b.chau@gmail.com>
SPDX-FileCopyrightText: Guillaume Chau
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Feross Aboukhadijeh
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Eugene Sharygin <eush77@gmail.com>
SPDX-FileCopyrightText: Eric Norris (https://github.com/ericnorris)
SPDX-FileCopyrightText: Eduardo San Martin Morote
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
SPDX-FileCopyrightText: David Clark
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Borys Serebrov
SPDX-FileCopyrightText: Arnout Kazemier
SPDX-FileCopyrightText: Antoni Andre <antoniandre.web@gmail.com>
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
SPDX-FileCopyrightText: Andrea Giammarchi
SPDX-FileCopyrightText: Alkemics
SPDX-FileCopyrightText: @nextcloud/dialogs developers
This file is generated from multiple sources. Included packages:
- @ctrl/tinycolor
- version: 3.6.1
- license: MIT
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later
- @nextcloud/axios
- version: 2.5.2
- license: GPL-3.0-or-later
- @nextcloud/browser-storage
- version: 0.5.0
- license: GPL-3.0-or-later
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later
- @ckpack/vue-color
- version: 1.6.0
- license: MIT
- @vueuse/core
- version: 14.1.0
- license: MIT
- @nextcloud/vue
- version: 9.3.1
- license: AGPL-3.0-or-later
- @vueuse/shared
- version: 14.1.0
- license: MIT
- debounce
- version: 3.0.0
- license: MIT
- eventemitter3
- version: 5.0.1
- license: MIT
- p-queue
- version: 9.0.1
- license: MIT
- rehype-react
- version: 8.0.0
- license: MIT
- splitpanes
- version: 4.0.4
- license: MIT
- vue-router
- version: 4.6.4
- license: MIT
- vue-select
- version: 4.0.0-beta.6
- license: MIT
- vue
- version: 3.5.25
- license: MIT
- @nextcloud/dialogs
- version: 7.1.0
- license: AGPL-3.0-or-later
- semver
- version: 7.7.2
- license: ISC
- @nextcloud/event-bus
- version: 3.3.3
- license: GPL-3.0-or-later
- @nextcloud/initial-state
- version: 2.2.0
- license: GPL-3.0-or-later
- @nextcloud/files
- version: 3.12.0
- license: AGPL-3.0-or-later
- @nextcloud/initial-state
- version: 3.0.0
- license: GPL-3.0-or-later
- @nextcloud/l10n
- version: 3.4.1
- license: GPL-3.0-or-later
- @nextcloud/logger
- version: 3.0.2
- license: GPL-3.0-or-later
- @nextcloud/paths
- version: 2.3.0
- license: GPL-3.0-or-later
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @nextcloud/sharing
- version: 0.3.0
- license: GPL-3.0-or-later
- @nextcloud/vue
- version: 8.34.0
- license: AGPL-3.0-or-later
- @ungap/structured-clone
- version: 1.3.0
- license: ISC
- @vue/devtools-api
- version: 6.6.4
- license: MIT
- @vue/reactivity
- version: 3.5.25
- license: MIT
- @vue/runtime-core
- version: 3.5.25
- license: MIT
- @vue/runtime-dom
- version: 3.5.25
- license: MIT
- @vue/shared
- version: 3.5.25
- license: MIT
- @vueuse/core
- version: 11.3.0
- license: MIT
- @vueuse/shared
- version: 11.3.0
- license: MIT
- axios
- version: 1.12.2
- license: MIT
- base64-js
- version: 1.5.1
- license: MIT
- blurhash
- version: 2.0.5
- license: MIT
- buffer
- version: 5.7.1
- license: MIT
- cancelable-promise
- version: 4.3.1
- license: MIT
- comma-separated-tokens
- version: 2.0.3
- license: MIT
- css-loader
- version: 7.1.2
- license: MIT
- date-fns
- version: 4.1.0
- license: MIT
- decode-named-character-reference
- version: 1.2.0
- license: MIT
- devlop
- version: 1.1.0
- license: MIT
- dompurify
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- emoji-mart-vue-fast
- version: 15.0.5
- license: BSD-3-Clause
- escape-html
- version: 1.0.3
- license: MIT
- estree-util-is-identifier-name
- version: 3.0.0
- license: MIT
- extend
- version: 3.0.2
- license: MIT
- floating-vue
- version: 1.0.0-beta.19
- license: MIT
- focus-trap
- version: 7.6.6
- license: MIT
- hast-util-is-element
- version: 3.0.0
- license: MIT
- hast-util-whitespace
- version: 3.0.0
- license: MIT
- property-information
- version: 7.1.0
- license: MIT
- hast-util-to-jsx-runtime
- version: 2.3.6
- license: MIT
- ieee754
- version: 1.2.1
- license: BSD-3-Clause
- is-absolute-url
- version: 4.0.1
- license: MIT
- jquery
- version: 3.7.1
- license: MIT
- linkifyjs
- version: 4.3.2
- license: MIT
- material-colors
- version: 1.2.6
- license: ISC
- mdast-squeeze-paragraphs
- version: 6.0.0
- license: MIT
- escape-string-regexp
- version: 5.0.0
- license: MIT
- mdast-util-find-and-replace
- version: 3.0.2
- license: MIT
- mdast-util-from-markdown
- version: 2.0.2
- license: MIT
- mdast-util-newline-to-break
- version: 2.0.0
- license: MIT
- mdast-util-to-hast
- version: 13.2.1
- license: MIT
- mdast-util-to-string
- version: 4.0.0
- license: MIT
- micromark-core-commonmark
- version: 2.0.3
- license: MIT
- micromark-factory-destination
- version: 2.0.1
- license: MIT
- micromark-factory-label
- version: 2.0.1
- license: MIT
- micromark-factory-space
- version: 2.0.1
- license: MIT
- micromark-factory-title
- version: 2.0.1
- license: MIT
- micromark-factory-whitespace
- version: 2.0.1
- license: MIT
- micromark-util-character
- version: 2.1.1
- license: MIT
- micromark-util-chunked
- version: 2.0.1
- license: MIT
- micromark-util-classify-character
- version: 2.0.1
- license: MIT
- micromark-util-combine-extensions
- version: 2.0.1
- license: MIT
- micromark-util-decode-numeric-character-reference
- version: 2.0.2
- license: MIT
- micromark-util-decode-string
- version: 2.0.1
- license: MIT
- micromark-util-encode
- version: 2.0.1
- license: MIT
- micromark-util-html-tag-name
- version: 2.0.1
- license: MIT
- micromark-util-normalize-identifier
- version: 2.0.1
- license: MIT
- micromark-util-resolve-all
- version: 2.0.1
- license: MIT
- micromark-util-sanitize-uri
- version: 2.0.1
- license: MIT
- micromark-util-subtokenize
- version: 2.1.0
- license: MIT
- micromark
- version: 4.0.2
- license: MIT
- buffer
- version: 6.0.3
- license: MIT
- inherits
- version: 2.0.3
- license: ISC
- util
- version: 0.10.4
- license: MIT
- path
- version: 0.12.7
- license: MIT
- process
- version: 0.11.10
- license: MIT
- rehype-external-links
- version: 3.0.0
- license: MIT
- remark-breaks
- version: 4.0.0
- license: MIT
- remark-parse
- version: 11.0.0
- license: MIT
- remark-rehype
- version: 11.1.2
- license: MIT
- remark-unlink-protocols
- version: 1.0.0
- license: MIT
- safe-buffer
- version: 5.2.1
- license: MIT
- space-separated-tokens
- version: 2.0.2
- license: MIT
- string_decoder
- version: 1.3.0
- license: MIT
- striptags
- version: 3.2.0
- license: MIT
- style-loader
- version: 4.0.0
- license: MIT
- inline-style-parser
- version: 0.2.7
- license: MIT
- style-to-object
- version: 1.0.14
- license: MIT
- style-to-js
- version: 1.1.21
- license: MIT
- tabbable
- version: 6.3.0
- license: MIT
- toastify-js
- version: 1.12.0
- license: MIT
- tributejs
- version: 5.1.3
- license: MIT
- trim-lines
- version: 3.0.1
- license: MIT
- trough
- version: 2.2.0
- license: MIT
- typescript-event-target
- version: 1.1.1
- license: MIT
- unified
- version: 11.0.5
- license: MIT
- unist-builder
- version: 4.0.0
- license: MIT
- unist-util-is
- version: 6.0.0
- license: MIT
- unist-util-position
- version: 5.0.0
- license: MIT
- unist-util-stringify-position
- version: 4.0.0
- license: MIT
- unist-util-visit-parents
- version: 6.0.1
- license: MIT
- unist-util-visit
- version: 5.0.0
- license: MIT
- vfile-message
- version: 4.0.3
- license: MIT
- vfile
- version: 6.0.3
- license: MIT
- vue-loader
- version: 15.11.1
- license: MIT
- vue
- version: 2.7.16
- license: MIT
- nextcloud
- version: 1.0.0
- license: AGPL-3.0-or-later

1
dist/3973-3973.js.map vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/3973-3973.js.map.license vendored Symbolic link
View file

@ -0,0 +1 @@
3973-3973.js.license

4
dist/4040-4040.js vendored
View file

@ -1,2 +1,2 @@
"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[4040],{74040:(e,t,a)=>{a.r(t),a.d(t,{default:()=>u});var s=a(85471),l=a(53334),o=a(94219),r=a(31133),n=a(16044),i=a(82182);const d=(0,s.pM)({name:"CredentialsDialog",components:{NcDialog:o.A,NcNoteCard:r.A,NcTextField:i.A,NcPasswordField:n.A},setup:()=>({t:l.t}),data:()=>({login:"",password:""}),computed:{dialogButtons:()=>[{label:(0,l.t)("files_external","Confirm"),type:"primary",nativeType:"submit"}]}}),u=(0,a(14486).A)(d,function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcDialog",{staticClass:"external-storage-auth",attrs:{buttons:e.dialogButtons,"close-on-click-outside":"","data-cy-external-storage-auth":"","is-form":"",name:e.t("files_external","Storage credentials"),"out-transition":""},on:{submit:function(t){return e.$emit("close",{login:e.login,password:e.password})},"update:open":function(t){return e.$emit("close")}}},[t("NcNoteCard",{staticClass:"external-storage-auth__header",attrs:{text:e.t("files_external","To access the storage, you need to provide the authentication credentials."),type:"info"}}),e._v(" "),t("NcTextField",{ref:"login",staticClass:"external-storage-auth__login",attrs:{"data-cy-external-storage-auth-dialog-login":"",label:e.t("files_external","Login"),placeholder:e.t("files_external","Enter the storage login"),minlength:"2",name:"login",required:"",value:e.login},on:{"update:value":function(t){e.login=t}}}),e._v(" "),t("NcPasswordField",{ref:"password",staticClass:"external-storage-auth__password",attrs:{"data-cy-external-storage-auth-dialog-password":"",label:e.t("files_external","Password"),placeholder:e.t("files_external","Enter the storage password"),name:"password",required:"",value:e.password},on:{"update:value":function(t){e.password=t}}})],1)},[],!1,null,null,null).exports}}]);
//# sourceMappingURL=4040-4040.js.map?v=76f0b95143051b1bb45c
"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[4040],{74040:(e,t,a)=>{a.r(t),a.d(t,{default:()=>u});var s=a(85471),l=a(53334),o=a(94219),r=a(31133),n=a(93663),i=a(82182);const d=(0,s.pM)({name:"CredentialsDialog",components:{NcDialog:o.A,NcNoteCard:r.A,NcTextField:i.A,NcPasswordField:n.A},setup:()=>({t:l.t}),data:()=>({login:"",password:""}),computed:{dialogButtons:()=>[{label:(0,l.t)("files_external","Confirm"),type:"primary",nativeType:"submit"}]}}),u=(0,a(14486).A)(d,function(){var e=this,t=e._self._c;return e._self._setupProxy,t("NcDialog",{staticClass:"external-storage-auth",attrs:{buttons:e.dialogButtons,"close-on-click-outside":"","data-cy-external-storage-auth":"","is-form":"",name:e.t("files_external","Storage credentials"),"out-transition":""},on:{submit:function(t){return e.$emit("close",{login:e.login,password:e.password})},"update:open":function(t){return e.$emit("close")}}},[t("NcNoteCard",{staticClass:"external-storage-auth__header",attrs:{text:e.t("files_external","To access the storage, you need to provide the authentication credentials."),type:"info"}}),e._v(" "),t("NcTextField",{ref:"login",staticClass:"external-storage-auth__login",attrs:{"data-cy-external-storage-auth-dialog-login":"",label:e.t("files_external","Login"),placeholder:e.t("files_external","Enter the storage login"),minlength:"2",name:"login",required:"",value:e.login},on:{"update:value":function(t){e.login=t}}}),e._v(" "),t("NcPasswordField",{ref:"password",staticClass:"external-storage-auth__password",attrs:{"data-cy-external-storage-auth-dialog-password":"",label:e.t("files_external","Password"),placeholder:e.t("files_external","Enter the storage password"),name:"password",required:"",value:e.password},on:{"update:value":function(t){e.password=t}}})],1)},[],!1,null,null,null).exports}}]);
//# sourceMappingURL=4040-4040.js.map?v=72c40b5d2a149b264e25

View file

@ -71,7 +71,7 @@ This file is generated from multiple sources. Included packages:
- version: 2.2.0
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3

View file

@ -1 +1 @@
{"version":3,"file":"4040-4040.js?v=76f0b95143051b1bb45c","mappings":"iJAAA,I,kEAMA,MCNiQ,GDMlPA,EAAAA,EAAAA,IAAgB,CAC3BC,KAAM,oBACNC,WAAY,CACRC,SAAQ,IACRC,WAAU,IACVC,YAAW,IACXC,gBAAeA,EAAAA,GAEnBC,MAAKA,KACM,CACHC,EAACA,EAAAA,IAGTC,KAAIA,KACO,CACHC,MAAO,GACPC,SAAU,KAGlBC,SAAU,CACNC,cAAaA,IACF,CAAC,CACAC,OAAON,EAAAA,EAAAA,GAAE,iBAAkB,WAC3BO,KAAM,UACNC,WAAY,cEZhC,GAXgB,E,SAAA,GACd,EFRW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAMC,YAAmBF,EAAG,WAAW,CAACG,YAAY,wBAAwBC,MAAM,CAAC,QAAUN,EAAIJ,cAAc,yBAAyB,GAAG,gCAAgC,GAAG,UAAU,GAAG,KAAOI,EAAIT,EAAE,iBAAkB,uBAAuB,iBAAiB,IAAIgB,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOR,EAAIS,MAAM,QAAS,CAAChB,MAAOO,EAAIP,MAAOC,SAAUM,EAAIN,UAAU,EAAE,cAAc,SAASc,GAAQ,OAAOR,EAAIS,MAAM,QAAQ,IAAI,CAACP,EAAG,aAAa,CAACG,YAAY,gCAAgCC,MAAM,CAAC,KAAON,EAAIT,EAAE,iBAAkB,8EAA8E,KAAO,UAAUS,EAAIU,GAAG,KAAKR,EAAG,cAAc,CAACS,IAAI,QAAQN,YAAY,+BAA+BC,MAAM,CAAC,6CAA6C,GAAG,MAAQN,EAAIT,EAAE,iBAAkB,SAAS,YAAcS,EAAIT,EAAE,iBAAkB,2BAA2B,UAAY,IAAI,KAAO,QAAQ,SAAW,GAAG,MAAQS,EAAIP,OAAOc,GAAG,CAAC,eAAe,SAASC,GAAQR,EAAIP,MAAMe,CAAM,KAAKR,EAAIU,GAAG,KAAKR,EAAG,kBAAkB,CAACS,IAAI,WAAWN,YAAY,kCAAkCC,MAAM,CAAC,gDAAgD,GAAG,MAAQN,EAAIT,EAAE,iBAAkB,YAAY,YAAcS,EAAIT,EAAE,iBAAkB,8BAA8B,KAAO,WAAW,SAAW,GAAG,MAAQS,EAAIN,UAAUa,GAAG,CAAC,eAAe,SAASC,GAAQR,EAAIN,SAASc,CAAM,MAAM,EAC55C,EACsB,IESpB,EACA,KACA,KACA,M","sources":["webpack:///nextcloud/apps/files_external/src/views/CredentialsDialog.vue","webpack:///nextcloud/apps/files_external/src/views/CredentialsDialog.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files_external/src/views/CredentialsDialog.vue?7767"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcDialog',{staticClass:\"external-storage-auth\",attrs:{\"buttons\":_vm.dialogButtons,\"close-on-click-outside\":\"\",\"data-cy-external-storage-auth\":\"\",\"is-form\":\"\",\"name\":_vm.t('files_external', 'Storage credentials'),\"out-transition\":\"\"},on:{\"submit\":function($event){return _vm.$emit('close', {login: _vm.login, password: _vm.password})},\"update:open\":function($event){return _vm.$emit('close')}}},[_c('NcNoteCard',{staticClass:\"external-storage-auth__header\",attrs:{\"text\":_vm.t('files_external', 'To access the storage, you need to provide the authentication credentials.'),\"type\":\"info\"}}),_vm._v(\" \"),_c('NcTextField',{ref:\"login\",staticClass:\"external-storage-auth__login\",attrs:{\"data-cy-external-storage-auth-dialog-login\":\"\",\"label\":_vm.t('files_external', 'Login'),\"placeholder\":_vm.t('files_external', 'Enter the storage login'),\"minlength\":\"2\",\"name\":\"login\",\"required\":\"\",\"value\":_vm.login},on:{\"update:value\":function($event){_vm.login=$event}}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"external-storage-auth__password\",attrs:{\"data-cy-external-storage-auth-dialog-password\":\"\",\"label\":_vm.t('files_external', 'Password'),\"placeholder\":_vm.t('files_external', 'Enter the storage password'),\"name\":\"password\",\"required\":\"\",\"value\":_vm.password},on:{\"update:value\":function($event){_vm.password=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CredentialsDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CredentialsDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CredentialsDialog.vue?vue&type=template&id=79894f20\"\nimport script from \"./CredentialsDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./CredentialsDialog.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"names":["defineComponent","name","components","NcDialog","NcNoteCard","NcTextField","NcPasswordField","setup","t","data","login","password","computed","dialogButtons","label","type","nativeType","_vm","this","_c","_self","_setupProxy","staticClass","attrs","on","$event","$emit","_v","ref"],"ignoreList":[],"sourceRoot":""}
{"version":3,"file":"4040-4040.js?v=72c40b5d2a149b264e25","mappings":"iJAAA,I,kEAMA,MCNiQ,GDMlPA,EAAAA,EAAAA,IAAgB,CAC3BC,KAAM,oBACNC,WAAY,CACRC,SAAQ,IACRC,WAAU,IACVC,YAAW,IACXC,gBAAeA,EAAAA,GAEnBC,MAAKA,KACM,CACHC,EAACA,EAAAA,IAGTC,KAAIA,KACO,CACHC,MAAO,GACPC,SAAU,KAGlBC,SAAU,CACNC,cAAaA,IACF,CAAC,CACAC,OAAON,EAAAA,EAAAA,GAAE,iBAAkB,WAC3BO,KAAM,UACNC,WAAY,cEZhC,GAXgB,E,SAAA,GACd,EFRW,WAAkB,IAAIC,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAgC,OAAtBF,EAAIG,MAAMC,YAAmBF,EAAG,WAAW,CAACG,YAAY,wBAAwBC,MAAM,CAAC,QAAUN,EAAIJ,cAAc,yBAAyB,GAAG,gCAAgC,GAAG,UAAU,GAAG,KAAOI,EAAIT,EAAE,iBAAkB,uBAAuB,iBAAiB,IAAIgB,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOR,EAAIS,MAAM,QAAS,CAAChB,MAAOO,EAAIP,MAAOC,SAAUM,EAAIN,UAAU,EAAE,cAAc,SAASc,GAAQ,OAAOR,EAAIS,MAAM,QAAQ,IAAI,CAACP,EAAG,aAAa,CAACG,YAAY,gCAAgCC,MAAM,CAAC,KAAON,EAAIT,EAAE,iBAAkB,8EAA8E,KAAO,UAAUS,EAAIU,GAAG,KAAKR,EAAG,cAAc,CAACS,IAAI,QAAQN,YAAY,+BAA+BC,MAAM,CAAC,6CAA6C,GAAG,MAAQN,EAAIT,EAAE,iBAAkB,SAAS,YAAcS,EAAIT,EAAE,iBAAkB,2BAA2B,UAAY,IAAI,KAAO,QAAQ,SAAW,GAAG,MAAQS,EAAIP,OAAOc,GAAG,CAAC,eAAe,SAASC,GAAQR,EAAIP,MAAMe,CAAM,KAAKR,EAAIU,GAAG,KAAKR,EAAG,kBAAkB,CAACS,IAAI,WAAWN,YAAY,kCAAkCC,MAAM,CAAC,gDAAgD,GAAG,MAAQN,EAAIT,EAAE,iBAAkB,YAAY,YAAcS,EAAIT,EAAE,iBAAkB,8BAA8B,KAAO,WAAW,SAAW,GAAG,MAAQS,EAAIN,UAAUa,GAAG,CAAC,eAAe,SAASC,GAAQR,EAAIN,SAASc,CAAM,MAAM,EAC55C,EACsB,IESpB,EACA,KACA,KACA,M","sources":["webpack:///nextcloud/apps/files_external/src/views/CredentialsDialog.vue","webpack:///nextcloud/apps/files_external/src/views/CredentialsDialog.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files_external/src/views/CredentialsDialog.vue?7767"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcDialog',{staticClass:\"external-storage-auth\",attrs:{\"buttons\":_vm.dialogButtons,\"close-on-click-outside\":\"\",\"data-cy-external-storage-auth\":\"\",\"is-form\":\"\",\"name\":_vm.t('files_external', 'Storage credentials'),\"out-transition\":\"\"},on:{\"submit\":function($event){return _vm.$emit('close', {login: _vm.login, password: _vm.password})},\"update:open\":function($event){return _vm.$emit('close')}}},[_c('NcNoteCard',{staticClass:\"external-storage-auth__header\",attrs:{\"text\":_vm.t('files_external', 'To access the storage, you need to provide the authentication credentials.'),\"type\":\"info\"}}),_vm._v(\" \"),_c('NcTextField',{ref:\"login\",staticClass:\"external-storage-auth__login\",attrs:{\"data-cy-external-storage-auth-dialog-login\":\"\",\"label\":_vm.t('files_external', 'Login'),\"placeholder\":_vm.t('files_external', 'Enter the storage login'),\"minlength\":\"2\",\"name\":\"login\",\"required\":\"\",\"value\":_vm.login},on:{\"update:value\":function($event){_vm.login=$event}}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",staticClass:\"external-storage-auth__password\",attrs:{\"data-cy-external-storage-auth-dialog-password\":\"\",\"label\":_vm.t('files_external', 'Password'),\"placeholder\":_vm.t('files_external', 'Enter the storage password'),\"name\":\"password\",\"required\":\"\",\"value\":_vm.password},on:{\"update:value\":function($event){_vm.password=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CredentialsDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CredentialsDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CredentialsDialog.vue?vue&type=template&id=79894f20\"\nimport script from \"./CredentialsDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./CredentialsDialog.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"names":["defineComponent","name","components","NcDialog","NcNoteCard","NcTextField","NcPasswordField","setup","t","data","login","password","computed","dialogButtons","label","type","nativeType","_vm","this","_c","_self","_setupProxy","staticClass","attrs","on","$event","$emit","_v","ref"],"ignoreList":[],"sourceRoot":""}

2
dist/4325-4325.js vendored Normal file

File diff suppressed because one or more lines are too long

151
dist/4325-4325.js.license vendored Normal file
View file

@ -0,0 +1,151 @@
SPDX-License-Identifier: MIT
SPDX-License-Identifier: ISC
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: string_decoder developers
SPDX-FileCopyrightText: p-queue developers
SPDX-FileCopyrightText: inherits developers
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: T. Jameson Little <t.jameson.little@gmail.com>
SPDX-FileCopyrightText: Roman Shtylman <shtylman@gmail.com>
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Joyent
SPDX-FileCopyrightText: Jonas Schade <derzade@gmail.com>
SPDX-FileCopyrightText: Guillaume Chau
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Feross Aboukhadijeh
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Eduardo San Martin Morote
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Arnout Kazemier
SPDX-FileCopyrightText: Alkemics
SPDX-FileCopyrightText: @nextcloud/dialogs developers
This file is generated from multiple sources. Included packages:
- @mdi/js
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later
- @nextcloud/browser-storage
- version: 0.5.0
- license: GPL-3.0-or-later
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later
- @nextcloud/vue
- version: 9.3.1
- license: AGPL-3.0-or-later
- eventemitter3
- version: 5.0.1
- license: MIT
- p-queue
- version: 9.0.1
- license: MIT
- vue-router
- version: 4.6.4
- license: MIT
- vue
- version: 3.5.25
- license: MIT
- @nextcloud/dialogs
- version: 7.1.0
- license: AGPL-3.0-or-later
- semver
- version: 7.7.2
- license: ISC
- @nextcloud/event-bus
- version: 3.3.3
- license: GPL-3.0-or-later
- @nextcloud/initial-state
- version: 2.2.0
- license: GPL-3.0-or-later
- @nextcloud/files
- version: 3.12.0
- license: AGPL-3.0-or-later
- @nextcloud/initial-state
- version: 3.0.0
- license: GPL-3.0-or-later
- @nextcloud/l10n
- version: 3.4.1
- license: GPL-3.0-or-later
- @nextcloud/logger
- version: 3.0.2
- license: GPL-3.0-or-later
- @nextcloud/paths
- version: 2.3.0
- license: GPL-3.0-or-later
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @vue/devtools-api
- version: 6.6.4
- license: MIT
- @vue/reactivity
- version: 3.5.25
- license: MIT
- @vue/runtime-core
- version: 3.5.25
- license: MIT
- @vue/runtime-dom
- version: 3.5.25
- license: MIT
- @vue/shared
- version: 3.5.25
- license: MIT
- base64-js
- version: 1.5.1
- license: MIT
- buffer
- version: 5.7.1
- license: MIT
- cancelable-promise
- version: 4.3.1
- license: MIT
- css-loader
- version: 7.1.2
- license: MIT
- dompurify
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3
- license: MIT
- ieee754
- version: 1.2.1
- license: BSD-3-Clause
- buffer
- version: 6.0.3
- license: MIT
- inherits
- version: 2.0.3
- license: ISC
- util
- version: 0.10.4
- license: MIT
- path
- version: 0.12.7
- license: MIT
- process
- version: 0.11.10
- license: MIT
- safe-buffer
- version: 5.2.1
- license: MIT
- string_decoder
- version: 1.3.0
- license: MIT
- style-loader
- version: 4.0.0
- license: MIT
- typescript-event-target
- version: 1.1.1
- license: MIT

1
dist/4325-4325.js.map vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/4325-4325.js.map.license vendored Symbolic link
View file

@ -0,0 +1 @@
4325-4325.js.license

View file

@ -41,6 +41,9 @@ This file is generated from multiple sources. Included packages:
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
@ -135,7 +138,7 @@ This file is generated from multiple sources. Included packages:
- version: 1.1.0
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3

View file

@ -57,7 +57,7 @@ This file is generated from multiple sources. Included packages:
- version: 7.1.2
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3

View file

@ -65,7 +65,7 @@ This file is generated from multiple sources. Included packages:
- version: 7.1.2
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3

4
dist/5258-5258.js vendored
View file

@ -1,2 +1,2 @@
"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[5258],{16343:(e,t,n)=>{n.d(t,{a:()=>i,e:()=>r});var c=n(80474),u=n(43850),a=n(24715);const o=(0,c.c0)("nextcloud-vue").persist(!0).build();let l;function r(e,t=10){l||(l=new u.EmojiIndex(a));const n=function(){const e=Number.parseInt(o.getItem("NcEmojiPicker::currentSkinTone")??"1");return Math.min(Math.max(e,1),6)}();let c;return e?(c=l.search(`:${e}`,t),c.length<t&&(c=c.concat(l.search(e,t-c.length)))):c=u.frequently.get(t).map(e=>l.emoji(e))||[],c.map(e=>e.getSkin(n))}function i(e){u.frequently.add(e)}},95528:(e,t,n)=>{n.r(t),n.d(t,{NcAutoCompleteResult:()=>u.N,NcMentionBubble:()=>c.N,default:()=>u.a});var c=n(36079),u=n(18853)}}]);
//# sourceMappingURL=5258-5258.js.map?v=91802aaffcdca641effb
"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[5258],{16343:(e,t,n)=>{n.d(t,{a:()=>i,e:()=>r});var c=n(80474),u=n(43850),a=n(24715);const o=(0,c.c0)("nextcloud-vue").persist(!0).build();let l;function r(e,t=10){l||(l=new u.EmojiIndex(a));const n=function(){const e=Number.parseInt(o.getItem("NcEmojiPicker::currentSkinTone")??"1");return Math.min(Math.max(e,1),6)}();let c;return e?(c=l.search(`:${e}`,t),c.length<t&&(c=c.concat(l.search(e,t-c.length)))):c=u.frequently.get(t).map(e=>l.emoji(e))||[],c.map(e=>e.getSkin(n))}function i(e){u.frequently.add(e)}},95528:(e,t,n)=>{n.r(t),n.d(t,{NcAutoCompleteResult:()=>u.N,NcMentionBubble:()=>c.N,default:()=>u.a});var c=n(36079),u=n(37886)}}]);
//# sourceMappingURL=5258-5258.js.map?v=1aff87f2e3b819164707

View file

@ -25,6 +25,7 @@ SPDX-FileCopyrightText: Max <max@nextcloud.com>
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Mark <mark@remarkablemark.org>
SPDX-FileCopyrightText: Mapbox
SPDX-FileCopyrightText: Jordan Humphreys <jordan@zurb.com>
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: Jacob Clevenger<https://github.com/wheatjs>
SPDX-FileCopyrightText: Guillaume Chau <guillaume.b.chau@gmail.com>
@ -45,6 +46,9 @@ This file is generated from multiple sources. Included packages:
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
@ -145,7 +149,7 @@ This file is generated from multiple sources. Included packages:
- version: 1.1.0
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- emoji-mart-vue-fast
- version: 15.0.5
@ -309,6 +313,9 @@ This file is generated from multiple sources. Included packages:
- tabbable
- version: 6.3.0
- license: MIT
- tributejs
- version: 5.1.3
- license: MIT
- trim-lines
- version: 3.0.1
- license: MIT

View file

@ -1 +1 @@
{"version":3,"file":"5258-5258.js?v=91802aaffcdca641effb","mappings":"iLAGA,MAAMA,GAAU,QAAW,iBAAiBC,SAAQ,GAAMC,QAC1D,IAAIC,EAUJ,SAASC,EAAYC,EAAOC,EAAa,IAClCH,IACHA,EAAa,IAAI,EAAAI,WAAW,IAE9B,MAAMC,EAeR,WACE,MAAMC,EAAWC,OAAOC,SAASX,EAAQY,QAAQ,mCAAqC,KACtF,OAAOC,KAAKC,IACVD,KAAKE,IACHN,EACA,GAGF,EAGJ,CA1B0BO,GACxB,IAAIC,EASJ,OARIZ,GACFY,EAAUd,EAAWe,OAAO,IAAIb,IAASC,GACrCW,EAAQE,OAASb,IACnBW,EAAUA,EAAQG,OAAOjB,EAAWe,OAAOb,EAAOC,EAAaW,EAAQE,WAGzEF,EAAU,EAAAI,WAAWC,IAAIhB,GAAYiB,IAAKC,GAAOrB,EAAWsB,MAAMD,KAAQ,GAErEP,EAAQM,IAAKE,GAAUA,EAAMC,QAAQlB,GAC9C,CACA,SAASmB,EAAeC,GACtB,EAAAP,WAAWQ,IAAID,EACjB,C","sources":["webpack:///nextcloud/node_modules/@nextcloud/vue/dist/chunks/emoji-BY_D0V5K.mjs"],"sourcesContent":["import { getBuilder } from \"@nextcloud/browser-storage\";\nimport { EmojiIndex, frequently } from \"emoji-mart-vue-fast\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nconst storage = getBuilder(\"nextcloud-vue\").persist(true).build();\nlet emojiIndex;\nvar EmojiSkinTone = /* @__PURE__ */ ((EmojiSkinTone2) => {\n EmojiSkinTone2[EmojiSkinTone2[\"Neutral\"] = 1] = \"Neutral\";\n EmojiSkinTone2[EmojiSkinTone2[\"Light\"] = 2] = \"Light\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumLight\"] = 3] = \"MediumLight\";\n EmojiSkinTone2[EmojiSkinTone2[\"Medium\"] = 4] = \"Medium\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumDark\"] = 5] = \"MediumDark\";\n EmojiSkinTone2[EmojiSkinTone2[\"Dark\"] = 6] = \"Dark\";\n return EmojiSkinTone2;\n})(EmojiSkinTone || {});\nfunction emojiSearch(query, maxResults = 10) {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n const currentSkinTone = getCurrentSkinTone();\n let results;\n if (query) {\n results = emojiIndex.search(`:${query}`, maxResults);\n if (results.length < maxResults) {\n results = results.concat(emojiIndex.search(query, maxResults - results.length));\n }\n } else {\n results = frequently.get(maxResults).map((id) => emojiIndex.emoji(id)) || [];\n }\n return results.map((emoji) => emoji.getSkin(currentSkinTone));\n}\nfunction emojiAddRecent(emojiData) {\n frequently.add(emojiData);\n}\nfunction getCurrentSkinTone() {\n const skinTone = Number.parseInt(storage.getItem(\"NcEmojiPicker::currentSkinTone\") ?? \"1\");\n return Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n}\nfunction setCurrentSkinTone(skinTone) {\n skinTone = Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n storage.setItem(\"NcEmojiPicker::currentSkinTone\", skinTone.toString());\n}\nexport {\n EmojiSkinTone as E,\n emojiAddRecent as a,\n emojiSearch as e,\n getCurrentSkinTone as g,\n setCurrentSkinTone as s\n};\n//# sourceMappingURL=emoji-BY_D0V5K.mjs.map\n"],"names":["storage","persist","build","emojiIndex","emojiSearch","query","maxResults","EmojiIndex","currentSkinTone","skinTone","Number","parseInt","getItem","Math","min","max","getCurrentSkinTone","results","search","length","concat","frequently","get","map","id","emoji","getSkin","emojiAddRecent","emojiData","add"],"ignoreList":[],"sourceRoot":""}
{"version":3,"file":"5258-5258.js?v=1aff87f2e3b819164707","mappings":"iLAGA,MAAMA,GAAU,QAAW,iBAAiBC,SAAQ,GAAMC,QAC1D,IAAIC,EAUJ,SAASC,EAAYC,EAAOC,EAAa,IAClCH,IACHA,EAAa,IAAI,EAAAI,WAAW,IAE9B,MAAMC,EAeR,WACE,MAAMC,EAAWC,OAAOC,SAASX,EAAQY,QAAQ,mCAAqC,KACtF,OAAOC,KAAKC,IACVD,KAAKE,IACHN,EACA,GAGF,EAGJ,CA1B0BO,GACxB,IAAIC,EASJ,OARIZ,GACFY,EAAUd,EAAWe,OAAO,IAAIb,IAASC,GACrCW,EAAQE,OAASb,IACnBW,EAAUA,EAAQG,OAAOjB,EAAWe,OAAOb,EAAOC,EAAaW,EAAQE,WAGzEF,EAAU,EAAAI,WAAWC,IAAIhB,GAAYiB,IAAKC,GAAOrB,EAAWsB,MAAMD,KAAQ,GAErEP,EAAQM,IAAKE,GAAUA,EAAMC,QAAQlB,GAC9C,CACA,SAASmB,EAAeC,GACtB,EAAAP,WAAWQ,IAAID,EACjB,C","sources":["webpack:///nextcloud/node_modules/@nextcloud/vue/dist/chunks/emoji-BY_D0V5K.mjs"],"sourcesContent":["import { getBuilder } from \"@nextcloud/browser-storage\";\nimport { EmojiIndex, frequently } from \"emoji-mart-vue-fast\";\nimport data from \"emoji-mart-vue-fast/data/all.json\";\nconst storage = getBuilder(\"nextcloud-vue\").persist(true).build();\nlet emojiIndex;\nvar EmojiSkinTone = /* @__PURE__ */ ((EmojiSkinTone2) => {\n EmojiSkinTone2[EmojiSkinTone2[\"Neutral\"] = 1] = \"Neutral\";\n EmojiSkinTone2[EmojiSkinTone2[\"Light\"] = 2] = \"Light\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumLight\"] = 3] = \"MediumLight\";\n EmojiSkinTone2[EmojiSkinTone2[\"Medium\"] = 4] = \"Medium\";\n EmojiSkinTone2[EmojiSkinTone2[\"MediumDark\"] = 5] = \"MediumDark\";\n EmojiSkinTone2[EmojiSkinTone2[\"Dark\"] = 6] = \"Dark\";\n return EmojiSkinTone2;\n})(EmojiSkinTone || {});\nfunction emojiSearch(query, maxResults = 10) {\n if (!emojiIndex) {\n emojiIndex = new EmojiIndex(data);\n }\n const currentSkinTone = getCurrentSkinTone();\n let results;\n if (query) {\n results = emojiIndex.search(`:${query}`, maxResults);\n if (results.length < maxResults) {\n results = results.concat(emojiIndex.search(query, maxResults - results.length));\n }\n } else {\n results = frequently.get(maxResults).map((id) => emojiIndex.emoji(id)) || [];\n }\n return results.map((emoji) => emoji.getSkin(currentSkinTone));\n}\nfunction emojiAddRecent(emojiData) {\n frequently.add(emojiData);\n}\nfunction getCurrentSkinTone() {\n const skinTone = Number.parseInt(storage.getItem(\"NcEmojiPicker::currentSkinTone\") ?? \"1\");\n return Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n}\nfunction setCurrentSkinTone(skinTone) {\n skinTone = Math.min(\n Math.max(\n skinTone,\n 1\n /* Neutral */\n ),\n 6\n /* Dark */\n );\n storage.setItem(\"NcEmojiPicker::currentSkinTone\", skinTone.toString());\n}\nexport {\n EmojiSkinTone as E,\n emojiAddRecent as a,\n emojiSearch as e,\n getCurrentSkinTone as g,\n setCurrentSkinTone as s\n};\n//# sourceMappingURL=emoji-BY_D0V5K.mjs.map\n"],"names":["storage","persist","build","emojiIndex","emojiSearch","query","maxResults","EmojiIndex","currentSkinTone","skinTone","Number","parseInt","getItem","Math","min","max","getCurrentSkinTone","results","search","length","concat","frequently","get","map","id","emoji","getSkin","emojiAddRecent","emojiData","add"],"ignoreList":[],"sourceRoot":""}

2
dist/5814-5814.js vendored Normal file

File diff suppressed because one or more lines are too long

433
dist/5814-5814.js.license vendored Normal file
View file

@ -0,0 +1,433 @@
SPDX-License-Identifier: MIT
SPDX-License-Identifier: ISC
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: string_decoder developers
SPDX-FileCopyrightText: rhysd <lin90162@yahoo.co.jp>
SPDX-FileCopyrightText: p-queue developers
SPDX-FileCopyrightText: omahlama
SPDX-FileCopyrightText: inline-style-parser developers
SPDX-FileCopyrightText: inherits developers
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: debounce developers
SPDX-FileCopyrightText: date-fns developers
SPDX-FileCopyrightText: chenkai
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: Varun A P
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)
SPDX-FileCopyrightText: T. Jameson Little <t.jameson.little@gmail.com>
SPDX-FileCopyrightText: Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)
SPDX-FileCopyrightText: Sindre Sorhus
SPDX-FileCopyrightText: Shuhei Kagawa
SPDX-FileCopyrightText: Scott Cooper <scttcper@gmail.com>
SPDX-FileCopyrightText: Roman Shtylman <shtylman@gmail.com>
SPDX-FileCopyrightText: OpenJS Foundation and other contributors
SPDX-FileCopyrightText: Nick Frasser (https://nfrasser.com)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Max <max@nextcloud.com>
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Mark <mark@remarkablemark.org>
SPDX-FileCopyrightText: Joyent
SPDX-FileCopyrightText: Jordan Humphreys <jordan@zurb.com>
SPDX-FileCopyrightText: Jonas Schade <derzade@gmail.com>
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: Guillaume Chau
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Feross Aboukhadijeh
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Eugene Sharygin <eush77@gmail.com>
SPDX-FileCopyrightText: Eric Norris (https://github.com/ericnorris)
SPDX-FileCopyrightText: Eduardo San Martin Morote
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
SPDX-FileCopyrightText: David Clark
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Borys Serebrov
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Arnout Kazemier
SPDX-FileCopyrightText: Antoni Andre <antoniandre.web@gmail.com>
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
SPDX-FileCopyrightText: Andrea Giammarchi
SPDX-FileCopyrightText: Alkemics
SPDX-FileCopyrightText: @nextcloud/dialogs developers
This file is generated from multiple sources. Included packages:
- @ctrl/tinycolor
- version: 3.6.1
- license: MIT
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @mdi/js
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later
- @nextcloud/axios
- version: 2.5.2
- license: GPL-3.0-or-later
- @nextcloud/browser-storage
- version: 0.5.0
- license: GPL-3.0-or-later
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later
- @ckpack/vue-color
- version: 1.6.0
- license: MIT
- @vueuse/core
- version: 14.1.0
- license: MIT
- @nextcloud/vue
- version: 9.3.1
- license: AGPL-3.0-or-later
- @vueuse/shared
- version: 13.9.0
- license: MIT
- @vueuse/core
- version: 13.9.0
- license: MIT
- @vueuse/shared
- version: 14.1.0
- license: MIT
- debounce
- version: 3.0.0
- license: MIT
- eventemitter3
- version: 5.0.1
- license: MIT
- p-queue
- version: 9.0.1
- license: MIT
- rehype-react
- version: 8.0.0
- license: MIT
- splitpanes
- version: 4.0.4
- license: MIT
- vue-router
- version: 4.6.4
- license: MIT
- vue-select
- version: 4.0.0-beta.6
- license: MIT
- vue
- version: 3.5.25
- license: MIT
- @nextcloud/dialogs
- version: 7.1.0
- license: AGPL-3.0-or-later
- semver
- version: 7.7.2
- license: ISC
- @nextcloud/event-bus
- version: 3.3.3
- license: GPL-3.0-or-later
- @nextcloud/initial-state
- version: 2.2.0
- license: GPL-3.0-or-later
- @nextcloud/files
- version: 3.12.0
- license: AGPL-3.0-or-later
- @nextcloud/initial-state
- version: 3.0.0
- license: GPL-3.0-or-later
- @nextcloud/l10n
- version: 3.4.1
- license: GPL-3.0-or-later
- @nextcloud/logger
- version: 3.0.2
- license: GPL-3.0-or-later
- @nextcloud/paths
- version: 2.3.0
- license: GPL-3.0-or-later
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @nextcloud/sharing
- version: 0.3.0
- license: GPL-3.0-or-later
- @ungap/structured-clone
- version: 1.3.0
- license: ISC
- @vue/devtools-api
- version: 6.6.4
- license: MIT
- @vue/reactivity
- version: 3.5.25
- license: MIT
- @vue/runtime-core
- version: 3.5.25
- license: MIT
- @vue/runtime-dom
- version: 3.5.25
- license: MIT
- @vue/shared
- version: 3.5.25
- license: MIT
- axios
- version: 1.12.2
- license: MIT
- base64-js
- version: 1.5.1
- license: MIT
- blurhash
- version: 2.0.5
- license: MIT
- buffer
- version: 5.7.1
- license: MIT
- cancelable-promise
- version: 4.3.1
- license: MIT
- comma-separated-tokens
- version: 2.0.3
- license: MIT
- css-loader
- version: 7.1.2
- license: MIT
- date-fns
- version: 4.1.0
- license: MIT
- decode-named-character-reference
- version: 1.2.0
- license: MIT
- devlop
- version: 1.1.0
- license: MIT
- dompurify
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- emoji-mart-vue-fast
- version: 15.0.5
- license: BSD-3-Clause
- escape-html
- version: 1.0.3
- license: MIT
- estree-util-is-identifier-name
- version: 3.0.0
- license: MIT
- extend
- version: 3.0.2
- license: MIT
- focus-trap
- version: 7.6.6
- license: MIT
- hast-util-is-element
- version: 3.0.0
- license: MIT
- hast-util-whitespace
- version: 3.0.0
- license: MIT
- property-information
- version: 7.1.0
- license: MIT
- hast-util-to-jsx-runtime
- version: 2.3.6
- license: MIT
- ieee754
- version: 1.2.1
- license: BSD-3-Clause
- is-absolute-url
- version: 4.0.1
- license: MIT
- jquery
- version: 3.7.1
- license: MIT
- linkifyjs
- version: 4.3.2
- license: MIT
- material-colors
- version: 1.2.6
- license: ISC
- mdast-squeeze-paragraphs
- version: 6.0.0
- license: MIT
- escape-string-regexp
- version: 5.0.0
- license: MIT
- mdast-util-find-and-replace
- version: 3.0.2
- license: MIT
- mdast-util-from-markdown
- version: 2.0.2
- license: MIT
- mdast-util-newline-to-break
- version: 2.0.0
- license: MIT
- mdast-util-to-hast
- version: 13.2.1
- license: MIT
- mdast-util-to-string
- version: 4.0.0
- license: MIT
- micromark-core-commonmark
- version: 2.0.3
- license: MIT
- micromark-factory-destination
- version: 2.0.1
- license: MIT
- micromark-factory-label
- version: 2.0.1
- license: MIT
- micromark-factory-space
- version: 2.0.1
- license: MIT
- micromark-factory-title
- version: 2.0.1
- license: MIT
- micromark-factory-whitespace
- version: 2.0.1
- license: MIT
- micromark-util-character
- version: 2.1.1
- license: MIT
- micromark-util-chunked
- version: 2.0.1
- license: MIT
- micromark-util-classify-character
- version: 2.0.1
- license: MIT
- micromark-util-combine-extensions
- version: 2.0.1
- license: MIT
- micromark-util-decode-numeric-character-reference
- version: 2.0.2
- license: MIT
- micromark-util-decode-string
- version: 2.0.1
- license: MIT
- micromark-util-encode
- version: 2.0.1
- license: MIT
- micromark-util-html-tag-name
- version: 2.0.1
- license: MIT
- micromark-util-normalize-identifier
- version: 2.0.1
- license: MIT
- micromark-util-resolve-all
- version: 2.0.1
- license: MIT
- micromark-util-sanitize-uri
- version: 2.0.1
- license: MIT
- micromark-util-subtokenize
- version: 2.1.0
- license: MIT
- micromark
- version: 4.0.2
- license: MIT
- buffer
- version: 6.0.3
- license: MIT
- inherits
- version: 2.0.3
- license: ISC
- util
- version: 0.10.4
- license: MIT
- path
- version: 0.12.7
- license: MIT
- process
- version: 0.11.10
- license: MIT
- rehype-external-links
- version: 3.0.0
- license: MIT
- remark-breaks
- version: 4.0.0
- license: MIT
- remark-parse
- version: 11.0.0
- license: MIT
- remark-rehype
- version: 11.1.2
- license: MIT
- remark-unlink-protocols
- version: 1.0.0
- license: MIT
- safe-buffer
- version: 5.2.1
- license: MIT
- space-separated-tokens
- version: 2.0.2
- license: MIT
- string_decoder
- version: 1.3.0
- license: MIT
- striptags
- version: 3.2.0
- license: MIT
- style-loader
- version: 4.0.0
- license: MIT
- inline-style-parser
- version: 0.2.7
- license: MIT
- style-to-object
- version: 1.0.14
- license: MIT
- style-to-js
- version: 1.1.21
- license: MIT
- tabbable
- version: 6.3.0
- license: MIT
- toastify-js
- version: 1.12.0
- license: MIT
- tributejs
- version: 5.1.3
- license: MIT
- trim-lines
- version: 3.0.1
- license: MIT
- trough
- version: 2.2.0
- license: MIT
- typescript-event-target
- version: 1.1.1
- license: MIT
- unified
- version: 11.0.5
- license: MIT
- unist-builder
- version: 4.0.0
- license: MIT
- unist-util-is
- version: 6.0.0
- license: MIT
- unist-util-position
- version: 5.0.0
- license: MIT
- unist-util-stringify-position
- version: 4.0.0
- license: MIT
- unist-util-visit-parents
- version: 6.0.1
- license: MIT
- unist-util-visit
- version: 5.0.0
- license: MIT
- vfile-message
- version: 4.0.3
- license: MIT
- vfile
- version: 6.0.3
- license: MIT
- vue-loader
- version: 15.11.1
- license: MIT

1
dist/5814-5814.js.map vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/5814-5814.js.map.license vendored Symbolic link
View file

@ -0,0 +1 @@
5814-5814.js.license

4
dist/5819-5819.js vendored

File diff suppressed because one or more lines are too long

View file

@ -5,37 +5,72 @@ SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: string_decoder developers
SPDX-FileCopyrightText: rhysd <lin90162@yahoo.co.jp>
SPDX-FileCopyrightText: p-queue developers
SPDX-FileCopyrightText: omahlama
SPDX-FileCopyrightText: inline-style-parser developers
SPDX-FileCopyrightText: inherits developers
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: debounce developers
SPDX-FileCopyrightText: date-fns developers
SPDX-FileCopyrightText: chenkai
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: Varun A P
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)
SPDX-FileCopyrightText: T. Jameson Little <t.jameson.little@gmail.com>
SPDX-FileCopyrightText: Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)
SPDX-FileCopyrightText: Sindre Sorhus
SPDX-FileCopyrightText: Shuhei Kagawa
SPDX-FileCopyrightText: Scott Cooper <scttcper@gmail.com>
SPDX-FileCopyrightText: Roman Shtylman <shtylman@gmail.com>
SPDX-FileCopyrightText: Rob Cresswell <robcresswell@pm.me>
SPDX-FileCopyrightText: Paul Vorbach <paul@vorba.ch> (http://paul.vorba.ch)
SPDX-FileCopyrightText: Paul Vorbach <paul@vorb.de> (http://vorb.de)
SPDX-FileCopyrightText: OpenJS Foundation and other contributors
SPDX-FileCopyrightText: Nick Frasser (https://nfrasser.com)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Max <max@nextcloud.com>
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Mark <mark@remarkablemark.org>
SPDX-FileCopyrightText: Joyent
SPDX-FileCopyrightText: Jordan Humphreys <jordan@zurb.com>
SPDX-FileCopyrightText: Jonas Schade <derzade@gmail.com>
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: Jacob Clevenger<https://github.com/wheatjs>
SPDX-FileCopyrightText: Guillaume Chau <guillaume.b.chau@gmail.com>
SPDX-FileCopyrightText: Guillaume Chau
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Feross Aboukhadijeh
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Eugene Sharygin <eush77@gmail.com>
SPDX-FileCopyrightText: Eric Norris (https://github.com/ericnorris)
SPDX-FileCopyrightText: Eduardo San Martin Morote
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
SPDX-FileCopyrightText: David Clark
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Borys Serebrov
SPDX-FileCopyrightText: Arnout Kazemier
SPDX-FileCopyrightText: Antoni Andre <antoniandre.web@gmail.com>
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
SPDX-FileCopyrightText: Andrea Giammarchi
SPDX-FileCopyrightText: Alkemics
SPDX-FileCopyrightText: @nextcloud/dialogs developers
This file is generated from multiple sources. Included packages:
- @ctrl/tinycolor
- version: 3.6.1
- license: MIT
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later
@ -48,8 +83,44 @@ This file is generated from multiple sources. Included packages:
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later
- @ckpack/vue-color
- version: 1.6.0
- license: MIT
- @vueuse/core
- version: 14.1.0
- license: MIT
- @nextcloud/vue
- version: 9.3.1
- license: AGPL-3.0-or-later
- @vueuse/shared
- version: 14.1.0
- license: MIT
- debounce
- version: 3.0.0
- license: MIT
- eventemitter3
- version: 5.0.1
- license: MIT
- p-queue
- version: 9.0.1
- license: MIT
- rehype-react
- version: 8.0.0
- license: MIT
- splitpanes
- version: 4.0.4
- license: MIT
- vue-router
- version: 4.6.4
- license: MIT
- vue-select
- version: 4.0.0-beta.6
- license: MIT
- vue
- version: 3.5.25
- license: MIT
- @nextcloud/dialogs
- version: 6.4.1
- version: 7.1.0
- license: AGPL-3.0-or-later
- semver
- version: 7.7.2
@ -87,6 +158,24 @@ This file is generated from multiple sources. Included packages:
- @nextcloud/vue
- version: 8.34.0
- license: AGPL-3.0-or-later
- @ungap/structured-clone
- version: 1.3.0
- license: ISC
- @vue/devtools-api
- version: 6.6.4
- license: MIT
- @vue/reactivity
- version: 3.5.25
- license: MIT
- @vue/runtime-core
- version: 3.5.25
- license: MIT
- @vue/runtime-dom
- version: 3.5.25
- license: MIT
- @vue/shared
- version: 3.5.25
- license: MIT
- @vueuse/components
- version: 11.3.0
- license: MIT
@ -102,6 +191,9 @@ This file is generated from multiple sources. Included packages:
- base64-js
- version: 1.5.1
- license: MIT
- blurhash
- version: 2.0.5
- license: MIT
- buffer
- version: 5.7.1
- license: MIT
@ -111,36 +203,159 @@ This file is generated from multiple sources. Included packages:
- charenc
- version: 0.0.2
- license: BSD-3-Clause
- comma-separated-tokens
- version: 2.0.3
- license: MIT
- crypt
- version: 0.0.2
- license: BSD-3-Clause
- css-loader
- version: 7.1.2
- license: MIT
- date-fns
- version: 4.1.0
- license: MIT
- debounce
- version: 2.2.0
- license: MIT
- decode-named-character-reference
- version: 1.2.0
- license: MIT
- devlop
- version: 1.1.0
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- emoji-mart-vue-fast
- version: 15.0.5
- license: BSD-3-Clause
- escape-html
- version: 1.0.3
- license: MIT
- estree-util-is-identifier-name
- version: 3.0.0
- license: MIT
- extend
- version: 3.0.2
- license: MIT
- floating-vue
- version: 1.0.0-beta.19
- license: MIT
- focus-trap
- version: 7.6.6
- license: MIT
- hast-util-is-element
- version: 3.0.0
- license: MIT
- hast-util-whitespace
- version: 3.0.0
- license: MIT
- property-information
- version: 7.1.0
- license: MIT
- hast-util-to-jsx-runtime
- version: 2.3.6
- license: MIT
- ieee754
- version: 1.2.1
- license: BSD-3-Clause
- is-absolute-url
- version: 4.0.1
- license: MIT
- is-buffer
- version: 1.1.6
- license: MIT
- jquery
- version: 3.7.1
- license: MIT
- linkifyjs
- version: 4.3.2
- license: MIT
- material-colors
- version: 1.2.6
- license: ISC
- md5
- version: 2.3.0
- license: BSD-3-Clause
- mdast-squeeze-paragraphs
- version: 6.0.0
- license: MIT
- escape-string-regexp
- version: 5.0.0
- license: MIT
- mdast-util-find-and-replace
- version: 3.0.2
- license: MIT
- mdast-util-from-markdown
- version: 2.0.2
- license: MIT
- mdast-util-newline-to-break
- version: 2.0.0
- license: MIT
- mdast-util-to-hast
- version: 13.2.1
- license: MIT
- mdast-util-to-string
- version: 4.0.0
- license: MIT
- micromark-core-commonmark
- version: 2.0.3
- license: MIT
- micromark-factory-destination
- version: 2.0.1
- license: MIT
- micromark-factory-label
- version: 2.0.1
- license: MIT
- micromark-factory-space
- version: 2.0.1
- license: MIT
- micromark-factory-title
- version: 2.0.1
- license: MIT
- micromark-factory-whitespace
- version: 2.0.1
- license: MIT
- micromark-util-character
- version: 2.1.1
- license: MIT
- micromark-util-chunked
- version: 2.0.1
- license: MIT
- micromark-util-classify-character
- version: 2.0.1
- license: MIT
- micromark-util-combine-extensions
- version: 2.0.1
- license: MIT
- micromark-util-decode-numeric-character-reference
- version: 2.0.2
- license: MIT
- micromark-util-decode-string
- version: 2.0.1
- license: MIT
- micromark-util-encode
- version: 2.0.1
- license: MIT
- micromark-util-html-tag-name
- version: 2.0.1
- license: MIT
- micromark-util-normalize-identifier
- version: 2.0.1
- license: MIT
- micromark-util-resolve-all
- version: 2.0.1
- license: MIT
- micromark-util-sanitize-uri
- version: 2.0.1
- license: MIT
- micromark-util-subtokenize
- version: 2.1.0
- license: MIT
- micromark
- version: 4.0.2
- license: MIT
- buffer
- version: 6.0.3
- license: MIT
@ -156,9 +371,27 @@ This file is generated from multiple sources. Included packages:
- process
- version: 0.11.10
- license: MIT
- rehype-external-links
- version: 3.0.0
- license: MIT
- remark-breaks
- version: 4.0.0
- license: MIT
- remark-parse
- version: 11.0.0
- license: MIT
- remark-rehype
- version: 11.1.2
- license: MIT
- remark-unlink-protocols
- version: 1.0.0
- license: MIT
- safe-buffer
- version: 5.2.1
- license: MIT
- space-separated-tokens
- version: 2.0.2
- license: MIT
- string_decoder
- version: 1.3.0
- license: MIT
@ -168,27 +401,60 @@ This file is generated from multiple sources. Included packages:
- style-loader
- version: 4.0.0
- license: MIT
- inline-style-parser
- version: 0.2.7
- license: MIT
- style-to-object
- version: 1.0.14
- license: MIT
- style-to-js
- version: 1.1.21
- license: MIT
- tabbable
- version: 6.3.0
- license: MIT
- toastify-js
- version: 1.12.0
- license: MIT
- tributejs
- version: 5.1.3
- license: MIT
- trim-lines
- version: 3.0.1
- license: MIT
- trough
- version: 2.2.0
- license: MIT
- typescript-event-target
- version: 1.1.1
- license: MIT
- unified
- version: 11.0.5
- license: MIT
- unist-builder
- version: 4.0.0
- license: MIT
- unist-util-is
- version: 6.0.0
- license: MIT
- unist-util-position
- version: 5.0.0
- license: MIT
- unist-util-stringify-position
- version: 4.0.0
- license: MIT
- unist-util-visit-parents
- version: 6.0.1
- license: MIT
- unist-util-visit
- version: 5.0.0
- license: MIT
- vfile-message
- version: 4.0.3
- license: MIT
- vfile
- version: 6.0.3
- license: MIT
- vue-loader
- version: 15.11.1
- license: MIT

File diff suppressed because one or more lines are too long

1
dist/594-594.js vendored Normal file
View file

@ -0,0 +1 @@
"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[594],{30594:(l,u,a)=>{a.r(u),a.d(u,{default:()=>e.N});var e=a(56799)}}]);

62
dist/594-594.js.license vendored Normal file
View file

@ -0,0 +1,62 @@
SPDX-License-Identifier: MIT
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
This file is generated from multiple sources. Included packages:
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @nextcloud/vue
- version: 9.3.1
- license: AGPL-3.0-or-later
- vue-select
- version: 4.0.0-beta.6
- license: MIT
- vue
- version: 3.5.25
- license: MIT
- @nextcloud/l10n
- version: 3.4.1
- license: GPL-3.0-or-later
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @vue/reactivity
- version: 3.5.25
- license: MIT
- @vue/runtime-core
- version: 3.5.25
- license: MIT
- @vue/runtime-dom
- version: 3.5.25
- license: MIT
- @vue/shared
- version: 3.5.25
- license: MIT
- css-loader
- version: 7.1.2
- license: MIT
- dompurify
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3
- license: MIT
- style-loader
- version: 4.0.0
- license: MIT

2
dist/6045-6045.js vendored Normal file

File diff suppressed because one or more lines are too long

217
dist/6045-6045.js.license vendored Normal file
View file

@ -0,0 +1,217 @@
SPDX-License-Identifier: MIT
SPDX-License-Identifier: ISC
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: string_decoder developers
SPDX-FileCopyrightText: inherits developers
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: debounce developers
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: Varun A P
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)
SPDX-FileCopyrightText: T. Jameson Little <t.jameson.little@gmail.com>
SPDX-FileCopyrightText: Roman Shtylman <shtylman@gmail.com>
SPDX-FileCopyrightText: Paul Vorbach <paul@vorba.ch> (http://paul.vorba.ch)
SPDX-FileCopyrightText: Paul Vorbach <paul@vorb.de> (http://vorb.de)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Joyent
SPDX-FileCopyrightText: Jonas Schade <derzade@gmail.com>
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: Jacob Clevenger<https://github.com/wheatjs>
SPDX-FileCopyrightText: Hiroki Osame
SPDX-FileCopyrightText: Guillaume Chau <guillaume.b.chau@gmail.com>
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Feross Aboukhadijeh
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Eugene Sharygin <eush77@gmail.com>
SPDX-FileCopyrightText: Eric Norris (https://github.com/ericnorris)
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
SPDX-FileCopyrightText: David Clark
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Arnout Kazemier
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
SPDX-FileCopyrightText: Alkemics
SPDX-FileCopyrightText: @nextcloud/dialogs developers
This file is generated from multiple sources. Included packages:
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @mdi/js
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later
- @nextcloud/axios
- version: 2.5.2
- license: GPL-3.0-or-later
- @nextcloud/browser-storage
- version: 0.5.0
- license: GPL-3.0-or-later
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later
- semver
- version: 7.7.2
- license: ISC
- @nextcloud/event-bus
- version: 3.3.3
- license: GPL-3.0-or-later
- @nextcloud/initial-state
- version: 2.2.0
- license: GPL-3.0-or-later
- @nextcloud/files
- version: 3.12.0
- license: AGPL-3.0-or-later
- @nextcloud/initial-state
- version: 3.0.0
- license: GPL-3.0-or-later
- @nextcloud/l10n
- version: 3.4.1
- license: GPL-3.0-or-later
- @nextcloud/logger
- version: 3.0.2
- license: GPL-3.0-or-later
- @nextcloud/paths
- version: 2.3.0
- license: GPL-3.0-or-later
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @nextcloud/dialogs
- version: 6.4.1
- license: AGPL-3.0-or-later
- eventemitter3
- version: 5.0.1
- license: MIT
- @nextcloud/vue-select
- version: 3.26.0
- license: MIT
- @nextcloud/initial-state
- version: 2.2.0
- license: GPL-3.0-or-later
- @nextcloud/vue
- version: 8.34.0
- license: AGPL-3.0-or-later
- @vueuse/components
- version: 11.3.0
- license: MIT
- @vueuse/core
- version: 11.3.0
- license: MIT
- @vueuse/shared
- version: 11.3.0
- license: MIT
- axios
- version: 1.12.2
- license: MIT
- base64-js
- version: 1.5.1
- license: MIT
- buffer
- version: 5.7.1
- license: MIT
- cancelable-promise
- version: 4.3.1
- license: MIT
- charenc
- version: 0.0.2
- license: BSD-3-Clause
- crypt
- version: 0.0.2
- license: BSD-3-Clause
- css-loader
- version: 7.1.2
- license: MIT
- debounce
- version: 2.2.0
- license: MIT
- dompurify
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3
- license: MIT
- floating-vue
- version: 1.0.0-beta.19
- license: MIT
- focus-trap
- version: 7.6.6
- license: MIT
- ieee754
- version: 1.2.1
- license: BSD-3-Clause
- is-buffer
- version: 1.1.6
- license: MIT
- md5
- version: 2.3.0
- license: BSD-3-Clause
- buffer
- version: 6.0.3
- license: MIT
- inherits
- version: 2.0.3
- license: ISC
- util
- version: 0.10.4
- license: MIT
- path
- version: 0.12.7
- license: MIT
- process
- version: 0.11.10
- license: MIT
- safe-buffer
- version: 5.2.1
- license: MIT
- string_decoder
- version: 1.3.0
- license: MIT
- striptags
- version: 3.2.0
- license: MIT
- style-loader
- version: 4.0.0
- license: MIT
- tabbable
- version: 6.3.0
- license: MIT
- toastify-js
- version: 1.12.0
- license: MIT
- typescript-event-target
- version: 1.1.1
- license: MIT
- unist-builder
- version: 4.0.0
- license: MIT
- unist-util-is
- version: 6.0.0
- license: MIT
- unist-util-visit-parents
- version: 6.0.1
- license: MIT
- unist-util-visit
- version: 5.0.0
- license: MIT
- vue-frag
- version: 1.4.3
- license: MIT
- vue
- version: 2.7.16
- license: MIT

1
dist/6045-6045.js.map vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/6045-6045.js.map.license vendored Symbolic link
View file

@ -0,0 +1 @@
6045-6045.js.license

2
dist/6160-6160.js vendored Normal file
View file

@ -0,0 +1,2 @@
"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[6160],{46160:(t,e,a)=>{a.r(e),a.d(e,{default:()=>b});var n=a(85471),i=a(80474),s=a(21777),r=a(20564),o=a(94219),l=a(31133),c=a(82182),u=a(5211),m=a(35810);const d=(0,i.c0)("public").build(),p=(0,n.pM)({name:"PublicAuthPrompt",components:{NcDialog:o.A,NcNoteCard:l.A,NcTextField:c.A},props:{nickname:{type:String,default:""},title:{type:String,default:(0,u.t)("Guest identification")},text:{type:String,default:""},notice:{type:String,default:""},submitLabel:{type:String,default:(0,u.t)("Submit name")},cancellable:{type:Boolean,default:!1}},setup:()=>({t:u.t}),emits:["close"],data:()=>({name:""}),computed:{dialogButtons(){const t={label:(0,u.t)("Cancel"),variant:"tertiary",callback:()=>this.$emit("close")},e={label:this.submitLabel,type:"submit",variant:"primary"};return this.cancellable?[t,e]:[e]},defaultNotice(){return this.notice?this.notice:this.nickname?(0,u.t)("You are currently identified as {nickname}.",{nickname:this.nickname}):(0,u.t)("You are currently not identified.")}},watch:{nickname:{handler(){this.name=this.nickname},immediate:!0},name(){const t=this.name.trim?.()||"",e=this.$refs.input?.$el.querySelector("input");if(!e)return;const a=function(t){if(""===t.trim())return(0,u.t)("Names must not be empty.");if(t.startsWith("."))return(0,u.t)("Names must not start with a dot.");if(t.length>64)return(0,u.t)("Names may be at most 64 characters long.");try{return(0,m.KT)(t),""}catch(t){if(!(t instanceof m.di))throw t;switch(t.reason){case m.nF.Character:return(0,u.t)('"{char}" is not allowed inside a name.',{char:t.segment});case m.nF.ReservedName:return(0,u.t)('"{segment}" is a reserved name and not allowed.',{segment:t.segment});case m.nF.Extension:return t.segment.match(/\.[a-z]/i)?(0,u.t)('"{extension}" is not an allowed name.',{extension:t.segment}):(0,u.t)('Names must not end with "{extension}".',{extension:t.segment});default:return(0,u.t)("Invalid name.")}}}(t);e.setCustomValidity(a),e.reportValidity()}},methods:{onSubmit(){const t=this.$refs.input,e=this.name.trim();if(""===e)return t.setCustomValidity((0,u.t)("You cannot leave the name empty.")),t.reportValidity(),void t.focus();if(e.length<2)return t.setCustomValidity((0,u.t)("Please enter a name with at least 2 characters.")),t.reportValidity(),void t.focus();try{(0,s.L$)(e)}catch(e){return(0,r.Qg)((0,u.t)("Failed to set nickname.")),console.error("Failed to set nickname",e),void t.focus()}d.setItem("public-auth-prompt-shown","true"),this.$emit("close",this.name)}}});var h=function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcDialog",{staticClass:"public-auth-prompt",attrs:{buttons:t.dialogButtons,"data-cy-public-auth-prompt-dialog":"","is-form":"","no-close":"",name:t.title},on:{submit:t.onSubmit}},[t.text?e("p",{staticClass:"public-auth-prompt__text"},[t._v(" "+t._s(t.text)+" ")]):t._e(),e("NcNoteCard",{staticClass:"public-auth-prompt__header",attrs:{text:t.defaultNotice,type:"info"}}),e("NcTextField",{ref:"input",staticClass:"public-auth-prompt__input",attrs:{"data-cy-public-auth-prompt-dialog-name":"",label:t.t("Name"),placeholder:t.t("Enter your name"),required:!t.cancellable,minlength:"2",maxlength:"64",name:"name"},model:{value:t.name,callback:function(e){t.name=e},expression:"name"}})],1)},f=[];const b=(0,u.n)(p,h,f,!1,null,"414f7090").exports}}]);
//# sourceMappingURL=6160-6160.js.map?v=87ec946385649e7c92c5

View file

@ -36,9 +36,6 @@ This file is generated from multiple sources. Included packages:
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later
- @nextcloud/dialogs
- version: 6.4.1
- license: AGPL-3.0-or-later
- semver
- version: 7.7.2
- license: ISC
@ -60,6 +57,9 @@ This file is generated from multiple sources. Included packages:
- @nextcloud/logger
- version: 3.0.2
- license: GPL-3.0-or-later
- @nextcloud/dialogs
- version: 6.4.1
- license: AGPL-3.0-or-later
- @nextcloud/paths
- version: 2.3.0
- license: GPL-3.0-or-later
@ -88,7 +88,7 @@ This file is generated from multiple sources. Included packages:
- version: 7.1.2
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3

1
dist/6160-6160.js.map vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/6160-6160.js.map.license vendored Symbolic link
View file

@ -0,0 +1 @@
6160-6160.js.license

View file

@ -45,9 +45,6 @@ This file is generated from multiple sources. Included packages:
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later
- @nextcloud/dialogs
- version: 6.4.1
- license: AGPL-3.0-or-later
- semver
- version: 7.7.2
- license: ISC
@ -75,6 +72,9 @@ This file is generated from multiple sources. Included packages:
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @nextcloud/dialogs
- version: 6.4.1
- license: AGPL-3.0-or-later
- @nextcloud/initial-state
- version: 2.2.0
- license: GPL-3.0-or-later
@ -112,7 +112,7 @@ This file is generated from multiple sources. Included packages:
- version: 7.1.2
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3

4
dist/6768-6768.js vendored

File diff suppressed because one or more lines are too long

View file

@ -41,6 +41,9 @@ This file is generated from multiple sources. Included packages:
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
@ -135,7 +138,7 @@ This file is generated from multiple sources. Included packages:
- version: 1.1.0
- license: MIT
- dompurify
- version: 3.3.0
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3

File diff suppressed because one or more lines are too long

1
dist/6798-6798.js vendored Normal file
View file

@ -0,0 +1 @@
"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[6798],{56798:(l,u,a)=>{a.r(u),a.d(u,{default:()=>e.N});var e=a(27885)}}]);

80
dist/6798-6798.js.license vendored Normal file
View file

@ -0,0 +1,80 @@
SPDX-License-Identifier: MIT
SPDX-License-Identifier: ISC
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: xiaokai <kexiaokai@gmail.com>
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: Roman Shtylman <shtylman@gmail.com>
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Guillaume Chau <guillaume.b.chau@gmail.com>
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
SPDX-FileCopyrightText: David Clark
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
This file is generated from multiple sources. Included packages:
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later
- @nextcloud/browser-storage
- version: 0.5.0
- license: GPL-3.0-or-later
- semver
- version: 7.7.2
- license: ISC
- @nextcloud/event-bus
- version: 3.3.3
- license: GPL-3.0-or-later
- @nextcloud/l10n
- version: 3.4.1
- license: GPL-3.0-or-later
- @nextcloud/logger
- version: 3.0.2
- license: GPL-3.0-or-later
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @nextcloud/vue
- version: 8.34.0
- license: AGPL-3.0-or-later
- @vueuse/core
- version: 11.3.0
- license: MIT
- @vueuse/shared
- version: 11.3.0
- license: MIT
- css-loader
- version: 7.1.2
- license: MIT
- dompurify
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- escape-html
- version: 1.0.3
- license: MIT
- floating-vue
- version: 1.0.0-beta.19
- license: MIT
- focus-trap
- version: 7.6.6
- license: MIT
- process
- version: 0.11.10
- license: MIT
- style-loader
- version: 4.0.0
- license: MIT
- tabbable
- version: 6.3.0
- license: MIT
- vue-color
- version: 2.8.2
- license: MIT
- vue
- version: 2.7.16
- license: MIT

2
dist/6916-6916.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
6916-6916.js.license

2
dist/7145-7145.js vendored Normal file
View file

@ -0,0 +1,2 @@
"use strict";(globalThis.webpackChunknextcloud=globalThis.webpackChunknextcloud||[]).push([[7145],{17859:(e,t,a)=>{a.d(t,{A:()=>n._});var n=a(42005)},39526:(e,t,a)=>{a.r(t),a.d(t,{default:()=>f});var n=a(20641),l=a(50953),i=a(90033),u=a(21777),r=a(80474),o=a(91126),s=a(64572),c=a(17859),m=a(74506),d=a(35810),p=a(50240);function v(e){if(""===e.trim())return(0,m.t)("Names must not be empty.");if(e.startsWith("."))return(0,m.t)("Names must not start with a dot.");if(e.length>64)return(0,m.t)("Names may be at most 64 characters long.");try{return(0,d.KT)(e),""}catch(e){if(!(e instanceof d.di))throw e;switch(e.reason){case d.nF.Character:return(0,m.t)('"{char}" is not allowed inside a name.',{char:e.segment});case d.nF.ReservedName:return(0,m.t)('"{segment}" is a reserved name and not allowed.',{segment:e.segment});case d.nF.Extension:return e.segment.match(/\.[a-z]/i)?(0,m.t)('"{extension}" is not an allowed name.',{extension:e.segment}):(0,m.t)('Names must not end with "{extension}".',{extension:e.segment});default:return(0,m.t)("Invalid name.")}}}const b={key:0,class:"public-auth-prompt__text"},h=(0,n.pM)({__name:"PublicAuthPrompt",props:{nickname:{default:""},title:{default:(0,m.t)("Guest identification")},text:{default:""},notice:{default:""},submitLabel:{default:(0,m.t)("Submit name")},cancellable:{type:Boolean}},emits:["close"],setup(e,{emit:t}){const a=e,d=t,p=(0,n.rk)("input"),h=(0,r.c0)("public").build(),f=(0,l.KR)(a.nickname);(0,n.wB)(()=>a.nickname,()=>{f.value=a.nickname}),(0,n.wB)(f,e=>{const t=v(e);if(!t)return p.value.setCustomValidity(t),p.value.reportValidity(),void p.value.focus()});const y=(0,n.EW)(()=>{const e={label:(0,m.t)("Cancel"),variant:"tertiary",callback:()=>d("close")},t={label:a.submitLabel,type:"submit",variant:"primary"};return a.cancellable?[e,t]:[t]}),g=(0,n.EW)(()=>a.notice?a.notice:f.value?(0,m.t)("You are currently identified as {nickname}.",{nickname:f.value}):(0,m.t)("You are currently not identified."));function k(){const e=f.value.trim(),t=v(e);if(t)return p.value.setCustomValidity(t),p.value.reportValidity(),void p.value.focus();if(""===e)return p.value.setCustomValidity((0,m.t)("You cannot leave the name empty.")),p.value.reportValidity(),void p.value.focus();if(e.length<2)return p.value.setCustomValidity((0,m.t)("Please enter a name with at least 2 characters.")),p.value.reportValidity(),void p.value.focus();try{(0,u.L$)(e)}catch(e){return m.l.error("Failed to set nickname",{error:e}),(0,m.s)((0,m.t)("Failed to set nickname.")),void p.value.focus()}h.setItem("public-auth-prompt-shown","true"),d("close",f.value)}return(t,a)=>((0,n.uX)(),(0,n.Wv)((0,l.R1)(o.A),{buttons:y.value,class:"public-auth-prompt","data-cy-public-auth-prompt-dialog":"","is-form":"","no-close":"",name:e.title,onSubmit:k},{default:(0,n.k6)(()=>[e.text?((0,n.uX)(),(0,n.CE)("p",b,(0,i.v_)(e.text),1)):(0,n.Q3)("",!0),(0,n.bF)((0,l.R1)(s.A),{class:"public-auth-prompt__header",text:g.value,type:"info"},null,8,["text"]),(0,n.bF)((0,l.R1)(c.A),{ref:"input",modelValue:f.value,"onUpdate:modelValue":a[0]||(a[0]=e=>f.value=e),class:"public-auth-prompt__input","data-cy-public-auth-prompt-dialog-name":"",label:(0,l.R1)(m.t)("Name"),placeholder:(0,l.R1)(m.t)("Enter your name"),required:!e.cancellable,minlength:"2",maxlength:"64",name:"name"},null,8,["modelValue","label","placeholder","required"])]),_:1},8,["buttons","name"]))}}),f=(0,p._)(h,[["__scopeId","data-v-b33d88e5"]])}}]);
//# sourceMappingURL=7145-7145.js.map?v=c0006870b8203ba95fa8

422
dist/7145-7145.js.license vendored Normal file
View file

@ -0,0 +1,422 @@
SPDX-License-Identifier: MIT
SPDX-License-Identifier: ISC
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: string_decoder developers
SPDX-FileCopyrightText: rhysd <lin90162@yahoo.co.jp>
SPDX-FileCopyrightText: p-queue developers
SPDX-FileCopyrightText: omahlama
SPDX-FileCopyrightText: inline-style-parser developers
SPDX-FileCopyrightText: inherits developers
SPDX-FileCopyrightText: escape-html developers
SPDX-FileCopyrightText: debounce developers
SPDX-FileCopyrightText: date-fns developers
SPDX-FileCopyrightText: chenkai
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: Varun A P
SPDX-FileCopyrightText: Tobias Koppers @sokra
SPDX-FileCopyrightText: Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)
SPDX-FileCopyrightText: T. Jameson Little <t.jameson.little@gmail.com>
SPDX-FileCopyrightText: Stefan Thomas <justmoon@members.fsf.org> (http://www.justmoon.net)
SPDX-FileCopyrightText: Sindre Sorhus
SPDX-FileCopyrightText: Shuhei Kagawa
SPDX-FileCopyrightText: Scott Cooper <scttcper@gmail.com>
SPDX-FileCopyrightText: Roman Shtylman <shtylman@gmail.com>
SPDX-FileCopyrightText: OpenJS Foundation and other contributors
SPDX-FileCopyrightText: Nick Frasser (https://nfrasser.com)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Max <max@nextcloud.com>
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Mark <mark@remarkablemark.org>
SPDX-FileCopyrightText: Joyent
SPDX-FileCopyrightText: Jordan Humphreys <jordan@zurb.com>
SPDX-FileCopyrightText: Jonas Schade <derzade@gmail.com>
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: Guillaume Chau
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Feross Aboukhadijeh
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Eugene Sharygin <eush77@gmail.com>
SPDX-FileCopyrightText: Eric Norris (https://github.com/ericnorris)
SPDX-FileCopyrightText: Eduardo San Martin Morote
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
SPDX-FileCopyrightText: David Clark
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Borys Serebrov
SPDX-FileCopyrightText: Arnout Kazemier
SPDX-FileCopyrightText: Antoni Andre <antoniandre.web@gmail.com>
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
SPDX-FileCopyrightText: Andrea Giammarchi
SPDX-FileCopyrightText: Alkemics
SPDX-FileCopyrightText: @nextcloud/dialogs developers
This file is generated from multiple sources. Included packages:
- @ctrl/tinycolor
- version: 3.6.1
- license: MIT
- @floating-ui/core
- version: 1.7.3
- license: MIT
- @floating-ui/dom
- version: 1.7.4
- license: MIT
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later
- @nextcloud/axios
- version: 2.5.2
- license: GPL-3.0-or-later
- @nextcloud/browser-storage
- version: 0.5.0
- license: GPL-3.0-or-later
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later
- @ckpack/vue-color
- version: 1.6.0
- license: MIT
- @vueuse/core
- version: 14.1.0
- license: MIT
- @nextcloud/vue
- version: 9.3.1
- license: AGPL-3.0-or-later
- @vueuse/shared
- version: 14.1.0
- license: MIT
- debounce
- version: 3.0.0
- license: MIT
- eventemitter3
- version: 5.0.1
- license: MIT
- p-queue
- version: 9.0.1
- license: MIT
- rehype-react
- version: 8.0.0
- license: MIT
- splitpanes
- version: 4.0.4
- license: MIT
- vue-router
- version: 4.6.4
- license: MIT
- vue-select
- version: 4.0.0-beta.6
- license: MIT
- vue
- version: 3.5.25
- license: MIT
- @nextcloud/dialogs
- version: 7.1.0
- license: AGPL-3.0-or-later
- semver
- version: 7.7.2
- license: ISC
- @nextcloud/event-bus
- version: 3.3.3
- license: GPL-3.0-or-later
- @nextcloud/initial-state
- version: 2.2.0
- license: GPL-3.0-or-later
- @nextcloud/files
- version: 3.12.0
- license: AGPL-3.0-or-later
- @nextcloud/initial-state
- version: 3.0.0
- license: GPL-3.0-or-later
- @nextcloud/l10n
- version: 3.4.1
- license: GPL-3.0-or-later
- @nextcloud/logger
- version: 3.0.2
- license: GPL-3.0-or-later
- @nextcloud/paths
- version: 2.3.0
- license: GPL-3.0-or-later
- @nextcloud/router
- version: 3.1.0
- license: GPL-3.0-or-later
- @nextcloud/sharing
- version: 0.3.0
- license: GPL-3.0-or-later
- @ungap/structured-clone
- version: 1.3.0
- license: ISC
- @vue/devtools-api
- version: 6.6.4
- license: MIT
- @vue/reactivity
- version: 3.5.25
- license: MIT
- @vue/runtime-core
- version: 3.5.25
- license: MIT
- @vue/runtime-dom
- version: 3.5.25
- license: MIT
- @vue/shared
- version: 3.5.25
- license: MIT
- axios
- version: 1.12.2
- license: MIT
- base64-js
- version: 1.5.1
- license: MIT
- blurhash
- version: 2.0.5
- license: MIT
- buffer
- version: 5.7.1
- license: MIT
- cancelable-promise
- version: 4.3.1
- license: MIT
- comma-separated-tokens
- version: 2.0.3
- license: MIT
- css-loader
- version: 7.1.2
- license: MIT
- date-fns
- version: 4.1.0
- license: MIT
- decode-named-character-reference
- version: 1.2.0
- license: MIT
- devlop
- version: 1.1.0
- license: MIT
- dompurify
- version: 3.3.1
- license: (MPL-2.0 OR Apache-2.0)
- emoji-mart-vue-fast
- version: 15.0.5
- license: BSD-3-Clause
- escape-html
- version: 1.0.3
- license: MIT
- estree-util-is-identifier-name
- version: 3.0.0
- license: MIT
- extend
- version: 3.0.2
- license: MIT
- focus-trap
- version: 7.6.6
- license: MIT
- hast-util-is-element
- version: 3.0.0
- license: MIT
- hast-util-whitespace
- version: 3.0.0
- license: MIT
- property-information
- version: 7.1.0
- license: MIT
- hast-util-to-jsx-runtime
- version: 2.3.6
- license: MIT
- ieee754
- version: 1.2.1
- license: BSD-3-Clause
- is-absolute-url
- version: 4.0.1
- license: MIT
- jquery
- version: 3.7.1
- license: MIT
- linkifyjs
- version: 4.3.2
- license: MIT
- material-colors
- version: 1.2.6
- license: ISC
- mdast-squeeze-paragraphs
- version: 6.0.0
- license: MIT
- escape-string-regexp
- version: 5.0.0
- license: MIT
- mdast-util-find-and-replace
- version: 3.0.2
- license: MIT
- mdast-util-from-markdown
- version: 2.0.2
- license: MIT
- mdast-util-newline-to-break
- version: 2.0.0
- license: MIT
- mdast-util-to-hast
- version: 13.2.1
- license: MIT
- mdast-util-to-string
- version: 4.0.0
- license: MIT
- micromark-core-commonmark
- version: 2.0.3
- license: MIT
- micromark-factory-destination
- version: 2.0.1
- license: MIT
- micromark-factory-label
- version: 2.0.1
- license: MIT
- micromark-factory-space
- version: 2.0.1
- license: MIT
- micromark-factory-title
- version: 2.0.1
- license: MIT
- micromark-factory-whitespace
- version: 2.0.1
- license: MIT
- micromark-util-character
- version: 2.1.1
- license: MIT
- micromark-util-chunked
- version: 2.0.1
- license: MIT
- micromark-util-classify-character
- version: 2.0.1
- license: MIT
- micromark-util-combine-extensions
- version: 2.0.1
- license: MIT
- micromark-util-decode-numeric-character-reference
- version: 2.0.2
- license: MIT
- micromark-util-decode-string
- version: 2.0.1
- license: MIT
- micromark-util-encode
- version: 2.0.1
- license: MIT
- micromark-util-html-tag-name
- version: 2.0.1
- license: MIT
- micromark-util-normalize-identifier
- version: 2.0.1
- license: MIT
- micromark-util-resolve-all
- version: 2.0.1
- license: MIT
- micromark-util-sanitize-uri
- version: 2.0.1
- license: MIT
- micromark-util-subtokenize
- version: 2.1.0
- license: MIT
- micromark
- version: 4.0.2
- license: MIT
- buffer
- version: 6.0.3
- license: MIT
- inherits
- version: 2.0.3
- license: ISC
- util
- version: 0.10.4
- license: MIT
- path
- version: 0.12.7
- license: MIT
- process
- version: 0.11.10
- license: MIT
- rehype-external-links
- version: 3.0.0
- license: MIT
- remark-breaks
- version: 4.0.0
- license: MIT
- remark-parse
- version: 11.0.0
- license: MIT
- remark-rehype
- version: 11.1.2
- license: MIT
- remark-unlink-protocols
- version: 1.0.0
- license: MIT
- safe-buffer
- version: 5.2.1
- license: MIT
- space-separated-tokens
- version: 2.0.2
- license: MIT
- string_decoder
- version: 1.3.0
- license: MIT
- striptags
- version: 3.2.0
- license: MIT
- style-loader
- version: 4.0.0
- license: MIT
- inline-style-parser
- version: 0.2.7
- license: MIT
- style-to-object
- version: 1.0.14
- license: MIT
- style-to-js
- version: 1.1.21
- license: MIT
- tabbable
- version: 6.3.0
- license: MIT
- toastify-js
- version: 1.12.0
- license: MIT
- tributejs
- version: 5.1.3
- license: MIT
- trim-lines
- version: 3.0.1
- license: MIT
- trough
- version: 2.2.0
- license: MIT
- typescript-event-target
- version: 1.1.1
- license: MIT
- unified
- version: 11.0.5
- license: MIT
- unist-builder
- version: 4.0.0
- license: MIT
- unist-util-is
- version: 6.0.0
- license: MIT
- unist-util-position
- version: 5.0.0
- license: MIT
- unist-util-stringify-position
- version: 4.0.0
- license: MIT
- unist-util-visit-parents
- version: 6.0.1
- license: MIT
- unist-util-visit
- version: 5.0.0
- license: MIT
- vfile-message
- version: 4.0.3
- license: MIT
- vfile
- version: 6.0.3
- license: MIT
- vue-loader
- version: 15.11.1
- license: MIT

Some files were not shown because too many files have changed in this diff Show more