Merge pull request #56544 from nextcloud/chore/user_status--vue3
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run

refactor(user_status): migrate to Vue 3
This commit is contained in:
Joas Schilling 2025-11-26 15:40:21 +01:00 committed by GitHub
commit 38792c8c96
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
127 changed files with 504 additions and 1864 deletions

View file

@ -1,4 +0,0 @@
/*!
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/.icon-user-status{background-image:url("../img/app.svg")}.icon-user-status-dark{background-image:url("../img/app-dark.svg");filter:var(--background-invert-if-dark)}/*# sourceMappingURL=user-status-menu.css.map */

View file

@ -1 +0,0 @@
{"version":3,"sourceRoot":"","sources":["user-status-menu.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA,GAIA,kBACC,uCAGD,uBACC,4CACA","file":"user-status-menu.css"}

View file

@ -1,2 +0,0 @@
SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
SPDX-License-Identifier: AGPL-3.0-or-later

View file

@ -70,6 +70,6 @@ class BeforeTemplateRenderedListener implements IEventListener {
});
Util::addScript('user_status', 'menu');
Util::addStyle('user_status', 'user-status-menu');
Util::addStyle('user_status', 'menu');
}
}

View file

@ -4,46 +4,44 @@
-->
<template>
<Fragment>
<NcListItem
v-if="!inline"
class="user-status-menu-item"
compact
:name="visibleMessage"
@click.stop="openModal">
<NcListItem
v-if="!inline"
:class="$style.userStatusMenuItem"
compact
:name="visibleMessage"
@click.stop="openModal">
<template #icon>
<NcUserStatusIcon
:class="$style.userStatusIcon"
:status="statusType"
aria-hidden="true" />
</template>
</NcListItem>
<div v-else>
<!-- Dashboard Status -->
<NcButton @click.stop="openModal">
<template #icon>
<NcUserStatusIcon
class="user-status-icon"
:class="$style.userStatusIcon"
:status="statusType"
aria-hidden="true" />
</template>
</NcListItem>
<div v-else>
<!-- Dashboard Status -->
<NcButton @click.stop="openModal">
<template #icon>
<NcUserStatusIcon
class="user-status-icon"
:status="statusType"
aria-hidden="true" />
</template>
{{ visibleMessage }}
</NcButton>
</div>
<!-- Status management modal -->
<SetStatusModal
v-if="isModalOpen"
:inline="inline"
@close="closeModal" />
</Fragment>
{{ visibleMessage }}
</NcButton>
</div>
<!-- Status management modal -->
<SetStatusModal
v-if="isModalOpen"
:inline="inline"
@close="closeModal" />
</template>
<script>
import { getCurrentUser } from '@nextcloud/auth'
import { subscribe, unsubscribe } from '@nextcloud/event-bus'
import debounce from 'debounce'
import { Fragment } from 'vue-frag'
import { defineAsyncComponent } from 'vue'
import NcButton from '@nextcloud/vue/components/NcButton'
import NcListItem from '@nextcloud/vue/components/NcListItem'
import NcUserStatusIcon from '@nextcloud/vue/components/NcUserStatusIcon'
@ -55,11 +53,10 @@ export default {
name: 'UserStatus',
components: {
Fragment,
NcButton,
NcListItem,
NcUserStatusIcon,
SetStatusModal: () => import(/* webpackChunkName: 'user-status-modal' */'./components/SetStatusModal.vue'),
SetStatusModal: defineAsyncComponent(() => import('./components/SetStatusModal.vue')),
},
mixins: [OnlineStatusMixin],
@ -126,7 +123,7 @@ export default {
/**
* Some housekeeping before destroying the component
*/
beforeDestroy() {
beforeUnmount() {
window.removeEventListener('mouseMove', this.mouseMoveListener)
clearInterval(this.heartbeatInterval)
unsubscribe('user_status:status.updated', this.handleUserStatusUpdated)
@ -179,8 +176,15 @@ export default {
}
</script>
<style lang="scss" scoped>
.user-status-icon {
<style lang="scss" module>
// Note: As for v9.3.0 NcListItem does not support <style scoped>
.userStatusMenuItem,
.userStatusMenuItem * {
// TODO: Vue 3 migration - add box-sizing to core menu component
box-sizing: border-box;
}
.userStatusIcon {
width: 20px;
height: 20px;
margin: calc((var(--default-clickable-area) - 20px) / 2); // 20px icon size

View file

@ -6,7 +6,7 @@
<template>
<div class="clear-at-select">
<label class="clear-at-select__label" for="clearStatus">
{{ $t('user_status', 'Clear status after') }}
{{ t('user_status', 'Clear status after') }}
</label>
<NcSelect
input-id="clearStatus"
@ -21,9 +21,10 @@
</template>
<script>
import { t } from '@nextcloud/l10n'
import NcSelect from '@nextcloud/vue/components/NcSelect'
import { clearAtFilter } from '../filters/clearAtFilter.js'
import { getAllClearAtOptions } from '../services/clearAtOptionsService.js'
import { clearAtFormat } from '../services/clearAtService.js'
export default {
name: 'ClearAtSelect',
@ -38,6 +39,8 @@ export default {
},
},
emits: ['selectClearAt'],
data() {
return {
options: getAllClearAtOptions(),
@ -53,12 +56,14 @@ export default {
option() {
return {
clearAt: this.clearAt,
label: clearAtFilter(this.clearAt),
label: clearAtFormat(this.clearAt),
}
},
},
methods: {
t,
/**
* Triggered when the user selects a new option.
*
@ -69,7 +74,7 @@ export default {
return
}
this.$emit('select-clear-at', option.clearAt)
this.$emit('selectClearAt', option.clearAt)
},
},
}

View file

@ -22,12 +22,13 @@
:model-value="message"
type="text"
:label="t('user_status', 'What is your status?')"
@input="onChange" />
@update:model-value="onChange" />
</div>
</div>
</template>
<script>
import { t } from '@nextcloud/l10n'
import NcButton from '@nextcloud/vue/components/NcButton'
import NcEmojiPicker from '@nextcloud/vue/components/NcEmojiPicker'
import NcTextField from '@nextcloud/vue/components/NcTextField'
@ -60,7 +61,7 @@ export default {
emits: [
'change',
'select-icon',
'selectIcon',
],
computed: {
@ -75,6 +76,8 @@ export default {
},
methods: {
t,
focus() {
this.$refs.input.focus()
},
@ -82,14 +85,14 @@ export default {
/**
* Notifies the parent component about a changed input
*
* @param {Event} event The Change Event
* @param {string} value The new input value
*/
onChange(event) {
this.$emit('change', event.target.value)
onChange(value) {
this.$emit('change', value)
},
setIcon(icon) {
this.$emit('select-icon', icon)
this.$emit('selectIcon', icon)
},
},
}

View file

@ -12,10 +12,12 @@
name="user-status-online"
@change="onChange">
<label :for="id" class="user-status-online-select__label">
<NcUserStatusIcon
:status="type"
class="user-status-online-select__icon"
aria-hidden="true" />
<span class="user-status-online-select__icon-wrapper">
<NcUserStatusIcon
:status="type"
class="user-status-online-select__icon"
aria-hidden="true" />
</span>
{{ label }}
<em class="user-status-online-select__subline">{{ subline }}</em>
</label>
@ -54,6 +56,8 @@ export default {
},
},
emits: ['select'],
computed: {
id() {
return `user-status-online-status-${this.type}`
@ -90,10 +94,17 @@ export default {
}
}
&__icon-wrapper {
height: var(--default-clickable-area);
width: var(--default-clickable-area);
display: flex;
align-items: center;
justify-content: center;
}
&__icon {
height: 20px;
width: 20px;
padding: calc((var(--default-clickable-area) - 20px) / 2);
}
&__input:checked + &__label {

View file

@ -19,20 +19,17 @@
{{ message }}
</span>
<span class="predefined-status__label--clear-at">
{{ clearAt | clearAtFilter }}
{{ formattedClearAt }}
</span>
</label>
</li>
</template>
<script>
import { clearAtFilter } from '../filters/clearAtFilter.js'
import { clearAtFormat } from '../services/clearAtService.js'
export default {
name: 'PredefinedStatus',
filters: {
clearAtFilter,
},
props: {
messageId: {
@ -63,10 +60,16 @@ export default {
},
},
emits: ['select'],
computed: {
id() {
return `user-status-predefined-status-${this.messageId}`
},
formattedClearAt() {
return clearAtFormat(this.clearAt)
},
},
methods: {

View file

@ -26,6 +26,7 @@
</template>
<script>
import { t } from '@nextcloud/l10n'
import { mapGetters, mapState } from 'vuex'
import PredefinedStatus from './PredefinedStatus.vue'
@ -35,6 +36,8 @@ export default {
PredefinedStatus,
},
emits: ['selectStatus'],
data() {
return {
lastSelected: null,
@ -68,6 +71,8 @@ export default {
},
methods: {
t,
/**
* Emits an event when the user selects a status
*
@ -75,7 +80,7 @@ export default {
*/
selectStatus(status) {
this.lastSelected = status.id
this.$emit('select-status', status)
this.$emit('selectStatus', status)
},
},
}

View file

@ -16,18 +16,19 @@
{{ message }}
</span>
<span class="predefined-status__clear-at">
{{ $t('user_status', 'Previously set') }}
{{ t('user_status', 'Previously set') }}
</span>
<div class="backup-status__reset-button">
<NcButton @click="select">
{{ $t('user_status', 'Reset status') }}
{{ t('user_status', 'Reset status') }}
</NcButton>
</div>
</div>
</template>
<script>
import { t } from '@nextcloud/l10n'
import NcButton from '@nextcloud/vue/components/NcButton'
export default {
@ -49,7 +50,11 @@ export default {
},
},
emits: ['select'],
methods: {
t,
/**
* Emits an event when the user clicks the row
*/

View file

@ -13,12 +13,12 @@
<div class="set-status-modal">
<!-- Status selector -->
<h2 id="user_status-set-dialog" class="set-status-modal__header">
{{ $t('user_status', 'Online status') }}
{{ t('user_status', 'Online status') }}
</h2>
<div
class="set-status-modal__online-status"
role="radiogroup"
:aria-label="$t('user_status', 'Online status')">
:aria-label="t('user_status', 'Online status')">
<OnlineStatusSelect
v-for="status in statuses"
:key="status.type"
@ -30,7 +30,7 @@
<!-- Status message form -->
<form @submit.prevent="saveStatus" @reset="clearStatus">
<h3 class="set-status-modal__header">
{{ $t('user_status', 'Status message') }}
{{ t('user_status', 'Status message') }}
</h3>
<div class="set-status-modal__custom-input">
<CustomMessageInput
@ -44,14 +44,14 @@
:href="absencePageUrl"
target="_blank"
variant="secondary"
:aria-label="$t('user_status', 'Set absence period')">
{{ $t('user_status', 'Set absence period and replacement') + ' ↗' }}
:aria-label="t('user_status', 'Set absence period')">
{{ t('user_status', 'Set absence period and replacement') + ' ↗' }}
</NcButton>
</div>
<div
v-if="hasBackupStatus"
class="set-status-modal__automation-hint">
{{ $t('user_status', 'Your status was set automatically') }}
{{ t('user_status', 'Your status was set automatically') }}
</div>
<PreviousStatus
v-if="hasBackupStatus"
@ -67,17 +67,17 @@
:wide="true"
variant="tertiary"
type="reset"
:aria-label="$t('user_status', 'Clear status message')"
:aria-label="t('user_status', 'Clear status message')"
:disabled="isSavingStatus">
{{ $t('user_status', 'Clear status message') }}
{{ t('user_status', 'Clear status message') }}
</NcButton>
<NcButton
:wide="true"
variant="primary"
type="submit"
:aria-label="$t('user_status', 'Set status message')"
:aria-label="t('user_status', 'Set status message')"
:disabled="isSavingStatus">
{{ $t('user_status', 'Set status message') }}
{{ t('user_status', 'Set status message') }}
</NcButton>
</div>
</form>
@ -127,6 +127,8 @@ export default {
},
},
emits: ['close'],
data() {
return {
clearAt: null,
@ -218,6 +220,8 @@ export default {
},
methods: {
t,
/**
* Closes the Set Status modal
*/

View file

@ -1,52 +0,0 @@
/**
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { translate as t } from '@nextcloud/l10n'
import moment from '@nextcloud/moment'
import { dateFactory } from '../services/dateService.js'
/**
* Formats a clearAt object to be human readable
*
* @param {object} clearAt The clearAt object
* @return {string|null}
*/
function clearAtFilter(clearAt) {
if (clearAt === null) {
return t('user_status', 'Don\'t clear')
}
if (clearAt.type === 'end-of') {
switch (clearAt.time) {
case 'day':
return t('user_status', 'Today')
case 'week':
return t('user_status', 'This week')
default:
return null
}
}
if (clearAt.type === 'period') {
return moment.duration(clearAt.time * 1000).humanize()
}
// This is not an officially supported type
// but only used internally to show the remaining time
// in the Set Status Modal
if (clearAt.type === '_time') {
const momentNow = moment(dateFactory())
const momentClearAt = moment(clearAt.time, 'X')
return moment.duration(momentNow.diff(momentClearAt)).humanize()
}
return null
}
export {
clearAtFilter,
}

View file

@ -3,16 +3,12 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { getCSPNonce } from '@nextcloud/auth'
import { subscribe } from '@nextcloud/event-bus'
import Vue from 'vue'
import { createApp } from 'vue'
import UserStatus from './UserStatus.vue'
import store from './store/index.js'
__webpack_nonce__ = getCSPNonce()
Vue.prototype.t = t
Vue.prototype.$t = t
import './user-status-icons.css'
const mountPoint = document.getElementById('user_status-menu-entry')
@ -21,12 +17,17 @@ const mountPoint = document.getElementById('user_status-menu-entry')
*/
function mountMenuEntry() {
const mountPoint = document.getElementById('user_status-menu-entry')
// TODO: fix me after Core migration to Vue 3
// In Vue 2 menu items were mounted in place to the menu items
// In Vue 3 they are mounted inside the menu item
// A workaround - replace the menu item with "display: contents" div
const transparentMountPoint = document.createElement('div')
transparentMountPoint.style.display = 'contents'
mountPoint.replaceWith(transparentMountPoint)
new Vue({
el: mountPoint,
render: (h) => h(UserStatus),
store,
})
createApp(UserStatus)
.use(store)
.mount(transparentMountPoint)
}
if (mountPoint) {
@ -42,12 +43,10 @@ document.addEventListener('DOMContentLoaded', function() {
}
OCA.Dashboard.registerStatus('status', (el) => {
const Dashboard = Vue.extend(UserStatus)
return new Dashboard({
propsData: {
inline: true,
},
store,
}).$mount(el)
createApp(UserStatus, {
inline: true,
})
.use(store)
.mount(el)
})
})

View file

@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { translate as t } from '@nextcloud/l10n'
import { t } from '@nextcloud/l10n'
/**
* Returns an array

View file

@ -3,10 +3,9 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { t } from '@nextcloud/l10n'
import moment from '@nextcloud/moment'
import {
dateFactory,
} from './dateService.js'
import { dateFactory } from './dateService.js'
/**
* Calculates the actual clearAt timestamp
@ -42,6 +41,47 @@ function getTimestampForClearAt(clearAt) {
return null
}
/**
* Formats a clearAt object to be human readable
*
* @param {object} clearAt The clearAt object
* @return {string|null}
*/
function clearAtFormat(clearAt) {
if (clearAt === null) {
return t('user_status', 'Don\'t clear')
}
if (clearAt.type === 'end-of') {
switch (clearAt.time) {
case 'day':
return t('user_status', 'Today')
case 'week':
return t('user_status', 'This week')
default:
return null
}
}
if (clearAt.type === 'period') {
return moment.duration(clearAt.time * 1000).humanize()
}
// This is not an officially supported type
// but only used internally to show the remaining time
// in the Set Status Modal
if (clearAt.type === '_time') {
const momentNow = moment(dateFactory())
const momentClearAt = moment(clearAt.time, 'X')
return moment.duration(momentNow.diff(momentClearAt)).humanize()
}
return null
}
export {
clearAtFormat,
getTimestampForClearAt,
}

View file

@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { translate as t } from '@nextcloud/l10n'
import { t } from '@nextcloud/l10n'
/**
* Returns a list of all user-definable statuses

View file

@ -3,15 +3,12 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import Vue from 'vue'
import Vuex, { Store } from 'vuex'
import { createStore } from 'vuex'
import predefinedStatuses from './predefinedStatuses.js'
import userBackupStatus from './userBackupStatus.js'
import userStatus from './userStatus.js'
Vue.use(Vuex)
export default new Store({
export default createStore({
modules: {
predefinedStatuses,
userStatus,

View file

@ -5,9 +5,10 @@
import { fetchAllPredefinedStatuses } from '../services/predefinedStatusService.js'
const state = {
// eslint-disable-next-line antfu/top-level-function
const state = () => ({
predefinedStatuses: [],
}
})
const mutations = {

View file

@ -10,7 +10,8 @@ import {
revertToBackupStatus,
} from '../services/statusService.js'
const state = {
// eslint-disable-next-line antfu/top-level-function
const state = () => ({
// Status (online / away / dnd / invisible / offline)
status: null,
// Whether the status is user-defined
@ -26,7 +27,7 @@ const state = {
messageIsPredefined: null,
// The id of the message in case it's predefined
messageId: null,
}
})
const mutations = {
/**

View file

@ -15,7 +15,8 @@ import {
setStatus,
} from '../services/statusService.js'
const state = {
// eslint-disable-next-line antfu/top-level-function
const state = () => ({
// Status (online / away / dnd / invisible / offline)
status: null,
// Whether the status is user-defined
@ -31,7 +32,7 @@ const state = {
messageIsPredefined: null,
// The id of the message in case it's predefined
messageId: null,
}
})
const mutations = {

View file

@ -2,6 +2,7 @@
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
.icon-user-status {
background-image: url("../img/app.svg");
}

View file

@ -1 +0,0 @@
../../../apps/user_status

View file

@ -100,9 +100,6 @@ module.exports = {
updatenotification: path.join(__dirname, 'apps/updatenotification/src', 'updatenotification.js'),
'update-notification-legacy': path.join(__dirname, 'apps/updatenotification/src', 'update-notification-legacy.ts'),
},
user_status: {
menu: path.join(__dirname, 'apps/user_status/src', 'menu.js'),
},
weather_status: {
'weather-status': path.join(__dirname, 'apps/weather_status/src', 'weather-status.js'),
},

View file

@ -0,0 +1 @@
../../../apps/user_status/

View file

@ -27,6 +27,9 @@ const modules = {
user_ldap: {
'settings-admin': resolve(import.meta.dirname, 'apps/user_ldap/src', 'settings-admin.ts'),
},
user_status: {
menu: resolve(import.meta.dirname, 'apps/user_status/src', 'menu.js'),
},
}
// convert modules to modules entries prefied with the app id

View file

@ -51,7 +51,6 @@ import NcAvatar from '@nextcloud/vue/components/NcAvatar'
import NcHeaderMenu from '@nextcloud/vue/components/NcHeaderMenu'
import AccountMenuEntry from '../components/AccountMenu/AccountMenuEntry.vue'
import AccountMenuProfileEntry from '../components/AccountMenu/AccountMenuProfileEntry.vue'
import { getAllStatusOptions } from '../../../apps/user_status/src/services/statusOptionsService.js'
import logger from '../logger.js'
interface ISettingsNavigationEntry {
@ -93,7 +92,27 @@ interface ISettingsNavigationEntry {
classes: string
}
const USER_DEFINABLE_STATUSES = getAllStatusOptions()
// See: apps/user_status/src/services/statusOptionsService.js
// TODO: either import this again from the user_status app when core is migrated to Vue 3
// Or get rid of the forbidden import
const USER_DEFINABLE_STATUSES = [{
type: 'online',
label: t('user_status', 'Online'),
}, {
type: 'away',
label: t('user_status', 'Away'),
}, {
type: 'busy',
label: t('user_status', 'Busy'),
}, {
type: 'dnd',
label: t('user_status', 'Do not disturb'),
subline: t('user_status', 'Mute all notifications'),
}, {
type: 'invisible',
label: t('user_status', 'Invisible'),
subline: t('user_status', 'Appear offline'),
}]
export default defineComponent({
name: 'AccountMenu',

2
dist/945-945.js vendored

File diff suppressed because one or more lines are too long

View file

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

1
dist/945-945.js.map vendored

File diff suppressed because one or more lines are too long

View file

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

61
dist/Plus-BGKC2YZR.chunk.mjs vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,12 +1,10 @@
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
@ -19,16 +17,24 @@ SPDX-FileCopyrightText: Jordan Humphreys <jordan@zurb.com>
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Nick Frasser (https://nfrasser.com)
SPDX-FileCopyrightText: Rob Cresswell <robcresswell@pm.me>
SPDX-FileCopyrightText: Scott Cooper <scttcper@gmail.com>
SPDX-FileCopyrightText: Sindre Sorhus
SPDX-FileCopyrightText: Varun A P
SPDX-FileCopyrightText: Vuepic
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: chenkai
SPDX-FileCopyrightText: date-fns developers
SPDX-FileCopyrightText: debounce developers
SPDX-FileCopyrightText: p-queue developers
SPDX-FileCopyrightText: ts-md5 developers
This file is generated from multiple sources. Included packages:
- @ckpack/vue-color
- version: 1.6.0
- license: MIT
- @ctrl/tinycolor
- version: 3.6.1
- license: MIT
- @floating-ui/core
- version: 1.7.3
- license: MIT
@ -41,9 +47,6 @@ 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 Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,12 +1,10 @@
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
@ -19,16 +17,24 @@ SPDX-FileCopyrightText: Jordan Humphreys <jordan@zurb.com>
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Nick Frasser (https://nfrasser.com)
SPDX-FileCopyrightText: Rob Cresswell <robcresswell@pm.me>
SPDX-FileCopyrightText: Scott Cooper <scttcper@gmail.com>
SPDX-FileCopyrightText: Sindre Sorhus
SPDX-FileCopyrightText: Varun A P
SPDX-FileCopyrightText: Vuepic
SPDX-FileCopyrightText: atomiks
SPDX-FileCopyrightText: chenkai
SPDX-FileCopyrightText: date-fns developers
SPDX-FileCopyrightText: debounce developers
SPDX-FileCopyrightText: p-queue developers
SPDX-FileCopyrightText: ts-md5 developers
This file is generated from multiple sources. Included packages:
- @ckpack/vue-color
- version: 1.6.0
- license: MIT
- @ctrl/tinycolor
- version: 3.6.1
- license: MIT
- @floating-ui/core
- version: 1.7.3
- license: MIT
@ -41,9 +47,6 @@ This file is generated from multiple sources. Included packages:
- @floating-ui/utils
- version: 0.2.10
- license: MIT
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/capabilities
- version: 1.2.1
- license: GPL-3.0-or-later

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

8
dist/check-Ci-sicaQ.chunk.mjs vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,8 +1,10 @@
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/)
@ -10,9 +12,13 @@ SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
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
@ -70,3 +76,6 @@ This file is generated from multiple sources. Included packages:
- vite-plugin-node-polyfills
- version: 0.24.0
- license: MIT
- vue-material-design-icons
- version: 5.3.1
- license: MIT

1
dist/check-Ci-sicaQ.chunk.mjs.map vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -1,8 +1,10 @@
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/)
@ -10,9 +12,13 @@ SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: GitHub Inc.
SPDX-FileCopyrightText: Matt Zabriskie
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
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
@ -70,3 +76,6 @@ This file is generated from multiple sources. Included packages:
- vite-plugin-node-polyfills
- version: 0.24.0
- license: MIT
- vue-material-design-icons
- version: 5.3.1
- license: MIT

4
dist/core-common.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

4
dist/core-main.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,3 @@
/* extracted by css-entry-points-plugin */
@import './dav-dav-settings-admin-caldav-7NASuukx.chunk.css';
@import './NcSettingsSection-BfK7eHNT-BFoYkIs3.chunk.css';
@import './check-BFoYkIs3.chunk.css';

View file

@ -1,2 +1,2 @@
import{l as i,_ as f,N as b,a as g,r as p,c as R,o as E,w as r,i as n,b as c,d as u,t as l,e as C,j as S,f as m,h as V}from"./NcSettingsSection-BfK7eHNT-Cvwtv3xC.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,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");
//# sourceMappingURL=dav-settings-admin-caldav.mjs.map

File diff suppressed because one or more lines are too long

View file

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
/* extracted by css-entry-points-plugin */
@import './dav-dav-settings-personal-availability-CTwf8DDv.chunk.css';
@import './NcSettingsSection-BfK7eHNT-BFoYkIs3.chunk.css';
@import './check-BFoYkIs3.chunk.css';
@import './Plus-BhZ0LWiU.chunk.css';

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
/* extracted by css-entry-points-plugin */
@import './files_versions-files_versions-sidebar-tab-DbvfeGRa.chunk.css';
@import './NcSettingsSection-BfK7eHNT-BFoYkIs3.chunk.css';
@import './check-BFoYkIs3.chunk.css';
@import './Plus-BhZ0LWiU.chunk.css';

File diff suppressed because one or more lines are too long

View file

@ -1,11 +1,7 @@
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: MIT
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Iskren Ivov Chernev <iskren.chernev@gmail.com> (https://github.com/ichernev)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Rob Cresswell <robcresswell@pm.me>
@ -13,21 +9,12 @@ This file is generated from multiple sources. Included packages:
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/moment
- version: 1.3.5
- license: GPL-3.0-or-later
- @nextcloud/vue
- version: 9.3.0
- license: AGPL-3.0-or-later
- moment
- version: 2.30.1
- license: MIT
- nextcloud-ui
- version: 1.0.0
- license: AGPL-3.0-or-later
- vite
- version: 7.2.4
- license: MIT
- vue-material-design-icons
- version: 5.3.1
- license: MIT

File diff suppressed because one or more lines are too long

View file

@ -1,11 +1,7 @@
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: MIT
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Iskren Ivov Chernev <iskren.chernev@gmail.com> (https://github.com/ichernev)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
SPDX-FileCopyrightText: Rob Cresswell <robcresswell@pm.me>
@ -13,21 +9,12 @@ This file is generated from multiple sources. Included packages:
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/moment
- version: 1.3.5
- license: GPL-3.0-or-later
- @nextcloud/vue
- version: 9.3.0
- license: AGPL-3.0-or-later
- moment
- version: 2.30.1
- license: MIT
- nextcloud-ui
- version: 1.0.0
- license: AGPL-3.0-or-later
- vite
- version: 7.2.4
- license: MIT
- vue-material-design-icons
- version: 5.3.1
- license: MIT

File diff suppressed because one or more lines are too long

5
dist/index-DNpw_vcD.chunk.mjs vendored Normal file

File diff suppressed because one or more lines are too long

21
dist/index-DNpw_vcD.chunk.mjs.license vendored Normal file
View file

@ -0,0 +1,21 @@
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: MIT
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Iskren Ivov Chernev <iskren.chernev@gmail.com> (https://github.com/ichernev)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
This file is generated from multiple sources. Included packages:
- @nextcloud/moment
- version: 1.3.5
- license: GPL-3.0-or-later
- @nextcloud/vue
- version: 9.3.0
- license: AGPL-3.0-or-later
- moment
- version: 2.30.1
- license: MIT
- vite
- version: 7.2.4
- license: MIT

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

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,21 @@
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: MIT
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Evan You
SPDX-FileCopyrightText: Iskren Ivov Chernev <iskren.chernev@gmail.com> (https://github.com/ichernev)
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
This file is generated from multiple sources. Included packages:
- @nextcloud/moment
- version: 1.3.5
- license: GPL-3.0-or-later
- @nextcloud/vue
- version: 9.3.0
- license: AGPL-3.0-or-later
- moment
- version: 2.30.1
- license: MIT
- vite
- version: 7.2.4
- license: MIT

File diff suppressed because one or more lines are too long

10
dist/index-Dr9RAte9.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

2
dist/index-EaAAXTXx.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

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

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

View file

@ -0,0 +1,7 @@
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
This file is generated from multiple sources. Included packages:
- nextcloud-ui
- version: 1.0.0
- license: AGPL-3.0-or-later

View file

@ -1 +1 @@
{"version":3,"file":"logger-BV_x7_LP.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-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"}

View file

@ -0,0 +1,7 @@
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors
This file is generated from multiple sources. Included packages:
- nextcloud-ui
- version: 1.0.0
- license: AGPL-3.0-or-later

View file

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

View file

@ -1,2 +0,0 @@
import{y as G,k as H,z as K,A as Z,B as tt,C as nt,D as E,E as C,G as L,H as et,I as st,J as ot,K as ct,L as at,n as N,M as rt}from"./NcSettingsSection-BfK7eHNT-Cvwtv3xC.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-BCiW4L1z.chunk.mjs.map

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

@ -0,0 +1,2 @@
import{y as G,k as H,z as K,A as Z,B as tt,C as nt,D as E,E as C,G as L,H as et,I as st,J as ot,K as ct,L as at,n as N,M as rt}from"./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

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

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