Merge pull request #56694 from nextcloud/refactor/files_reminders-vue3

This commit is contained in:
John Molakvoæ 2025-12-02 09:42:49 +01:00 committed by GitHub
commit 3b2a306a67
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
106 changed files with 411 additions and 1058 deletions

View file

@ -36,6 +36,7 @@ class LoadAdditionalScriptsListener implements IEventListener {
return;
}
Util::addStyle(Application::APP_ID, 'init');
Util::addInitScript(Application::APP_ID, 'init');
}
}

View file

@ -3,11 +3,118 @@
- SPDX-License-Identifier: AGPL-3.0-or-later
-->
<script setup lang="ts">
import type { INode } from '@nextcloud/files'
import { showError, showSuccess } from '@nextcloud/dialogs'
import { emit as emitEventBus } from '@nextcloud/event-bus'
import { t } from '@nextcloud/l10n'
import { onBeforeMount, onMounted, ref } from 'vue'
import NcButton from '@nextcloud/vue/components/NcButton'
import NcDateTime from '@nextcloud/vue/components/NcDateTime'
import NcDateTimePickerNative from '@nextcloud/vue/components/NcDateTimePickerNative'
import NcDialog from '@nextcloud/vue/components/NcDialog'
import NcNoteCard from '@nextcloud/vue/components/NcNoteCard'
import { clearReminder, setReminder } from '../services/reminderService.ts'
import { logger } from '../shared/logger.ts'
import { getInitialCustomDueDate } from '../shared/utils.ts'
const props = defineProps<{
node: INode
}>()
const emit = defineEmits<{
close: [void]
}>()
const hasDueDate = ref(false)
const opened = ref(false)
const isValid = ref(true)
const customDueDate = ref<Date>()
const nowDate = ref(new Date())
onBeforeMount(() => {
const dueDate = props.node.attributes['reminder-due-date']
? new Date(props.node.attributes['reminder-due-date'])
: undefined
hasDueDate.value = Boolean(dueDate)
isValid.value = true
opened.value = true
customDueDate.value = dueDate ?? getInitialCustomDueDate()
nowDate.value = new Date()
})
onMounted(() => {
const input = document.getElementById('set-custom-reminder') as HTMLInputElement
input.focus()
if (!hasDueDate.value) {
input.showPicker()
}
})
/**
* Set the custom reminder
*/
async function setCustom(): Promise<void> {
// Handle input cleared or invalid date
if (!(customDueDate.value instanceof Date) || isNaN(customDueDate.value.getTime())) {
showError(t('files_reminders', 'Please choose a valid date & time'))
return
}
try {
await setReminder(props.node.fileid!, customDueDate.value)
const node = props.node.clone()
node.attributes['reminder-due-date'] = customDueDate.value.toISOString()
emitEventBus('files:node:updated', node)
showSuccess(t('files_reminders', 'Reminder set for "{fileName}"', { fileName: props.node.displayname }))
onClose()
} catch (error) {
logger.error('Failed to set reminder', { error })
showError(t('files_reminders', 'Failed to set reminder'))
}
}
/**
* Clear the reminder
*/
async function clear(): Promise<void> {
try {
await clearReminder(props.node.fileid!)
const node = props.node.clone()
node.attributes['reminder-due-date'] = ''
emitEventBus('files:node:updated', node)
showSuccess(t('files_reminders', 'Reminder cleared for "{fileName}"', { fileName: props.node.displayname }))
onClose()
} catch (error) {
logger.error('Failed to clear reminder', { error })
showError(t('files_reminders', 'Failed to clear reminder'))
}
}
/**
* Close the modal
*/
function onClose(): void {
opened.value = false
emit('close')
}
/**
* Validate the input on change
*/
function onInput(): void {
const input = document.getElementById('set-custom-reminder') as HTMLInputElement
isValid.value = input.checkValidity()
}
</script>
<template>
<NcDialog
v-if="opened"
:name="name"
:out-transition="true"
:name="t('files_reminders', `Set reminder for '{fileName}'`, { fileName: node.displayname })"
out-transition
size="small"
close-on-click-outside
@closing="onClose">
@ -18,13 +125,13 @@
<NcDateTimePickerNative
id="set-custom-reminder"
v-model="customDueDate"
:label="label"
:label="t('files_reminders', 'Reminder at custom date & time')"
:min="nowDate"
:required="true"
type="datetime-local"
@input="onInput" />
<NcNoteCard v-if="isValid" type="info">
<NcNoteCard v-if="isValid && customDueDate" type="info">
{{ t('files_reminders', 'We will remind you of this file') }}
<NcDateTime :timestamp="customDueDate" />
</NcNoteCard>
@ -56,142 +163,6 @@
</NcDialog>
</template>
<script lang="ts">
import type { Node } from '@nextcloud/files'
import { showError, showSuccess } from '@nextcloud/dialogs'
import { emit } from '@nextcloud/event-bus'
import { translate as t } from '@nextcloud/l10n'
import Vue from 'vue'
import NcButton from '@nextcloud/vue/components/NcButton'
import NcDateTime from '@nextcloud/vue/components/NcDateTime'
import NcDateTimePickerNative from '@nextcloud/vue/components/NcDateTimePickerNative'
import NcDialog from '@nextcloud/vue/components/NcDialog'
import NcNoteCard from '@nextcloud/vue/components/NcNoteCard'
import { clearReminder, setReminder } from '../services/reminderService.ts'
import { logger } from '../shared/logger.ts'
import { getDateString, getInitialCustomDueDate } from '../shared/utils.ts'
export default Vue.extend({
name: 'SetCustomReminderModal',
components: {
NcButton,
NcDateTime,
NcDateTimePickerNative,
NcDialog,
NcNoteCard,
},
data() {
return {
node: undefined as Node | undefined,
hasDueDate: false,
opened: false,
isValid: true,
customDueDate: null as null | Date,
nowDate: new Date(),
}
},
computed: {
fileId(): number | undefined {
return this.node?.fileid
},
fileName(): string | undefined {
return this.node?.basename
},
name() {
return this.fileName ? t('files_reminders', 'Set reminder for "{fileName}"', { fileName: this.fileName }) : ''
},
label(): string {
return t('files_reminders', 'Reminder at custom date & time')
},
clearAriaLabel(): string {
return t('files_reminders', 'Clear reminder')
},
},
methods: {
t,
getDateString,
/**
* Open the modal to set a custom reminder
* and reset the state.
*
* @param node The node to set a reminder for
*/
open(node: Node): void {
const dueDate = node.attributes['reminder-due-date'] ? new Date(node.attributes['reminder-due-date']) : null
this.node = node
this.hasDueDate = Boolean(dueDate)
this.isValid = true
this.opened = true
this.customDueDate = dueDate ?? getInitialCustomDueDate()
this.nowDate = new Date()
// Focus the input and show the picker after the animation
setTimeout(() => {
const input = document.getElementById('set-custom-reminder') as HTMLInputElement
input.focus()
if (!this.hasDueDate) {
input.showPicker()
}
}, 300)
},
async setCustom(): Promise<void> {
// Handle input cleared or invalid date
if (!(this.customDueDate instanceof Date) || isNaN(this.customDueDate)) {
showError(t('files_reminders', 'Please choose a valid date & time'))
return
}
try {
await setReminder(this.fileId, this.customDueDate)
Vue.set(this.node.attributes, 'reminder-due-date', this.customDueDate.toISOString())
emit('files:node:updated', this.node)
showSuccess(t('files_reminders', 'Reminder set for "{fileName}"', { fileName: this.fileName }))
this.onClose()
} catch (error) {
logger.error('Failed to set reminder', { error })
showError(t('files_reminders', 'Failed to set reminder'))
}
},
async clear(): Promise<void> {
try {
await clearReminder(this.fileId)
Vue.set(this.node.attributes, 'reminder-due-date', '')
emit('files:node:updated', this.node)
showSuccess(t('files_reminders', 'Reminder cleared for "{fileName}"', { fileName: this.fileName }))
this.onClose()
} catch (error) {
logger.error('Failed to clear reminder', { error })
showError(t('files_reminders', 'Failed to clear reminder'))
}
},
onClose(): void {
this.opened = false
this.$emit('close')
},
onInput(): void {
const input = document.getElementById('set-custom-reminder') as HTMLInputElement
this.isValid = input.checkValidity()
},
},
})
</script>
<style lang="scss" scoped>
.custom-reminder-modal {
margin: 0 12px;

View file

@ -0,0 +1,20 @@
/**
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { registerFileAction } from '@nextcloud/files'
import { registerDavProperty } from '@nextcloud/files/dav'
import { action as clearAction } from './files_actions/clearReminderAction.ts'
import { action as statusAction } from './files_actions/reminderStatusAction.ts'
import { action as customAction } from './files_actions/setReminderCustomAction.ts'
import { action as menuAction } from './files_actions/setReminderMenuAction.ts'
import { actions as suggestionActions } from './files_actions/setReminderSuggestionActions.ts'
registerDavProperty('nc:reminder-due-date', { nc: 'http://nextcloud.org/ns' })
registerFileAction(statusAction)
registerFileAction(clearAction)
registerFileAction(menuAction)
registerFileAction(customAction)
suggestionActions.forEach((action) => registerFileAction(action))

View file

@ -0,0 +1,40 @@
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { View } from '@nextcloud/files'
import { Folder } from '@nextcloud/files'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { action } from './clearReminderAction.ts'
describe('clearReminderAction', () => {
const folder = new Folder({
owner: 'user',
source: 'https://example.com/remote.php/dav/files/user/folder',
attributes: {
'reminder-due-date': '2024-12-25T10:00:00Z',
},
})
beforeEach(() => vi.resetAllMocks())
it('should be enabled for one node with due date', () => {
expect(action.enabled!([folder], {} as unknown as View)).toBe(true)
})
it('should be disabled with more than one node', () => {
expect(action.enabled!([folder, folder], {} as unknown as View)).toBe(false)
})
it('should be disabled if no due date', () => {
const node = folder.clone()
delete node.attributes['reminder-due-date']
expect(action.enabled!([node], {} as unknown as View)).toBe(false)
})
it('should have title based on due date', () => {
expect(action.title!([folder], {} as unknown as View)).toMatchInlineSnapshot('"Clear reminder Wednesday, December 25, 2024 at 10:00 AM"')
})
})

View file

@ -3,15 +3,12 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { INode } from '@nextcloud/files'
import AlarmOffSvg from '@mdi/svg/svg/alarm-off.svg?raw'
import { emit } from '@nextcloud/event-bus'
import {
type Node,
FileAction,
} from '@nextcloud/files'
import { translate as t } from '@nextcloud/l10n'
import Vue from 'vue'
import { FileAction } from '@nextcloud/files'
import { t } from '@nextcloud/l10n'
import { clearReminder } from '../services/reminderService.ts'
import { getVerboseDateString } from '../shared/utils.ts'
@ -20,7 +17,7 @@ export const action = new FileAction({
displayName: () => t('files_reminders', 'Clear reminder'),
title: (nodes: Node[]) => {
title: (nodes: INode[]) => {
const node = nodes.at(0)!
const dueDate = new Date(node.attributes['reminder-due-date'])
return `${t('files_reminders', 'Clear reminder')} ${getVerboseDateString(dueDate)}`
@ -28,7 +25,7 @@ export const action = new FileAction({
iconSvgInline: () => AlarmOffSvg,
enabled: (nodes: Node[]) => {
enabled: (nodes: INode[]) => {
// Only allow on a single node
if (nodes.length !== 1) {
return false
@ -38,11 +35,11 @@ export const action = new FileAction({
return Boolean(dueDate)
},
async exec(node: Node) {
async exec(node: INode) {
if (node.fileid) {
try {
await clearReminder(node.fileid)
Vue.set(node.attributes, 'reminder-due-date', '')
node.attributes['reminder-due-date'] = ''
emit('files:node:updated', node)
return true
} catch {

View file

@ -0,0 +1,40 @@
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { View } from '@nextcloud/files'
import { Folder } from '@nextcloud/files'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { action } from './reminderStatusAction.ts'
describe('reminderStatusAction', () => {
const folder = new Folder({
owner: 'user',
source: 'https://example.com/remote.php/dav/files/user/folder',
attributes: {
'reminder-due-date': '2024-12-25T10:00:00Z',
},
})
beforeEach(() => vi.resetAllMocks())
it('should be enabled for one node with due date', () => {
expect(action.enabled!([folder], {} as unknown as View)).toBe(true)
})
it('should be disabled with more than one node', () => {
expect(action.enabled!([folder, folder], {} as unknown as View)).toBe(false)
})
it('should be disabled if no due date', () => {
const node = folder.clone()
delete node.attributes['reminder-due-date']
expect(action.enabled!([node], {} as unknown as View)).toBe(false)
})
it('should have title based on due date', () => {
expect(action.title!([folder], {} as unknown as View)).toMatchInlineSnapshot('"Reminder set Wednesday, December 25, 2024 at 10:00 AM"')
})
})

View file

@ -3,13 +3,11 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import AlarmSvg from '@mdi/svg/svg/alarm.svg?raw'
import {
type Node,
import type { INode } from '@nextcloud/files'
FileAction,
} from '@nextcloud/files'
import { translate as t } from '@nextcloud/l10n'
import AlarmSvg from '@mdi/svg/svg/alarm.svg?raw'
import { FileAction } from '@nextcloud/files'
import { t } from '@nextcloud/l10n'
import { pickCustomDate } from '../services/customPicker.ts'
import { getVerboseDateString } from '../shared/utils.ts'
@ -20,7 +18,7 @@ export const action = new FileAction({
displayName: () => '',
title: (nodes: Node[]) => {
title: (nodes: INode[]) => {
const node = nodes.at(0)!
const dueDate = new Date(node.attributes['reminder-due-date'])
return `${t('files_reminders', 'Reminder set')} ${getVerboseDateString(dueDate)}`
@ -28,7 +26,7 @@ export const action = new FileAction({
iconSvgInline: () => AlarmSvg,
enabled: (nodes: Node[]) => {
enabled: (nodes: INode[]) => {
// Only allow on a single node
if (nodes.length !== 1) {
return false
@ -38,8 +36,8 @@ export const action = new FileAction({
return Boolean(dueDate)
},
async exec(node: Node) {
pickCustomDate(node)
async exec(node: INode) {
await pickCustomDate(node)
return null
},

View file

@ -3,11 +3,11 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Node, View } from '@nextcloud/files'
import type { INode, View } from '@nextcloud/files'
import CalendarClockSvg from '@mdi/svg/svg/calendar-clock.svg?raw'
import { FileAction } from '@nextcloud/files'
import { translate as t } from '@nextcloud/l10n'
import { t } from '@nextcloud/l10n'
import { pickCustomDate } from '../services/customPicker.ts'
import { SET_REMINDER_MENU_ID } from './setReminderMenuAction.ts'
@ -17,11 +17,11 @@ export const action = new FileAction({
title: () => t('files_reminders', 'Reminder at custom date & time'),
iconSvgInline: () => CalendarClockSvg,
enabled: (nodes: Node[], view: View) => {
enabled: (nodes: INode[], view: View) => {
if (view.id === 'trashbin') {
return false
}
// Only allow on a single node
// Only allow on a single INode
if (nodes.length !== 1) {
return false
}
@ -32,7 +32,7 @@ export const action = new FileAction({
parent: SET_REMINDER_MENU_ID,
async exec(file: Node) {
async exec(file: INode) {
pickCustomDate(file)
return null
},

View file

@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Node, View } from '@nextcloud/files'
import type { INode, View } from '@nextcloud/files'
import AlarmSvg from '@mdi/svg/svg/alarm.svg?raw'
import { FileAction } from '@nextcloud/files'
@ -16,11 +16,11 @@ export const action = new FileAction({
displayName: () => t('files_reminders', 'Set reminder'),
iconSvgInline: () => AlarmSvg,
enabled: (nodes: Node[], view: View) => {
enabled: (nodes: INode[], view: View) => {
if (view.id === 'trashbin') {
return false
}
// Only allow on a single node
// Only allow on a single INode
if (nodes.length !== 1) {
return false
}

View file

@ -3,13 +3,12 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Node, View } from '@nextcloud/files'
import type { INode, View } from '@nextcloud/files'
import { showError, showSuccess } from '@nextcloud/dialogs'
import { emit } from '@nextcloud/event-bus'
import { FileAction } from '@nextcloud/files'
import { t } from '@nextcloud/l10n'
import Vue from 'vue'
import { setReminder } from '../services/reminderService.ts'
import { logger } from '../shared/logger.ts'
import { DateTimePreset, getDateString, getDateTime, getVerboseDateString } from '../shared/utils.ts'
@ -73,11 +72,11 @@ function generateFileAction(option: ReminderOption): FileAction | null {
// Empty svg to hide the icon
iconSvgInline: () => '<svg></svg>',
enabled: (nodes: Node[], view: View) => {
enabled: (nodes: INode[], view: View) => {
if (view.id === 'trashbin') {
return false
}
// Only allow on a single node
// Only allow on a single INode
if (nodes.length !== 1) {
return false
}
@ -88,7 +87,7 @@ function generateFileAction(option: ReminderOption): FileAction | null {
parent: SET_REMINDER_MENU_ID,
async exec(node: Node) {
async exec(node: INode) {
// Can't really happen, but just in case™
if (!node.fileid) {
logger.error('Failed to set reminder, missing file id')
@ -100,7 +99,7 @@ function generateFileAction(option: ReminderOption): FileAction | null {
try {
const dateTime = getDateTime(option.dateTimePreset)!
await setReminder(node.fileid, dateTime)
Vue.set(node.attributes, 'reminder-due-date', dateTime.toISOString())
node.attributes['reminder-due-date'] = dateTime.toISOString()
emit('files:node:updated', node)
showSuccess(t('files_reminders', 'Reminder set for "{fileName}"', { fileName: node.basename }))
} catch (error) {

View file

@ -1,19 +0,0 @@
/**
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { registerDavProperty, registerFileAction } from '@nextcloud/files'
import { action as clearAction } from './actions/clearReminderAction.ts'
import { action as statusAction } from './actions/reminderStatusAction.ts'
import { action as customAction } from './actions/setReminderCustomAction.ts'
import { action as menuAction } from './actions/setReminderMenuAction.ts'
import { actions as suggestionActions } from './actions/setReminderSuggestionActions.ts'
registerDavProperty('nc:reminder-due-date', { nc: 'http://nextcloud.org/ns' })
registerFileAction(statusAction)
registerFileAction(clearAction)
registerFileAction(menuAction)
registerFileAction(customAction)
suggestionActions.forEach((action) => registerFileAction(action))

View file

@ -3,31 +3,16 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Node } from '@nextcloud/files'
import type { INode } from '@nextcloud/files'
import Vue from 'vue'
import { spawnDialog } from '@nextcloud/vue'
import SetCustomReminderModal from '../components/SetCustomReminderModal.vue'
const View = Vue.extend(SetCustomReminderModal)
const mount = document.createElement('div')
mount.id = 'set-custom-reminder-modal'
document.body.appendChild(mount)
// Create a new Vue instance and mount it to our modal container
const CustomReminderModal = new View({
name: 'SetCustomReminderModal',
el: mount,
})
/**
*
* @param node
* @param node - The file or folder node to set the custom reminder for
*/
export function pickCustomDate(node: Node): Promise<void> {
CustomReminderModal.open(node)
// Wait for the modal to close
return new Promise((resolve) => {
CustomReminderModal.$once('close', resolve)
export async function pickCustomDate(node: INode): Promise<void> {
await spawnDialog(SetCustomReminderModal, {
node,
})
}

View file

@ -11,8 +11,9 @@ interface Reminder {
}
/**
* Get the reminder for a specific file
*
* @param fileId
* @param fileId - The file id to get the reminder for
*/
export async function getReminder(fileId: number): Promise<Reminder> {
const url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })
@ -25,9 +26,10 @@ export async function getReminder(fileId: number): Promise<Reminder> {
}
/**
* Set a reminder for a specific file
*
* @param fileId
* @param dueDate
* @param fileId - The file id to set the reminder for
* @param dueDate - The due date for the reminder
*/
export async function setReminder(fileId: number, dueDate: Date): Promise<[]> {
const url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })
@ -40,8 +42,9 @@ export async function setReminder(fileId: number, dueDate: Date): Promise<[]> {
}
/**
* Clear the reminder for a specific file
*
* @param fileId
* @param fileId - The file id to clear the reminder for
*/
export async function clearReminder(fileId: number): Promise<[]> {
const url = generateOcsUrl('/apps/files_reminders/api/v1/{fileId}', { fileId })

View file

@ -44,9 +44,6 @@ module.exports = {
init: path.join(__dirname, 'apps/files_external/src', 'init.ts'),
settings: path.join(__dirname, 'apps/files_external/src', 'settings.js'),
},
files_reminders: {
init: path.join(__dirname, 'apps/files_reminders/src', 'init.ts'),
},
files_sharing: {
additionalScripts: path.join(__dirname, 'apps/files_sharing/src', 'additionalScripts.js'),
collaboration: path.join(__dirname, 'apps/files_sharing/src', 'collaborationresourceshandler.js'),

View file

@ -7,17 +7,20 @@ import { createAppConfig } from '@nextcloud/vite-config'
import { resolve } from 'node:path'
const modules = {
dav: {
'settings-admin-caldav': resolve(import.meta.dirname, 'apps/dav/src', 'settings-admin.ts'),
'settings-admin-example-content': resolve(import.meta.dirname, 'apps/dav/src', 'settings-admin-example-content.ts'),
'settings-personal-availability': resolve(import.meta.dirname, 'apps/dav/src', 'settings-personal-availability.ts'),
},
files_reminders: {
init: resolve(import.meta.dirname, 'apps/files_reminders/src', 'files-init.ts'),
},
files_trashbin: {
init: resolve(import.meta.dirname, 'apps/files_trashbin/src', 'files-init.ts'),
},
files_versions: {
'sidebar-tab': resolve(import.meta.dirname, 'apps/files_versions/src', 'sidebar_tab.ts'),
},
dav: {
'settings-admin-caldav': resolve(import.meta.dirname, 'apps/dav/src', 'settings-admin.ts'),
'settings-admin-example-content': resolve(import.meta.dirname, 'apps/dav/src', 'settings-admin-example-content.ts'),
'settings-personal-availability': resolve(import.meta.dirname, 'apps/dav/src', 'settings-personal-availability.ts'),
},
sharebymail: {
'admin-settings': resolve(import.meta.dirname, 'apps/sharebymail/src', 'settings-admin.ts'),
},

View file

@ -38,6 +38,10 @@ export default defineConfig({
},
test: {
include: ['apps/**/*.{test,spec}.?(c|m)[jt]s?(x)'],
env: {
LANG: 'en_US',
TZ: 'UTC',
},
environment: 'jsdom',
environmentOptions: {
jsdom: {

File diff suppressed because one or more lines are too long

View file

@ -1,10 +1,12 @@
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: MIT
SPDX-FileCopyrightText: @nextcloud/dialogs developers
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
SPDX-FileCopyrightText: Arnout Kazemier
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Borys Serebrov
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: David Clark
@ -47,6 +49,9 @@ This file is generated from multiple sources. Included packages:
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later

1
dist/Plus-BBJJAKrt.chunk.mjs.map vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,10 +1,12 @@
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: MIT
SPDX-FileCopyrightText: @nextcloud/dialogs developers
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
SPDX-FileCopyrightText: Arnout Kazemier
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Borys Serebrov
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: David Clark
@ -47,6 +49,9 @@ This file is generated from multiple sources. Included packages:
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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,10 +1,8 @@
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: ISC
SPDX-License-Identifier: MIT
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: David Myers <hello@davidmyers.dev>
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
@ -16,9 +14,6 @@ SPDX-FileCopyrightText: Rob Cresswell <robcresswell@pm.me>
SPDX-FileCopyrightText: escape-html developers
This file is generated from multiple sources. Included packages:
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later

File diff suppressed because one or more lines are too long

View file

@ -1,10 +1,8 @@
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: ISC
SPDX-License-Identifier: MIT
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: David Myers <hello@davidmyers.dev>
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
@ -16,9 +14,6 @@ SPDX-FileCopyrightText: Rob Cresswell <robcresswell@pm.me>
SPDX-FileCopyrightText: escape-html developers
This file is generated from multiple sources. Included packages:
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

4
dist/core-common.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,3 +1,3 @@
/* extracted by css-entry-points-plugin */
@import './dav-dav-settings-admin-caldav-7NASuukx.chunk.css';
@import './check-BFoYkIs3.chunk.css';
@import './TrashCanOutline-BE4hS1RR.chunk.css';

View file

@ -1,2 +1,2 @@
import{l as i,_ as f,N as b,a as g,r as p,c as R,o as E,w as r,i as n,b as c,d as u,t as l,e as C,j as S,f as m,h as V}from"./check-Ci-sicaQ.chunk.mjs";const h=i("dav","userSyncCalendarsDocUrl","#"),k={name:"CalDavSettings",components:{NcCheckboxRadioSwitch:g,NcSettingsSection:b},setup(){return{t:m}},data(){return{userSyncCalendarsDocUrl:h,sendInvitations:i("dav","sendInvitations"),generateBirthdayCalendar:i("dav","generateBirthdayCalendar"),sendEventReminders:i("dav","sendEventReminders"),sendEventRemindersToSharedUsers:i("dav","sendEventRemindersToSharedUsers"),sendEventRemindersPush:i("dav","sendEventRemindersPush")}},computed:{hint(){return m("dav","Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.").replace("{calendarappstoreopen}",'<a target="_blank" href="../apps/office/calendar">').replace("{calendardocopen}",`<a target="_blank" href="${h}" rel="noreferrer noopener">`).replace(/\{linkclose\}/g,"</a>")},sendInvitationsHelpText(){return m("dav","Please make sure to properly set up {emailopen}the email server{linkclose}.").replace("{emailopen}",'<a href="../admin#mail_general_settings">').replace("{linkclose}","</a>")},sendEventRemindersHelpText(){return m("dav","Please make sure to properly set up {emailopen}the email server{linkclose}.").replace("{emailopen}",'<a href="../admin#mail_general_settings">').replace("{linkclose}","</a>")}},watch:{generateBirthdayCalendar(d){const e=d?"/apps/dav/enableBirthdayCalendar":"/apps/dav/disableBirthdayCalendar";C.post(S(e))},sendInvitations(d){OCP.AppConfig.setValue("dav","sendInvitations",d?"yes":"no")},sendEventReminders(d){OCP.AppConfig.setValue("dav","sendEventReminders",d?"yes":"no")},sendEventRemindersToSharedUsers(d){OCP.AppConfig.setValue("dav","sendEventRemindersToSharedUsers",d?"yes":"no")},sendEventRemindersPush(d){OCP.AppConfig.setValue("dav","sendEventRemindersPush",d?"yes":"no")}}},T=["innerHTML"],w=["innerHTML"],_=["innerHTML"],U={class:"indented"},P={class:"indented"};function H(d,e,x,s,a,v){const o=p("NcCheckboxRadioSwitch"),y=p("NcSettingsSection");return E(),R(y,{name:s.t("dav","Calendar server"),"doc-url":a.userSyncCalendarsDocUrl},{default:r(()=>[n("p",{class:"settings-hint",innerHTML:v.hint},null,8,T),n("p",null,[c(o,{id:"caldavSendInvitations",modelValue:a.sendInvitations,"onUpdate:modelValue":e[0]||(e[0]=t=>a.sendInvitations=t),type:"switch"},{default:r(()=>[u(l(s.t("dav","Send invitations to attendees")),1)]),_:1},8,["modelValue"]),n("em",{innerHTML:v.sendInvitationsHelpText},null,8,w)]),n("p",null,[c(o,{id:"caldavGenerateBirthdayCalendar",modelValue:a.generateBirthdayCalendar,"onUpdate:modelValue":e[1]||(e[1]=t=>a.generateBirthdayCalendar=t),type:"switch",class:"checkbox"},{default:r(()=>[u(l(s.t("dav","Automatically generate a birthday calendar")),1)]),_:1},8,["modelValue"]),n("em",null,l(s.t("dav","Birthday calendars will be generated by a background job.")),1),e[5]||(e[5]=n("br",null,null,-1)),n("em",null,l(s.t("dav","Hence they will not be available immediately after enabling but will show up after some time.")),1)]),n("p",null,[c(o,{id:"caldavSendEventReminders",modelValue:a.sendEventReminders,"onUpdate:modelValue":e[2]||(e[2]=t=>a.sendEventReminders=t),type:"switch"},{default:r(()=>[u(l(s.t("dav","Send notifications for events")),1)]),_:1},8,["modelValue"]),n("em",{innerHTML:v.sendEventRemindersHelpText},null,8,_),e[6]||(e[6]=n("br",null,null,-1)),n("em",null,l(s.t("dav","Notifications are sent via background jobs, so these must occur often enough.")),1)]),n("p",U,[c(o,{id:"caldavSendEventRemindersToSharedGroupMembers",modelValue:a.sendEventRemindersToSharedUsers,"onUpdate:modelValue":e[3]||(e[3]=t=>a.sendEventRemindersToSharedUsers=t),type:"switch",disabled:!a.sendEventReminders},{default:r(()=>[u(l(s.t("dav","Send reminder notifications to calendar sharees as well")),1)]),_:1},8,["modelValue","disabled"]),n("em",null,l(s.t("dav","Reminders are always sent to organizers and attendees.")),1)]),n("p",P,[c(o,{id:"caldavSendEventRemindersPush",modelValue:a.sendEventRemindersPush,"onUpdate:modelValue":e[4]||(e[4]=t=>a.sendEventRemindersPush=t),type:"switch",disabled:!a.sendEventReminders},{default:r(()=>[u(l(s.t("dav","Enable notifications for events via push")),1)]),_:1},8,["modelValue","disabled"])])]),_:1},8,["name","doc-url"])}const I=f(k,[["render",H],["__scopeId","data-v-84465bd0"]]),B=V(I);B.mount("#settings-admin-caldav");
import{l as i,_ as f,N as b,a as g,c as R,e as E,i as C,f as m,r as p,o as S,w as r,j as n,b as c,d as u,t as l,h as V}from"./TrashCanOutline-Das_T9Qh.chunk.mjs";const h=i("dav","userSyncCalendarsDocUrl","#"),k={name:"CalDavSettings",components:{NcCheckboxRadioSwitch:g,NcSettingsSection:b},setup(){return{t:m}},data(){return{userSyncCalendarsDocUrl:h,sendInvitations:i("dav","sendInvitations"),generateBirthdayCalendar:i("dav","generateBirthdayCalendar"),sendEventReminders:i("dav","sendEventReminders"),sendEventRemindersToSharedUsers:i("dav","sendEventRemindersToSharedUsers"),sendEventRemindersPush:i("dav","sendEventRemindersPush")}},computed:{hint(){return m("dav","Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.").replace("{calendarappstoreopen}",'<a target="_blank" href="../apps/office/calendar">').replace("{calendardocopen}",`<a target="_blank" href="${h}" rel="noreferrer noopener">`).replace(/\{linkclose\}/g,"</a>")},sendInvitationsHelpText(){return m("dav","Please make sure to properly set up {emailopen}the email server{linkclose}.").replace("{emailopen}",'<a href="../admin#mail_general_settings">').replace("{linkclose}","</a>")},sendEventRemindersHelpText(){return m("dav","Please make sure to properly set up {emailopen}the email server{linkclose}.").replace("{emailopen}",'<a href="../admin#mail_general_settings">').replace("{linkclose}","</a>")}},watch:{generateBirthdayCalendar(d){const e=d?"/apps/dav/enableBirthdayCalendar":"/apps/dav/disableBirthdayCalendar";E.post(C(e))},sendInvitations(d){OCP.AppConfig.setValue("dav","sendInvitations",d?"yes":"no")},sendEventReminders(d){OCP.AppConfig.setValue("dav","sendEventReminders",d?"yes":"no")},sendEventRemindersToSharedUsers(d){OCP.AppConfig.setValue("dav","sendEventRemindersToSharedUsers",d?"yes":"no")},sendEventRemindersPush(d){OCP.AppConfig.setValue("dav","sendEventRemindersPush",d?"yes":"no")}}},T=["innerHTML"],w=["innerHTML"],_=["innerHTML"],U={class:"indented"},P={class:"indented"};function H(d,e,x,s,a,v){const o=p("NcCheckboxRadioSwitch"),y=p("NcSettingsSection");return S(),R(y,{name:s.t("dav","Calendar server"),"doc-url":a.userSyncCalendarsDocUrl},{default:r(()=>[n("p",{class:"settings-hint",innerHTML:v.hint},null,8,T),n("p",null,[c(o,{id:"caldavSendInvitations",modelValue:a.sendInvitations,"onUpdate:modelValue":e[0]||(e[0]=t=>a.sendInvitations=t),type:"switch"},{default:r(()=>[u(l(s.t("dav","Send invitations to attendees")),1)]),_:1},8,["modelValue"]),n("em",{innerHTML:v.sendInvitationsHelpText},null,8,w)]),n("p",null,[c(o,{id:"caldavGenerateBirthdayCalendar",modelValue:a.generateBirthdayCalendar,"onUpdate:modelValue":e[1]||(e[1]=t=>a.generateBirthdayCalendar=t),type:"switch",class:"checkbox"},{default:r(()=>[u(l(s.t("dav","Automatically generate a birthday calendar")),1)]),_:1},8,["modelValue"]),n("em",null,l(s.t("dav","Birthday calendars will be generated by a background job.")),1),e[5]||(e[5]=n("br",null,null,-1)),n("em",null,l(s.t("dav","Hence they will not be available immediately after enabling but will show up after some time.")),1)]),n("p",null,[c(o,{id:"caldavSendEventReminders",modelValue:a.sendEventReminders,"onUpdate:modelValue":e[2]||(e[2]=t=>a.sendEventReminders=t),type:"switch"},{default:r(()=>[u(l(s.t("dav","Send notifications for events")),1)]),_:1},8,["modelValue"]),n("em",{innerHTML:v.sendEventRemindersHelpText},null,8,_),e[6]||(e[6]=n("br",null,null,-1)),n("em",null,l(s.t("dav","Notifications are sent via background jobs, so these must occur often enough.")),1)]),n("p",U,[c(o,{id:"caldavSendEventRemindersToSharedGroupMembers",modelValue:a.sendEventRemindersToSharedUsers,"onUpdate:modelValue":e[3]||(e[3]=t=>a.sendEventRemindersToSharedUsers=t),type:"switch",disabled:!a.sendEventReminders},{default:r(()=>[u(l(s.t("dav","Send reminder notifications to calendar sharees as well")),1)]),_:1},8,["modelValue","disabled"]),n("em",null,l(s.t("dav","Reminders are always sent to organizers and attendees.")),1)]),n("p",P,[c(o,{id:"caldavSendEventRemindersPush",modelValue:a.sendEventRemindersPush,"onUpdate:modelValue":e[4]||(e[4]=t=>a.sendEventRemindersPush=t),type:"switch",disabled:!a.sendEventReminders},{default:r(()=>[u(l(s.t("dav","Enable notifications for events via push")),1)]),_:1},8,["modelValue","disabled"])])]),_:1},8,["name","doc-url"])}const I=f(k,[["render",H],["__scopeId","data-v-84465bd0"]]),B=V(I);B.mount("#settings-admin-caldav");
//# sourceMappingURL=dav-settings-admin-caldav.mjs.map

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
/* extracted by css-entry-points-plugin */
@import './dav-dav-settings-admin-example-content-BWzlcBW1.chunk.css';
@import './check-BFoYkIs3.chunk.css';
@import './TrashCanOutline-BE4hS1RR.chunk.css';
@import './Plus-BhZ0LWiU.chunk.css';

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,4 +1,4 @@
/* extracted by css-entry-points-plugin */
@import './dav-dav-settings-personal-availability-CTwf8DDv.chunk.css';
@import './check-BFoYkIs3.chunk.css';
@import './TrashCanOutline-BE4hS1RR.chunk.css';
@import './Plus-BhZ0LWiU.chunk.css';

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
.custom-reminder-modal[data-v-a860b574]{margin:0 12px}.files-list__row-action-set-reminder-custom{margin-top:13px;position:relative}.files-list__row-action-set-reminder-custom:before{content:"";margin-block:3px;margin-inline:15px 10px;border-bottom:1px solid var(--color-border-dark);cursor:default;display:flex;height:0;position:absolute;inset-inline:0;top:-10px}

4
dist/files_reminders-init.css vendored Normal file
View file

@ -0,0 +1,4 @@
/* extracted by css-entry-points-plugin */
@import './files_reminders-files_reminders-init-DFVBcfn7.chunk.css';
@import './TrashCanOutline-BE4hS1RR.chunk.css';
@import './Plus-BhZ0LWiU.chunk.css';

File diff suppressed because one or more lines are too long

View file

@ -1,710 +0,0 @@
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-License-Identifier: (MIT AND BSD-3-Clause)
SPDX-FileCopyrightText: string_decoder developers
SPDX-FileCopyrightText: ripemd160 developers
SPDX-FileCopyrightText: rhysd <lin90162@yahoo.co.jp>
SPDX-FileCopyrightText: readable-stream developers
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: browserify-sign developers
SPDX-FileCopyrightText: browserify-rsa 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: 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: Raynos <raynos2@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: Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)
SPDX-FileCopyrightText: Max <max@nextcloud.com>
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Mathias Buus (@mafintosh)
SPDX-FileCopyrightText: Mark <mark@remarkablemark.org>
SPDX-FileCopyrightText: Kirill Fomichev <fanatid@ya.ru> (https://github.com/fanatid)
SPDX-FileCopyrightText: Julian Gruber
SPDX-FileCopyrightText: Joyent
SPDX-FileCopyrightText: Jordan Humphreys <jordan@zurb.com>
SPDX-FileCopyrightText: Jordan Harband <ljharb@gmail.com>
SPDX-FileCopyrightText: Jordan Harband
SPDX-FileCopyrightText: Jonas Schade <derzade@gmail.com>
SPDX-FileCopyrightText: Jeff Sagal <sagalbot@gmail.com>
SPDX-FileCopyrightText: James Halliday
SPDX-FileCopyrightText: Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)
SPDX-FileCopyrightText: Irakli Gozalishvili <rfobic@gmail.com> (http://jeditoolkit.com)
SPDX-FileCopyrightText: Guillaume Chau <guillaume.b.chau@gmail.com>
SPDX-FileCopyrightText: Guillaume Chau
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Feross Aboukhadijeh
SPDX-FileCopyrightText: Fedor Indutny <fedor@indutny.com>
SPDX-FileCopyrightText: Fedor Indutny
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: Dominic Tarr <dominic.tarr@gmail.com> (dominictarr.com)
SPDX-FileCopyrightText: David Clark
SPDX-FileCopyrightText: Daniel Cousens
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Calvin Metcalf <calvin.metcalf@gmail.com>
SPDX-FileCopyrightText: Calvin Metcalf
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: Anthony Fu <anthonyfu117@hotmail.com>
SPDX-FileCopyrightText: Andrea Giammarchi
SPDX-FileCopyrightText: Alkemics
SPDX-FileCopyrightText: @nextcloud/dialogs developers
SPDX-FileCopyrightText:
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
- @nextcloud/browser-storage
- version: 0.4.0
- license: GPL-3.0-or-later
- @nextcloud/vue
- version: 9.0.1
- license: AGPL-3.0-or-later
- @vueuse/core
- version: 13.9.0
- license: MIT
- @vueuse/shared
- version: 13.9.0
- license: MIT
- debounce
- version: 2.2.0
- license: MIT
- rehype-react
- version: 8.0.0
- license: MIT
- splitpanes
- version: 4.0.4
- license: MIT
- vue-router
- version: 4.6.3
- license: MIT
- vue-select
- version: 4.0.0-beta.6
- license: MIT
- vue
- version: 3.5.22
- 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.22
- license: MIT
- @vue/runtime-core
- version: 3.5.22
- license: MIT
- @vue/runtime-dom
- version: 3.5.22
- license: MIT
- @vue/shared
- version: 3.5.22
- license: MIT
- @vueuse/core
- version: 11.3.0
- license: MIT
- @vueuse/shared
- version: 11.3.0
- license: MIT
- bn.js
- version: 4.12.2
- license: MIT
- asn1.js
- version: 4.10.1
- license: MIT
- available-typed-arrays
- version: 1.0.7
- license: MIT
- axios
- version: 1.12.2
- license: MIT
- base64-js
- version: 1.5.1
- license: MIT
- blurhash
- version: 2.0.5
- license: MIT
- bn.js
- version: 5.2.2
- license: MIT
- brorand
- version: 1.1.0
- license: MIT
- browserify-aes
- version: 1.2.0
- license: MIT
- browserify-cipher
- version: 1.0.1
- license: MIT
- browserify-des
- version: 1.0.2
- license: MIT
- browserify-rsa
- version: 4.1.1
- license: MIT
- browserify-sign
- version: 4.2.5
- license: ISC
- buffer-xor
- version: 1.0.3
- license: MIT
- buffer
- version: 5.7.1
- license: MIT
- call-bind-apply-helpers
- version: 1.0.2
- license: MIT
- call-bind
- version: 1.0.8
- license: MIT
- call-bound
- version: 1.0.4
- license: MIT
- cancelable-promise
- version: 4.3.1
- license: MIT
- cipher-base
- version: 1.0.7
- license: MIT
- comma-separated-tokens
- version: 2.0.3
- license: MIT
- core-util-is
- version: 1.0.3
- license: MIT
- bn.js
- version: 4.12.2
- license: MIT
- create-ecdh
- version: 4.0.4
- license: MIT
- create-hash
- version: 1.2.0
- license: MIT
- create-hmac
- version: 1.1.7
- license: MIT
- crypto-browserify
- version: 3.12.1
- 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
- define-data-property
- version: 1.1.4
- license: MIT
- des.js
- version: 1.1.0
- license: MIT
- devlop
- version: 1.1.0
- license: MIT
- bn.js
- version: 4.12.2
- license: MIT
- diffie-hellman
- version: 5.0.3
- license: MIT
- dompurify
- version: 3.3.0
- license: (MPL-2.0 OR Apache-2.0)
- dunder-proto
- version: 1.0.1
- license: MIT
- bn.js
- version: 4.12.2
- license: MIT
- elliptic
- version: 6.6.1
- license: MIT
- emoji-mart-vue-fast
- version: 15.0.5
- license: BSD-3-Clause
- es-define-property
- version: 1.0.1
- license: MIT
- es-errors
- version: 1.3.0
- license: MIT
- es-object-atoms
- version: 1.1.1
- license: MIT
- 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
- evp_bytestokey
- version: 1.0.3
- 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
- for-each
- version: 0.3.5
- license: MIT
- function-bind
- version: 1.1.2
- license: MIT
- get-intrinsic
- version: 1.3.0
- license: MIT
- get-proto
- version: 1.0.1
- license: MIT
- gopd
- version: 1.2.0
- license: MIT
- has-property-descriptors
- version: 1.0.2
- license: MIT
- has-symbols
- version: 1.1.0
- license: MIT
- has-tostringtag
- version: 1.0.2
- license: MIT
- hash-base
- version: 3.0.5
- license: MIT
- hash.js
- version: 1.1.7
- license: MIT
- 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
- hmac-drbg
- version: 1.0.1
- license: MIT
- ieee754
- version: 1.2.1
- license: BSD-3-Clause
- inherits
- version: 2.0.4
- license: ISC
- is-absolute-url
- version: 4.0.1
- license: MIT
- is-callable
- version: 1.2.7
- license: MIT
- is-typed-array
- version: 1.1.15
- license: MIT
- isarray
- version: 1.0.0
- license: MIT
- jquery
- version: 3.7.1
- 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.js
- version: 1.3.5
- license: MIT
- 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.0
- 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
- bn.js
- version: 4.12.2
- license: MIT
- miller-rabin
- version: 4.0.1
- license: MIT
- minimalistic-assert
- version: 1.0.1
- license: ISC
- minimalistic-crypto-utils
- version: 1.0.1
- license: MIT
- buffer
- version: 6.0.3
- license: MIT
- eventemitter3
- version: 5.0.1
- license: MIT
- p-queue
- version: 9.0.1
- license: MIT
- p-timeout
- version: 7.0.1
- license: MIT
- parse-asn1
- version: 5.1.9
- license: ISC
- inherits
- version: 2.0.3
- license: ISC
- util
- version: 0.10.4
- license: MIT
- path
- version: 0.12.7
- license: MIT
- pbkdf2
- version: 3.1.5
- license: MIT
- possible-typed-array-names
- version: 1.1.0
- license: MIT
- process-nextick-args
- version: 2.0.1
- license: MIT
- process
- version: 0.11.10
- license: MIT
- bn.js
- version: 4.12.2
- license: MIT
- public-encrypt
- version: 4.0.3
- license: MIT
- randombytes
- version: 2.1.0
- license: MIT
- randomfill
- version: 1.0.4
- license: MIT
- safe-buffer
- version: 5.1.2
- license: MIT
- string_decoder
- version: 1.1.1
- license: MIT
- readable-stream
- version: 2.3.8
- 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
- hash-base
- version: 3.1.2
- license: MIT
- ripemd160
- version: 2.0.3
- license: MIT
- safe-buffer
- version: 5.2.1
- license: MIT
- set-function-length
- version: 1.2.2
- license: MIT
- sha.js
- version: 2.4.12
- license: (MIT AND BSD-3-Clause)
- space-separated-tokens
- version: 2.0.2
- license: MIT
- readable-stream
- version: 3.6.2
- license: MIT
- stream-browserify
- version: 3.0.0
- 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.4
- license: MIT
- style-to-object
- version: 1.0.11
- license: MIT
- style-to-js
- version: 1.1.18
- license: MIT
- tabbable
- version: 6.3.0
- license: MIT
- isarray
- version: 2.0.5
- license: MIT
- to-buffer
- version: 1.2.2
- 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
- typed-array-buffer
- version: 1.0.3
- 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
- util-deprecate
- version: 1.0.2
- license: MIT
- vfile-message
- version: 4.0.3
- license: MIT
- vfile
- version: 6.0.3
- license: MIT
- vm-browserify
- version: 1.1.2
- license: MIT
- vue-demi
- version: 0.14.10
- license: MIT
- vue-loader
- version: 15.11.1
- license: MIT
- vue
- version: 2.7.16
- license: MIT
- webpack
- version: 5.103.0
- license: MIT
- which-typed-array
- version: 1.1.19
- license: MIT
- nextcloud
- version: 1.0.0
- license: AGPL-3.0-or-later

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
files_reminders-init.js.license

2
dist/files_reminders-init.mjs vendored Normal file

File diff suppressed because one or more lines are too long

12
dist/files_reminders-init.mjs.license vendored Normal file
View file

@ -0,0 +1,12 @@
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
This file is generated from multiple sources. Included packages:
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- nextcloud-ui
- version: 1.0.0
- license: AGPL-3.0-or-later

1
dist/files_reminders-init.mjs.map vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,12 @@
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: Apache-2.0
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
This file is generated from multiple sources. Included packages:
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- nextcloud-ui
- version: 1.0.0
- license: AGPL-3.0-or-later

View file

@ -1,4 +1,4 @@
/* extracted by css-entry-points-plugin */
@import './files_trashbin-files_trashbin-init-nOmQ7X71.chunk.css';
@import './check-BFoYkIs3.chunk.css';
@import './TrashCanOutline-BE4hS1RR.chunk.css';
@import './Plus-BhZ0LWiU.chunk.css';

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,4 +1,4 @@
/* extracted by css-entry-points-plugin */
@import './files_versions-files_versions-sidebar-tab-DbvfeGRa.chunk.css';
@import './check-BFoYkIs3.chunk.css';
@import './TrashCanOutline-BE4hS1RR.chunk.css';
@import './Plus-BhZ0LWiU.chunk.css';

File diff suppressed because one or more lines are too long

View file

@ -9,9 +9,6 @@ This file is generated from multiple sources. Included packages:
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/vue
- version: 9.3.0
- license: AGPL-3.0-or-later
- nextcloud-ui
- version: 1.0.0
- license: AGPL-3.0-or-later

File diff suppressed because one or more lines are too long

View file

@ -9,9 +9,6 @@ This file is generated from multiple sources. Included packages:
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/vue
- version: 9.3.0
- license: AGPL-3.0-or-later
- nextcloud-ui
- version: 1.0.0
- license: AGPL-3.0-or-later

2
dist/index-C7yOPZIm.chunk.mjs vendored Normal file

File diff suppressed because one or more lines are too long

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,11 +1,12 @@
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: MIT
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Perry Mitchell <perry@perrymitchell.net>
SPDX-FileCopyrightText: Rob Cresswell <robcresswell@pm.me>
This file is generated from multiple sources. Included packages:
- vue-material-design-icons
- version: 5.3.1
- license: MIT
- @nextcloud/vue
- version: 9.3.0
- license: AGPL-3.0-or-later
- webdav
- version: 5.8.0
- license: MIT

1
dist/index-Cjutx76A.chunk.mjs.map vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,11 +1,12 @@
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: MIT
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Perry Mitchell <perry@perrymitchell.net>
SPDX-FileCopyrightText: Rob Cresswell <robcresswell@pm.me>
This file is generated from multiple sources. Included packages:
- vue-material-design-icons
- version: 5.3.1
- license: MIT
- @nextcloud/vue
- version: 9.3.0
- license: AGPL-3.0-or-later
- webdav
- version: 5.8.0
- license: MIT

10
dist/index-DC-Z9B7X.chunk.mjs vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
dist/logger-B8N0nRU7.chunk.mjs vendored Normal file
View file

@ -0,0 +1,2 @@
import{g as t}from"./Plus-BBJJAKrt.chunk.mjs";const o=t().setApp("dav").detectUser().build();export{o as l};
//# sourceMappingURL=logger-B8N0nRU7.chunk.mjs.map

View file

@ -1 +1 @@
{"version":3,"file":"logger-BUtEjzY9.chunk.mjs","sources":["../build/frontend/apps/dav/src/service/logger.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.setApp('dav')\n\t.detectUser()\n\t.build()\n"],"names":["logger","getLoggerBuilder"],"mappings":"8CAOO,MAAMA,EAASC,IACpB,OAAO,KAAK,EACZ,WAAA,EACA,MAAA"}
{"version":3,"file":"logger-B8N0nRU7.chunk.mjs","sources":["../build/frontend/apps/dav/src/service/logger.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.setApp('dav')\n\t.detectUser()\n\t.build()\n"],"names":["logger","getLoggerBuilder"],"mappings":"8CAOO,MAAMA,EAASC,IACpB,OAAO,KAAK,EACZ,WAAA,EACA,MAAA"}

View file

@ -1,2 +0,0 @@
import{g as t}from"./Plus-BGKC2YZR.chunk.mjs";const o=t().setApp("dav").detectUser().build();export{o as l};
//# sourceMappingURL=logger-BUtEjzY9.chunk.mjs.map

View file

@ -1,2 +0,0 @@
import{y as G,k as H,z as K,A as Z,B as tt,C as nt,D as E,E as C,G as L,H as et,I as st,J as ot,K as ct,L as at,n as N,M as rt}from"./check-Ci-sicaQ.chunk.mjs";let W;const I=t=>W=t,q=Symbol();function A(t){return t&&typeof t=="object"&&Object.prototype.toString.call(t)==="[object Object]"&&typeof t.toJSON!="function"}var w;(function(t){t.direct="direct",t.patchObject="patch object",t.patchFunction="patch function"})(w||(w={}));function dt(){const t=G(!0),o=t.run(()=>H({}));let e=[],n=[];const a=K({install(i){I(a),a._a=i,i.provide(q,a),i.config.globalProperties.$pinia=a,n.forEach(r=>e.push(r)),n=[]},use(i){return this._a?e.push(i):n.push(i),this},_p:e,_a:null,_e:t,_s:new Map,state:o});return a}const Q=()=>{};function B(t,o,e,n=Q){t.add(o);const a=()=>{t.delete(o)&&n()};return!e&&et()&&st(a),a}function m(t,...o){t.forEach(e=>{e(...o)})}const it=t=>t(),D=Symbol(),x=Symbol();function k(t,o){t instanceof Map&&o instanceof Map?o.forEach((e,n)=>t.set(n,e)):t instanceof Set&&o instanceof Set&&o.forEach(t.add,t);for(const e in o){if(!o.hasOwnProperty(e))continue;const n=o[e],a=t[e];A(a)&&A(n)&&t.hasOwnProperty(e)&&!E(n)&&!C(n)?t[e]=k(a,n):t[e]=n}return t}const ut=Symbol();function ft(t){return!A(t)||!Object.prototype.hasOwnProperty.call(t,ut)}const{assign:p}=Object;function lt(t){return!!(E(t)&&t.effect)}function pt(t,o,e,n){const{state:a,actions:i,getters:r}=o,j=e.state.value[t];let h;function d(){j||(e.state.value[t]=a?a():{});const y=at(e.state.value[t]);return p(y,i,Object.keys(r||{}).reduce((b,_)=>(b[_]=K(N(()=>{I(e);const v=e._s.get(t);return r[_].call(v,v)})),b),{}))}return h=R(t,d,o,e,n,!0),h}function R(t,o,e={},n,a,i){let r;const j=p({actions:{}},e),h={deep:!0};let d,y,b=new Set,_=new Set,v;const S=n.state.value[t];!i&&!S&&(n.state.value[t]={}),H({});let F;function J(s){let c;d=y=!1,typeof s=="function"?(s(n.state.value[t]),c={type:w.patchFunction,storeId:t,events:v}):(k(n.state.value[t],s),c={type:w.patchObject,payload:s,storeId:t,events:v});const u=F=Symbol();ct().then(()=>{F===u&&(d=!0)}),y=!0,m(b,c,n.state.value[t])}const T=i?function(){const{state:s}=e,c=s?s():{};this.$patch(u=>{p(u,c)})}:Q;function U(){r.stop(),b.clear(),_.clear(),n._s.delete(t)}const z=(s,c="")=>{if(D in s)return s[x]=c,s;const u=function(){I(n);const P=Array.from(arguments),$=new Set,M=new Set;function X(f){$.add(f)}function Y(f){M.add(f)}m(_,{args:P,name:u[x],store:l,after:X,onError:Y});let g;try{g=s.apply(this&&this.$id===t?this:l,P)}catch(f){throw m(M,f),f}return g instanceof Promise?g.then(f=>(m($,f),f)).catch(f=>(m(M,f),Promise.reject(f))):(m($,g),g)};return u[D]=!0,u[x]=c,u},V={_p:n,$id:t,$onAction:B.bind(null,_),$patch:J,$reset:T,$subscribe(s,c={}){const u=B(b,s,c.detached,()=>P()),P=r.run(()=>ot(()=>n.state.value[t],$=>{(c.flush==="sync"?y:d)&&s({storeId:t,type:w.direct,events:v},$)},p({},h,c)));return u},$dispose:U},l=nt(V);n._s.set(t,l);const O=(n._a&&n._a.runWithContext||it)(()=>n._e.run(()=>(r=G()).run(()=>o({action:z}))));for(const s in O){const c=O[s];if(E(c)&&!lt(c)||C(c))i||(S&&ft(c)&&(E(c)?c.value=S[s]:k(c,S[s])),n.state.value[t][s]=c);else if(typeof c=="function"){const u=z(c,s);O[s]=u,j.actions[s]=c}}return p(l,O),p(L(l),O),Object.defineProperty(l,"$state",{get:()=>n.state.value[t],set:s=>{J(c=>{p(c,s)})}}),n._p.forEach(s=>{p(l,r.run(()=>s({store:l,app:n._a,pinia:n,options:j})))}),S&&i&&e.hydrate&&e.hydrate(l.$state,S),d=!0,y=!0,l}function yt(t,o,e){let n;const a=typeof o=="function";n=a?e:o;function i(r,j){const h=tt();return r=r||(h?Z(q,null):null),r&&I(r),r=W,r._s.has(t)||(a?R(t,o,n,r):pt(t,n,r)),r._s.get(t)}return i.$id=t,i}function bt(t){const o=L(t),e={};for(const n in o){const a=o[n];a.effect?e[n]=N({get:()=>t[n],set(i){t[n]=i}}):(E(a)||C(a))&&(e[n]=rt(t,n))}return e}export{dt as c,yt as d,bt as s};
//# sourceMappingURL=pinia-CwPIn86H.chunk.mjs.map

2
dist/pinia-DEgZKNbN.chunk.mjs vendored Normal file
View file

@ -0,0 +1,2 @@
import{y as G,k as H,z as K,A as Z,B as tt,C as nt,D as E,E as C,G as L,H as et,I as st,J as ot,K as ct,L as at,n as N,M as rt}from"./TrashCanOutline-Das_T9Qh.chunk.mjs";let W;const I=t=>W=t,q=Symbol();function A(t){return t&&typeof t=="object"&&Object.prototype.toString.call(t)==="[object Object]"&&typeof t.toJSON!="function"}var w;(function(t){t.direct="direct",t.patchObject="patch object",t.patchFunction="patch function"})(w||(w={}));function dt(){const t=G(!0),o=t.run(()=>H({}));let e=[],n=[];const a=K({install(i){I(a),a._a=i,i.provide(q,a),i.config.globalProperties.$pinia=a,n.forEach(r=>e.push(r)),n=[]},use(i){return this._a?e.push(i):n.push(i),this},_p:e,_a:null,_e:t,_s:new Map,state:o});return a}const Q=()=>{};function B(t,o,e,n=Q){t.add(o);const a=()=>{t.delete(o)&&n()};return!e&&et()&&st(a),a}function m(t,...o){t.forEach(e=>{e(...o)})}const it=t=>t(),D=Symbol(),x=Symbol();function k(t,o){t instanceof Map&&o instanceof Map?o.forEach((e,n)=>t.set(n,e)):t instanceof Set&&o instanceof Set&&o.forEach(t.add,t);for(const e in o){if(!o.hasOwnProperty(e))continue;const n=o[e],a=t[e];A(a)&&A(n)&&t.hasOwnProperty(e)&&!E(n)&&!C(n)?t[e]=k(a,n):t[e]=n}return t}const ut=Symbol();function ft(t){return!A(t)||!Object.prototype.hasOwnProperty.call(t,ut)}const{assign:p}=Object;function lt(t){return!!(E(t)&&t.effect)}function pt(t,o,e,n){const{state:a,actions:i,getters:r}=o,j=e.state.value[t];let h;function d(){j||(e.state.value[t]=a?a():{});const y=at(e.state.value[t]);return p(y,i,Object.keys(r||{}).reduce((b,_)=>(b[_]=K(N(()=>{I(e);const v=e._s.get(t);return r[_].call(v,v)})),b),{}))}return h=R(t,d,o,e,n,!0),h}function R(t,o,e={},n,a,i){let r;const j=p({actions:{}},e),h={deep:!0};let d,y,b=new Set,_=new Set,v;const S=n.state.value[t];!i&&!S&&(n.state.value[t]={}),H({});let F;function J(s){let c;d=y=!1,typeof s=="function"?(s(n.state.value[t]),c={type:w.patchFunction,storeId:t,events:v}):(k(n.state.value[t],s),c={type:w.patchObject,payload:s,storeId:t,events:v});const u=F=Symbol();ct().then(()=>{F===u&&(d=!0)}),y=!0,m(b,c,n.state.value[t])}const T=i?function(){const{state:s}=e,c=s?s():{};this.$patch(u=>{p(u,c)})}:Q;function U(){r.stop(),b.clear(),_.clear(),n._s.delete(t)}const z=(s,c="")=>{if(D in s)return s[x]=c,s;const u=function(){I(n);const P=Array.from(arguments),$=new Set,M=new Set;function X(f){$.add(f)}function Y(f){M.add(f)}m(_,{args:P,name:u[x],store:l,after:X,onError:Y});let g;try{g=s.apply(this&&this.$id===t?this:l,P)}catch(f){throw m(M,f),f}return g instanceof Promise?g.then(f=>(m($,f),f)).catch(f=>(m(M,f),Promise.reject(f))):(m($,g),g)};return u[D]=!0,u[x]=c,u},V={_p:n,$id:t,$onAction:B.bind(null,_),$patch:J,$reset:T,$subscribe(s,c={}){const u=B(b,s,c.detached,()=>P()),P=r.run(()=>ot(()=>n.state.value[t],$=>{(c.flush==="sync"?y:d)&&s({storeId:t,type:w.direct,events:v},$)},p({},h,c)));return u},$dispose:U},l=nt(V);n._s.set(t,l);const O=(n._a&&n._a.runWithContext||it)(()=>n._e.run(()=>(r=G()).run(()=>o({action:z}))));for(const s in O){const c=O[s];if(E(c)&&!lt(c)||C(c))i||(S&&ft(c)&&(E(c)?c.value=S[s]:k(c,S[s])),n.state.value[t][s]=c);else if(typeof c=="function"){const u=z(c,s);O[s]=u,j.actions[s]=c}}return p(l,O),p(L(l),O),Object.defineProperty(l,"$state",{get:()=>n.state.value[t],set:s=>{J(c=>{p(c,s)})}}),n._p.forEach(s=>{p(l,r.run(()=>s({store:l,app:n._a,pinia:n,options:j})))}),S&&i&&e.hydrate&&e.hydrate(l.$state,S),d=!0,y=!0,l}function yt(t,o,e){let n;const a=typeof o=="function";n=a?e:o;function i(r,j){const h=tt();return r=r||(h?Z(q,null):null),r&&I(r),r=W,r._s.has(t)||(a?R(t,o,n,r):pt(t,n,r)),r._s.get(t)}return i.$id=t,i}function bt(t){const o=L(t),e={};for(const n in o){const a=o[n];a.effect?e[n]=N({get:()=>t[n],set(i){t[n]=i}}):(E(a)||C(a))&&(e[n]=rt(t,n))}return e}export{dt as c,yt as d,bt as s};
//# sourceMappingURL=pinia-DEgZKNbN.chunk.mjs.map

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
/* extracted by css-entry-points-plugin */
@import './check-BFoYkIs3.chunk.css';
@import './TrashCanOutline-BE4hS1RR.chunk.css';
@import './Plus-BhZ0LWiU.chunk.css';

View file

@ -1,2 +1,2 @@
import{_ as u,N as b,a as w,r as l,c as f,o as g,w as r,b as d,d as p,t as m,g as S,e as I,f as c,l as h,h as M}from"./check-Ci-sicaQ.chunk.mjs";import{g as k,s as R}from"./Plus-BGKC2YZR.chunk.mjs";import{c as T}from"./index-EaAAXTXx.chunk.mjs";const V=k().detectLogLevel().setApp("sharebymail").build(),v={name:"AdminSettings",components:{NcCheckboxRadioSwitch:w,NcSettingsSection:b},setup(){return{t:c}},data(){return{sendPasswordMail:h("sharebymail","sendPasswordMail"),replyToInitiator:h("sharebymail","replyToInitiator")}},watch:{sendPasswordMail(e){this.update("sendpasswordmail",e)},replyToInitiator(e){this.update("replyToInitiator",e)}},methods:{async update(e,a){await T();const o=S("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"sharebymail",key:e}),t=a?"yes":"no";try{const{data:s}=await I.post(o,{value:t});this.handleResponse({status:s.ocs?.meta?.status})}catch(s){this.handleResponse({errorMessage:c("sharebymail","Unable to update share by mail config"),error:s})}},async handleResponse({status:e,errorMessage:a,error:o}){e!=="ok"&&(R(a),V.error(a,{error:o}))}}};function N(e,a,o,t,s,x){const n=l("NcCheckboxRadioSwitch"),y=l("NcSettingsSection");return g(),f(y,{name:t.t("sharebymail","Share by mail"),description:t.t("sharebymail","Allows people to share a personalized link to a file or folder by putting in an email address.")},{default:r(()=>[d(n,{modelValue:s.sendPasswordMail,"onUpdate:modelValue":a[0]||(a[0]=i=>s.sendPasswordMail=i),type:"switch"},{default:r(()=>[p(m(t.t("sharebymail","Send password by mail")),1)]),_:1},8,["modelValue"]),d(n,{modelValue:s.replyToInitiator,"onUpdate:modelValue":a[1]||(a[1]=i=>s.replyToInitiator=i),type:"switch"},{default:r(()=>[p(m(t.t("sharebymail","Reply to initiator")),1)]),_:1},8,["modelValue"])]),_:1},8,["name","description"])}const P=u(v,[["render",N]]),_=M(P);_.mount("#vue-admin-sharebymail");
import{_ as u,N as b,a as w,r as l,c as f,o as g,w as r,b as d,d as p,t as m,g as S,e as I,f as c,l as h,h as M}from"./TrashCanOutline-Das_T9Qh.chunk.mjs";import{g as k,s as R}from"./Plus-BBJJAKrt.chunk.mjs";import{c as T}from"./index-C7yOPZIm.chunk.mjs";const V=k().detectLogLevel().setApp("sharebymail").build(),v={name:"AdminSettings",components:{NcCheckboxRadioSwitch:w,NcSettingsSection:b},setup(){return{t:c}},data(){return{sendPasswordMail:h("sharebymail","sendPasswordMail"),replyToInitiator:h("sharebymail","replyToInitiator")}},watch:{sendPasswordMail(e){this.update("sendpasswordmail",e)},replyToInitiator(e){this.update("replyToInitiator",e)}},methods:{async update(e,a){await T();const o=S("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"sharebymail",key:e}),t=a?"yes":"no";try{const{data:s}=await I.post(o,{value:t});this.handleResponse({status:s.ocs?.meta?.status})}catch(s){this.handleResponse({errorMessage:c("sharebymail","Unable to update share by mail config"),error:s})}},async handleResponse({status:e,errorMessage:a,error:o}){e!=="ok"&&(R(a),V.error(a,{error:o}))}}};function N(e,a,o,t,s,x){const n=l("NcCheckboxRadioSwitch"),y=l("NcSettingsSection");return g(),f(y,{name:t.t("sharebymail","Share by mail"),description:t.t("sharebymail","Allows people to share a personalized link to a file or folder by putting in an email address.")},{default:r(()=>[d(n,{modelValue:s.sendPasswordMail,"onUpdate:modelValue":a[0]||(a[0]=i=>s.sendPasswordMail=i),type:"switch"},{default:r(()=>[p(m(t.t("sharebymail","Send password by mail")),1)]),_:1},8,["modelValue"]),d(n,{modelValue:s.replyToInitiator,"onUpdate:modelValue":a[1]||(a[1]=i=>s.replyToInitiator=i),type:"switch"},{default:r(()=>[p(m(t.t("sharebymail","Reply to initiator")),1)]),_:1},8,["modelValue"])]),_:1},8,["name","description"])}const P=u(v,[["render",N]]),_=M(P);_.mount("#vue-admin-sharebymail");
//# sourceMappingURL=sharebymail-admin-settings.mjs.map

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
/* extracted by css-entry-points-plugin */
@import './twofactor_backupcodes-twofactor_backupcodes-settings-personal-Dny2IOsk.chunk.css';
@import './check-BFoYkIs3.chunk.css';
@import './TrashCanOutline-BE4hS1RR.chunk.css';
@import './Plus-BhZ0LWiU.chunk.css';

View file

@ -1,3 +1,3 @@
import{d as U,c as A}from"./pinia-CwPIn86H.chunk.mjs";import{f as t,j as I,e as M,l as R,k as m,m as j,n as x,p as i,o as n,c as E,u as a,w as k,d as p,t as u,q as L,s as q,F as _,i as f,v as B,x as g,b as y,_ as F,h as G}from"./check-Ci-sicaQ.chunk.mjs";import{g as H,a as $,s as P,N as w}from"./Plus-BGKC2YZR.chunk.mjs";import{c as z}from"./index-EaAAXTXx.chunk.mjs";const D=H().detectLogLevel().setApp("twofactor_backupcodes").build();function J(d){const c=$().theming.name||"Nextcloud",e=window.open("",t("twofactor_backupcodes","{name} backup codes",{name:c}));if(!e)throw P(t("twofactor_backupcodes","Unable to open a new tab for printing")),new Error("Unable to open a new tab for printing");const o=e.document.createElement("h1");o.textContent=t("twofactor_backupcodes","{name} backup codes",{name:c});const s=e.document.createElement("pre");for(const b of d){const r=e.document.createTextNode(b);s.appendChild(r),s.appendChild(e.document.createElement("br"))}e.document.body.innerHTML="",e.document.body.appendChild(o),e.document.body.appendChild(s),e.print(),e.close()}async function K(){const d=I("/apps/twofactor_backupcodes/settings/create"),{data:c}=await M.post(d);return c}const v=R("twofactor_backupcodes","state"),O=U("twofactor_backupcodes",()=>{const d=m(v.enabled),c=m(v.total),e=m(v.used),o=m([]);async function s(){d.value=!1;const{codes:b,state:r}=await K();d.value=r.enabled,c.value=r.total,e.value=r.used,o.value=b}return{enabled:d,total:c,used:e,codes:o,generate:s}}),Q=["aria-label"],V=j({__name:"PersonalSettings",setup(d){const c=$().theming.name??"Nextcloud",e=O(),o=m(!1),s=x(()=>e.codes&&e.codes.length>0),b=c+"-backup-codes.txt",r=x(()=>s.value?"data:text/plain,"+encodeURIComponent(e.codes.reduce((l,C)=>l+C+`
import{d as U,c as A}from"./pinia-DEgZKNbN.chunk.mjs";import{f as t,i as I,e as M,l as R,k as m,m as j,n as x,p as i,o as n,c as E,u as a,w as k,d as p,t as u,q as L,s as q,F as _,j as f,v as B,x as g,b as y,_ as F,h as G}from"./TrashCanOutline-Das_T9Qh.chunk.mjs";import{g as H,a as $,s as P,N as w}from"./Plus-BBJJAKrt.chunk.mjs";import{c as z}from"./index-C7yOPZIm.chunk.mjs";const D=H().detectLogLevel().setApp("twofactor_backupcodes").build();function J(d){const c=$().theming.name||"Nextcloud",e=window.open("",t("twofactor_backupcodes","{name} backup codes",{name:c}));if(!e)throw P(t("twofactor_backupcodes","Unable to open a new tab for printing")),new Error("Unable to open a new tab for printing");const o=e.document.createElement("h1");o.textContent=t("twofactor_backupcodes","{name} backup codes",{name:c});const s=e.document.createElement("pre");for(const b of d){const r=e.document.createTextNode(b);s.appendChild(r),s.appendChild(e.document.createElement("br"))}e.document.body.innerHTML="",e.document.body.appendChild(o),e.document.body.appendChild(s),e.print(),e.close()}async function K(){const d=I("/apps/twofactor_backupcodes/settings/create"),{data:c}=await M.post(d);return c}const v=R("twofactor_backupcodes","state"),O=U("twofactor_backupcodes",()=>{const d=m(v.enabled),c=m(v.total),e=m(v.used),o=m([]);async function s(){d.value=!1;const{codes:b,state:r}=await K();d.value=r.enabled,c.value=r.total,e.value=r.used,o.value=b}return{enabled:d,total:c,used:e,codes:o,generate:s}}),Q=["aria-label"],V=j({__name:"PersonalSettings",setup(d){const c=$().theming.name??"Nextcloud",e=O(),o=m(!1),s=x(()=>e.codes&&e.codes.length>0),b=c+"-backup-codes.txt",r=x(()=>s.value?"data:text/plain,"+encodeURIComponent(e.codes.reduce((l,C)=>l+C+`
`,"")):"");async function h(){await z(),o.value=!0;try{await e.generate()}catch(l){D.error("Error generating backup codes",{error:l}),P(t("twofactor_backupcodes","An error occurred while generating your backup codes"))}finally{o.value=!1}}function T(){J(!e.codes||e.codes.length===0?[]:e.codes)}return(l,C)=>(n(),i("div",{class:g(l.$style.backupcodesSettings)},[a(e).enabled?(n(),i(_,{key:1},[f("p",null,[s.value?(n(),i(_,{key:1},[p(u(a(t)("twofactor_backupcodes","These are your backup codes. Please save and/or print them as you will not be able to read the codes again later."))+" ",1),f("ul",{"aria-label":a(t)("twofactor_backupcodes","List of backup codes")},[(n(!0),i(_,null,B(a(e).codes,S=>(n(),i("li",{key:S,class:g(l.$style.backupcodesSettings__code)},u(S),3))),128))],8,Q)],64)):(n(),i(_,{key:0},[p(u(a(t)("twofactor_backupcodes","Backup codes have been generated. {used} of {total} codes have been used.",{used:a(e).used,total:a(e).total})),1)],64))]),f("p",{class:g(l.$style.backupcodesSettings__actions)},[y(a(w),{id:"generate-backup-codes",variant:"error",onClick:h},{default:k(()=>[p(u(a(t)("twofactor_backupcodes","Regenerate backup codes")),1)]),_:1}),s.value?(n(),i(_,{key:0},[y(a(w),{onClick:T},{default:k(()=>[p(u(a(t)("twofactor_backupcodes","Print backup codes")),1)]),_:1}),y(a(w),{href:r.value,download:b,variant:"primary"},{default:k(()=>[p(u(a(t)("twofactor_backupcodes","Save backup codes")),1)]),_:1},8,["href"])],64)):L("",!0)],2),f("p",null,[f("em",null,u(a(t)("twofactor_backupcodes","If you regenerate backup codes, you automatically invalidate old codes.")),1)])],64)):(n(),E(a(w),{key:0,disabled:o.value,variant:"primary",onClick:h},{icon:k(()=>[o.value?(n(),E(a(q),{key:0})):L("",!0)]),default:k(()=>[p(" "+u(a(t)("twofactor_backupcodes","Generate backup codes")),1)]),_:1},8,["disabled"]))],2))}}),W="_backupcodesSettings_bnkw8_2",X="_backupcodesSettings__code_bnkw8_7",Y="_backupcodesSettings__actions_bnkw8_13",Z={backupcodesSettings:W,backupcodesSettings__code:X,backupcodesSettings__actions:Y},ee={$style:Z},ae=F(V,[["__cssModules",ee]]),te=A(),N=G(ae);N.use(te),N.mount("#twofactor-backupcodes-settings");
//# sourceMappingURL=twofactor_backupcodes-settings-personal.mjs.map

File diff suppressed because one or more lines are too long

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