mirror of
https://github.com/nextcloud/server.git
synced 2026-06-14 19:20:35 -04:00
Merge pull request #56694 from nextcloud/refactor/files_reminders-vue3
This commit is contained in:
commit
3b2a306a67
106 changed files with 411 additions and 1058 deletions
|
|
@ -36,6 +36,7 @@ class LoadAdditionalScriptsListener implements IEventListener {
|
|||
return;
|
||||
}
|
||||
|
||||
Util::addStyle(Application::APP_ID, 'init');
|
||||
Util::addInitScript(Application::APP_ID, 'init');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
20
apps/files_reminders/src/files-init.ts
Normal file
20
apps/files_reminders/src/files-init.ts
Normal 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))
|
||||
|
|
@ -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"')
|
||||
})
|
||||
})
|
||||
|
|
@ -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 {
|
||||
|
|
@ -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"')
|
||||
})
|
||||
})
|
||||
|
|
@ -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
|
||||
},
|
||||
|
||||
|
|
@ -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
|
||||
},
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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) {
|
||||
|
|
@ -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))
|
||||
|
|
@ -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,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 })
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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
1
dist/Plus-BBJJAKrt.chunk.mjs.map
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -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-BGKC2YZR.chunk.mjs.map
vendored
1
dist/Plus-BGKC2YZR.chunk.mjs.map
vendored
File diff suppressed because one or more lines are too long
2
dist/SetStatusModal-B1SjMMmn.chunk.mjs
vendored
2
dist/SetStatusModal-B1SjMMmn.chunk.mjs
vendored
File diff suppressed because one or more lines are too long
2
dist/SetStatusModal-DOdjYW6e.chunk.mjs
vendored
Normal file
2
dist/SetStatusModal-DOdjYW6e.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
1
dist/TrashCanOutline-BE4hS1RR.chunk.css
vendored
Normal file
1
dist/TrashCanOutline-BE4hS1RR.chunk.css
vendored
Normal file
File diff suppressed because one or more lines are too long
8
dist/TrashCanOutline-Das_T9Qh.chunk.mjs
vendored
Normal file
8
dist/TrashCanOutline-Das_T9Qh.chunk.mjs
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -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
|
||||
1
dist/TrashCanOutline-Das_T9Qh.chunk.mjs.map
vendored
Normal file
1
dist/TrashCanOutline-Das_T9Qh.chunk.mjs.map
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -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
|
||||
1
dist/TrashCanOutline-DwKWr4VT.chunk.mjs.map
vendored
1
dist/TrashCanOutline-DwKWr4VT.chunk.mjs.map
vendored
File diff suppressed because one or more lines are too long
1
dist/check-BFoYkIs3.chunk.css
vendored
1
dist/check-BFoYkIs3.chunk.css
vendored
File diff suppressed because one or more lines are too long
8
dist/check-Ci-sicaQ.chunk.mjs
vendored
8
dist/check-Ci-sicaQ.chunk.mjs
vendored
File diff suppressed because one or more lines are too long
1
dist/check-Ci-sicaQ.chunk.mjs.map
vendored
1
dist/check-Ci-sicaQ.chunk.mjs.map
vendored
File diff suppressed because one or more lines are too long
4
dist/core-common.js
vendored
4
dist/core-common.js
vendored
File diff suppressed because one or more lines are too long
2
dist/core-common.js.map
vendored
2
dist/core-common.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/dav-settings-admin-caldav.css
vendored
2
dist/dav-settings-admin-caldav.css
vendored
|
|
@ -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';
|
||||
2
dist/dav-settings-admin-caldav.mjs
vendored
2
dist/dav-settings-admin-caldav.mjs
vendored
|
|
@ -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
|
||||
|
|
|
|||
2
dist/dav-settings-admin-caldav.mjs.map
vendored
2
dist/dav-settings-admin-caldav.mjs.map
vendored
File diff suppressed because one or more lines are too long
2
dist/dav-settings-admin-example-content.css
vendored
2
dist/dav-settings-admin-example-content.css
vendored
|
|
@ -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';
|
||||
2
dist/dav-settings-admin-example-content.mjs
vendored
2
dist/dav-settings-admin-example-content.mjs
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
dist/dav-settings-personal-availability.css
vendored
2
dist/dav-settings-personal-availability.css
vendored
|
|
@ -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';
|
||||
6
dist/dav-settings-personal-availability.mjs
vendored
6
dist/dav-settings-personal-availability.mjs
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
dist/files_reminders-files_reminders-init-DFVBcfn7.chunk.css
vendored
Normal file
1
dist/files_reminders-files_reminders-init-DFVBcfn7.chunk.css
vendored
Normal 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
4
dist/files_reminders-init.css
vendored
Normal 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';
|
||||
2
dist/files_reminders-init.js
vendored
2
dist/files_reminders-init.js
vendored
File diff suppressed because one or more lines are too long
710
dist/files_reminders-init.js.license
vendored
710
dist/files_reminders-init.js.license
vendored
|
|
@ -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
|
||||
1
dist/files_reminders-init.js.map
vendored
1
dist/files_reminders-init.js.map
vendored
File diff suppressed because one or more lines are too long
1
dist/files_reminders-init.js.map.license
vendored
1
dist/files_reminders-init.js.map.license
vendored
|
|
@ -1 +0,0 @@
|
|||
files_reminders-init.js.license
|
||||
2
dist/files_reminders-init.mjs
vendored
Normal file
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
12
dist/files_reminders-init.mjs.license
vendored
Normal 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
1
dist/files_reminders-init.mjs.map
vendored
Normal file
File diff suppressed because one or more lines are too long
12
dist/files_reminders-init.mjs.map.license
vendored
Normal file
12
dist/files_reminders-init.mjs.map.license
vendored
Normal 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
|
||||
2
dist/files_trashbin-init.css
vendored
2
dist/files_trashbin-init.css
vendored
|
|
@ -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';
|
||||
4
dist/files_trashbin-init.mjs
vendored
4
dist/files_trashbin-init.mjs
vendored
File diff suppressed because one or more lines are too long
2
dist/files_trashbin-init.mjs.map
vendored
2
dist/files_trashbin-init.mjs.map
vendored
File diff suppressed because one or more lines are too long
2
dist/files_versions-sidebar-tab.css
vendored
2
dist/files_versions-sidebar-tab.css
vendored
|
|
@ -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';
|
||||
8
dist/files_versions-sidebar-tab.mjs
vendored
8
dist/files_versions-sidebar-tab.mjs
vendored
File diff suppressed because one or more lines are too long
3
dist/files_versions-sidebar-tab.mjs.license
vendored
3
dist/files_versions-sidebar-tab.mjs.license
vendored
|
|
@ -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/files_versions-sidebar-tab.mjs.map
vendored
2
dist/files_versions-sidebar-tab.mjs.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -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
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
|
|
@ -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
1
dist/index-Cjutx76A.chunk.mjs.map
vendored
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -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
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
10
dist/index-Dr9RAte9.chunk.mjs
vendored
10
dist/index-Dr9RAte9.chunk.mjs
vendored
File diff suppressed because one or more lines are too long
2
dist/index-EaAAXTXx.chunk.mjs
vendored
2
dist/index-EaAAXTXx.chunk.mjs
vendored
File diff suppressed because one or more lines are too long
2
dist/logger-B8N0nRU7.chunk.mjs
vendored
Normal file
2
dist/logger-B8N0nRU7.chunk.mjs
vendored
Normal 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
|
||||
|
|
@ -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"}
|
||||
2
dist/logger-BUtEjzY9.chunk.mjs
vendored
2
dist/logger-BUtEjzY9.chunk.mjs
vendored
|
|
@ -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
|
||||
2
dist/pinia-CwPIn86H.chunk.mjs
vendored
2
dist/pinia-CwPIn86H.chunk.mjs
vendored
|
|
@ -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
2
dist/pinia-DEgZKNbN.chunk.mjs
vendored
Normal 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
2
dist/sharebymail-admin-settings.css
vendored
2
dist/sharebymail-admin-settings.css
vendored
|
|
@ -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';
|
||||
2
dist/sharebymail-admin-settings.mjs
vendored
2
dist/sharebymail-admin-settings.mjs
vendored
|
|
@ -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
|
||||
|
|
|
|||
2
dist/sharebymail-admin-settings.mjs.map
vendored
2
dist/sharebymail-admin-settings.mjs.map
vendored
File diff suppressed because one or more lines are too long
|
|
@ -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';
|
||||
|
|
@ -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
Loading…
Reference in a new issue