nextcloud-server/dist/dav-settings-admin-example-...

1 line
30 KiB
Plaintext

{"version":3,"file":"dav-settings-admin-example-content.mjs","sources":["../node_modules/@mdi/svg/svg/cancel.svg?raw","../node_modules/vue-material-design-icons/Account.vue","../node_modules/vue-material-design-icons/Restore.vue","../node_modules/vue-material-design-icons/TrayArrowUp.vue","../build/frontend/apps/dav/src/components/ExampleContentDownloadButton.vue","../build/frontend/apps/dav/src/components/ExampleContactSettings.vue","../node_modules/vue-material-design-icons/CalendarBlank.vue","../build/frontend/apps/dav/src/service/ExampleEventService.ts","../build/frontend/apps/dav/src/components/ExampleEventSettings.vue","../build/frontend/apps/dav/src/views/ExampleContentSettingsSection.vue","../build/frontend/apps/dav/src/settings-admin-example-content.ts"],"sourcesContent":["export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" id=\\\"mdi-cancel\\\" viewBox=\\\"0 0 24 24\\\"><path d=\\\"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z\\\" /></svg>\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon account-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"AccountIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon restore-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"RestoreIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon tray-arrow-up-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 2L6.46 7.46L7.88 8.88L11 5.75V15H13V5.75L16.13 8.88L17.55 7.45L12 2Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"TrayArrowUpIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n -->\n\n<script setup lang=\"ts\">\nimport { NcButton } from '@nextcloud/vue'\nimport IconDownload from 'vue-material-design-icons/TrayArrowDown.vue'\n\ndefineProps<{\n\t/**\n\t * The href link for the download\n\t */\n\thref: string\n}>()\n</script>\n\n<template>\n\t<NcButton variant=\"tertiary\" :href>\n\t\t<template #icon>\n\t\t\t<slot name=\"icon\" />\n\t\t</template>\n\t\t<div class=\"download-button\">\n\t\t\t<span class=\"download-button__label\">\n\t\t\t\t<slot name=\"default\" />\n\t\t\t</span>\n\t\t\t<IconDownload\n\t\t\t\tclass=\"download-button__icon\"\n\t\t\t\t:size=\"20\" />\n\t\t</div>\n\t</NcButton>\n</template>\n\n<style lang=\"scss\" scoped>\n.download-button {\n\tdisplay: flex;\n\tmax-width: 200px;\n\n\t&__label {\n\t\tfont-weight: initial;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t}\n\n\t&__icon {\n\t\tmargin-top: 2px;\n\t\tmargin-inline-start: var(--default-grid-baseline);\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"example-contact-settings\">\n\t\t<NcCheckboxRadioSwitch\n\t\t\t:model-value=\"enableDefaultContact\"\n\t\t\ttype=\"switch\"\n\t\t\t@update:model-value=\"updateEnableDefaultContact\">\n\t\t\t{{ t('dav', \"Add example contact to user's address book when they first log in\") }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<div v-if=\"enableDefaultContact\" class=\"example-contact-settings__buttons\">\n\t\t\t<ExampleContentDownloadButton :href=\"downloadUrl\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconAccount :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\texample_contact.vcf\n\t\t\t</ExampleContentDownloadButton>\n\t\t\t<NcButton\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\t@click=\"toggleModal\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconUpload :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dav', 'Import contact') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton\n\t\t\t\tv-if=\"hasCustomDefaultContact\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t@click=\"resetContact\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconRestore :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dav', 'Reset to default') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<NcDialog\n\t\t\tv-model:open=\"isModalOpen\"\n\t\t\t:name=\"t('dav', 'Import contacts')\"\n\t\t\t:buttons=\"buttons\">\n\t\t\t<div>\n\t\t\t\t<p>{{ t('dav', 'Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?') }}</p>\n\t\t\t</div>\n\t\t</NcDialog>\n\t\t<input\n\t\t\tid=\"example-contact-import\"\n\t\t\tref=\"exampleContactImportInput\"\n\t\t\t:disabled=\"loading\"\n\t\t\ttype=\"file\"\n\t\t\taccept=\".vcf\"\n\t\t\tclass=\"hidden-visually\"\n\t\t\t@change=\"processFile\">\n\t</div>\n</template>\n\n<script>\nimport IconCancel from '@mdi/svg/svg/cancel.svg?raw'\nimport IconCheck from '@mdi/svg/svg/check.svg?raw'\nimport axios from '@nextcloud/axios'\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { NcButton, NcCheckboxRadioSwitch, NcDialog } from '@nextcloud/vue'\nimport IconAccount from 'vue-material-design-icons/Account.vue'\nimport IconRestore from 'vue-material-design-icons/Restore.vue'\nimport IconUpload from 'vue-material-design-icons/TrayArrowUp.vue'\nimport ExampleContentDownloadButton from './ExampleContentDownloadButton.vue'\nimport { logger } from '../service/logger.ts'\n\nconst enableDefaultContact = loadState('dav', 'enableDefaultContact', false)\nconst hasCustomDefaultContact = loadState('dav', 'hasCustomDefaultContact', false)\n\nexport default {\n\tname: 'ExampleContactSettings',\n\tcomponents: {\n\t\tNcDialog,\n\t\tNcButton,\n\t\tNcCheckboxRadioSwitch,\n\t\tIconUpload,\n\t\tIconRestore,\n\t\tIconAccount,\n\t\tExampleContentDownloadButton,\n\t},\n\n\tsetup() {\n\t\treturn { t }\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tenableDefaultContact,\n\t\t\thasCustomDefaultContact,\n\t\t\tisModalOpen: false,\n\t\t\tloading: false,\n\t\t\tbuttons: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('dav', 'Cancel'),\n\t\t\t\t\ticon: IconCancel,\n\t\t\t\t\tcallback: () => { this.isModalOpen = false },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('dav', 'Import'),\n\t\t\t\t\ticon: IconCheck,\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => { this.clickImportInput() },\n\t\t\t\t},\n\t\t\t],\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdownloadUrl() {\n\t\t\treturn generateUrl('/apps/dav/api/defaultcontact/contact')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateEnableDefaultContact() {\n\t\t\taxios.put(generateUrl('apps/dav/api/defaultcontact/config'), {\n\t\t\t\tallow: !this.enableDefaultContact,\n\t\t\t}).then(() => {\n\t\t\t\tthis.enableDefaultContact = !this.enableDefaultContact\n\t\t\t}).catch(() => {\n\t\t\t\tshowError(t('dav', 'Error while saving settings'))\n\t\t\t})\n\t\t},\n\n\t\ttoggleModal() {\n\t\t\tthis.isModalOpen = !this.isModalOpen\n\t\t},\n\n\t\tclickImportInput() {\n\t\t\tthis.$refs.exampleContactImportInput.click()\n\t\t},\n\n\t\tresetContact() {\n\t\t\tthis.loading = true\n\t\t\taxios.put(generateUrl('/apps/dav/api/defaultcontact/contact'))\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.hasCustomDefaultContact = false\n\t\t\t\t\tshowSuccess(t('dav', 'Contact reset successfully'))\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tlogger.error('Error importing contact:', { error })\n\t\t\t\t\tshowError(t('dav', 'Error while resetting contact'))\n\t\t\t\t})\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.loading = false\n\t\t\t\t})\n\t\t},\n\n\t\tprocessFile(event) {\n\t\t\tthis.loading = true\n\n\t\t\tconst file = event.target.files[0]\n\t\t\tconst reader = new FileReader()\n\n\t\t\treader.onload = async () => {\n\t\t\t\tthis.isModalOpen = false\n\t\t\t\ttry {\n\t\t\t\t\tawait axios.put(generateUrl('/apps/dav/api/defaultcontact/contact'), { contactData: reader.result })\n\t\t\t\t\tthis.hasCustomDefaultContact = true\n\t\t\t\t\tshowSuccess(t('dav', 'Contact imported successfully'))\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error('Error importing contact:', { error })\n\t\t\t\t\tshowError(t('dav', 'Error while importing contact'))\n\t\t\t\t} finally {\n\t\t\t\t\tthis.loading = false\n\t\t\t\t\tevent.target.value = ''\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.readAsText(file)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.example-contact-settings {\n\tmargin-block-start: 2rem;\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: calc(var(--default-grid-baseline) * 2);\n\t\tmargin-top: calc(var(--default-grid-baseline) * 2);\n\t}\n}\n</style>\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon calendar-blank-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"CalendarBlankIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * Configure the creation of example events on a user's first login.\n *\n * @param enable - Whether to enable or disable the feature.\n */\nexport async function setCreateExampleEvent(enable: boolean): Promise<void> {\n\tconst url = generateUrl('/apps/dav/api/exampleEvent/enable')\n\tawait axios.post(url, {\n\t\tenable,\n\t})\n}\n\n/**\n * Upload a custom example event.\n *\n * @param ics - The ICS data of the event.\n */\nexport async function uploadExampleEvent(ics: string): Promise<void> {\n\tconst url = generateUrl('/apps/dav/api/exampleEvent/event')\n\tawait axios.post(url, {\n\t\tics,\n\t})\n}\n\n/**\n * Delete a previously uploaded custom example event.\n */\nexport async function deleteExampleEvent(): Promise<void> {\n\tconst url = generateUrl('/apps/dav/api/exampleEvent/event')\n\tawait axios.delete(url)\n}\n","<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n -->\n\n<template>\n\t<div class=\"example-event-settings\">\n\t\t<NcCheckboxRadioSwitch\n\t\t\t:model-value=\"createExampleEvent\"\n\t\t\t:disabled=\"savingConfig\"\n\t\t\ttype=\"switch\"\n\t\t\t@update:model-value=\"updateCreateExampleEvent\">\n\t\t\t{{ t('dav', \"Add example event to user's calendar when they first log in\") }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<div\n\t\t\tv-if=\"createExampleEvent\"\n\t\t\tclass=\"example-event-settings__buttons\">\n\t\t\t<ExampleContentDownloadButton :href=\"downloadUrl\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconCalendarBlank :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\texample_event.ics\n\t\t\t</ExampleContentDownloadButton>\n\t\t\t<NcButton\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\t@click=\"showImportModal = true\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconUpload :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dav', 'Import calendar event') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton\n\t\t\t\tv-if=\"hasCustomEvent\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t:disabled=\"deleting\"\n\t\t\t\t@click=\"deleteCustomEvent\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<IconRestore :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\t{{ t('dav', 'Reset to default') }}\n\t\t\t</NcButton>\n\t\t</div>\n\t\t<NcDialog\n\t\t\tv-model:open=\"showImportModal\"\n\t\t\t:name=\"t('dav', 'Import calendar event')\">\n\t\t\t<div class=\"import-event-modal\">\n\t\t\t\t<p>\n\t\t\t\t\t{{ t('dav', 'Uploading a new event will overwrite the existing one.') }}\n\t\t\t\t</p>\n\t\t\t\t<input\n\t\t\t\t\tref=\"event-file\"\n\t\t\t\t\t:disabled=\"uploading\"\n\t\t\t\t\ttype=\"file\"\n\t\t\t\t\taccept=\".ics,text/calendar\"\n\t\t\t\t\tclass=\"import-event-modal__file-picker\"\n\t\t\t\t\t@change=\"selectFile\">\n\t\t\t\t<div class=\"import-event-modal__buttons\">\n\t\t\t\t\t<NcButton\n\t\t\t\t\t\t:disabled=\"uploading || !selectedFile\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t@click=\"uploadCustomEvent()\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<IconUpload :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ t('dav', 'Upload event') }}\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</NcDialog>\n\t</div>\n</template>\n\n<script>\nimport { showError, showSuccess } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { NcButton, NcCheckboxRadioSwitch, NcDialog } from '@nextcloud/vue'\nimport IconCalendarBlank from 'vue-material-design-icons/CalendarBlank.vue'\nimport IconRestore from 'vue-material-design-icons/Restore.vue'\nimport IconUpload from 'vue-material-design-icons/TrayArrowUp.vue'\nimport ExampleContentDownloadButton from './ExampleContentDownloadButton.vue'\nimport * as ExampleEventService from '../service/ExampleEventService.js'\nimport { logger } from '../service/logger.ts'\n\nexport default {\n\tname: 'ExampleEventSettings',\n\tcomponents: {\n\t\tNcButton,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcDialog,\n\t\tIconCalendarBlank,\n\t\tIconUpload,\n\t\tIconRestore,\n\t\tExampleContentDownloadButton,\n\t},\n\n\tsetup() {\n\t\treturn { t }\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tcreateExampleEvent: loadState('dav', 'create_example_event', false),\n\t\t\thasCustomEvent: loadState('dav', 'has_custom_example_event', false),\n\t\t\tshowImportModal: false,\n\t\t\tuploading: false,\n\t\t\tdeleting: false,\n\t\t\tsavingConfig: false,\n\t\t\tselectedFile: undefined,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tdownloadUrl() {\n\t\t\treturn generateUrl('/apps/dav/api/exampleEvent/event')\n\t\t},\n\t},\n\n\tmethods: {\n\t\tselectFile() {\n\t\t\tthis.selectedFile = this.$refs['event-file']?.files[0]\n\t\t},\n\n\t\tasync updateCreateExampleEvent() {\n\t\t\tthis.savingConfig = true\n\n\t\t\tconst enable = !this.createExampleEvent\n\t\t\ttry {\n\t\t\t\tawait ExampleEventService.setCreateExampleEvent(enable)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('dav', 'Failed to save example event creation setting'))\n\t\t\t\tlogger.error('Failed to save example event creation setting', {\n\t\t\t\t\terror,\n\t\t\t\t\tenable,\n\t\t\t\t})\n\t\t\t} finally {\n\t\t\t\tthis.savingConfig = false\n\t\t\t}\n\n\t\t\tthis.createExampleEvent = enable\n\t\t},\n\n\t\tuploadCustomEvent() {\n\t\t\tif (!this.selectedFile) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.uploading = true\n\n\t\t\tconst reader = new FileReader()\n\t\t\treader.addEventListener('load', async () => {\n\t\t\t\tconst ics = reader.result\n\n\t\t\t\ttry {\n\t\t\t\t\tawait ExampleEventService.uploadExampleEvent(ics)\n\t\t\t\t} catch (error) {\n\t\t\t\t\tshowError(t('dav', 'Failed to upload the example event'))\n\t\t\t\t\tlogger.error('Failed to upload example ICS', {\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tics,\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t} finally {\n\t\t\t\t\tthis.uploading = false\n\t\t\t\t}\n\n\t\t\t\tshowSuccess(t('dav', 'Custom example event was saved successfully'))\n\t\t\t\tthis.showImportModal = false\n\t\t\t\tthis.hasCustomEvent = true\n\t\t\t})\n\t\t\treader.readAsText(this.selectedFile)\n\t\t},\n\n\t\tasync deleteCustomEvent() {\n\t\t\tthis.deleting = true\n\n\t\t\ttry {\n\t\t\t\tawait ExampleEventService.deleteExampleEvent()\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('dav', 'Failed to delete the custom example event'))\n\t\t\t\tlogger.error('Failed to delete the custom example event', {\n\t\t\t\t\terror,\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} finally {\n\t\t\t\tthis.deleting = false\n\t\t\t}\n\n\t\t\tshowSuccess(t('dav', 'Custom example event was deleted successfully'))\n\t\t\tthis.hasCustomEvent = false\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.example-event-settings {\n\tmargin-block: 2rem;\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tgap: calc(var(--default-grid-baseline) * 2);\n\t\tmargin-top: calc(var(--default-grid-baseline) * 2);\n\n\t\t&__download-link {\n\t\t\tdisplay: flex;\n\t\t\tmax-width: 100px;\n\n\t\t\t&__label {\n\t\t\t\ttext-decoration: underline;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\t\t}\n\t}\n}\n\n.import-event-modal {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(var(--default-grid-baseline) * 2);\n\tpadding: calc(var(--default-grid-baseline) * 2);\n\n\t&__file-picker {\n\t\twidth: 100%;\n\t}\n\n\t&__buttons {\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { NcSettingsSection } from '@nextcloud/vue'\nimport ExampleContactSettings from '../components/ExampleContactSettings.vue'\nimport ExampleEventSettings from '../components/ExampleEventSettings.vue'\n\nconst hasContactsApp = loadState('dav', 'contactsEnabled')\nconst hasCalendarApp = loadState('dav', 'calendarEnabled')\n</script>\n\n<template>\n\t<NcSettingsSection\n\t\tid=\"example-content\"\n\t\t:name=\"t('dav', 'Example content')\"\n\t\t:description=\"t('dav', 'Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content.')\">\n\t\t<ExampleContactSettings v-if=\"hasContactsApp\" />\n\t\t<ExampleEventSettings v-if=\"hasCalendarApp\" />\n\t</NcSettingsSection>\n</template>\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport ExampleContentSettingsSection from './views/ExampleContentSettingsSection.vue'\n\nconst app = createApp(ExampleContentSettingsSection)\napp.mount('#settings-example-content')\n"],"names":["IconCancel","_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","_createBlock","_unref","NcButton","__props","_renderSlot","_hoisted_1","_hoisted_2","_createVNode","IconDownload","enableDefaultContact","loadState","hasCustomDefaultContact","NcDialog","NcCheckboxRadioSwitch","IconUpload","IconRestore","IconAccount","ExampleContentDownloadButton","t","IconCheck","generateUrl","axios","showError","showSuccess","error","logger","event","file","reader","_component_NcCheckboxRadioSwitch","$data","$options","$setup","_component_ExampleContentDownloadButton","_component_IconAccount","_component_NcButton","_component_IconUpload","_createTextVNode","_component_IconRestore","_component_NcDialog","args","setCreateExampleEvent","enable","url","uploadExampleEvent","ics","deleteExampleEvent","IconCalendarBlank","ExampleEventService.setCreateExampleEvent","ExampleEventService.uploadExampleEvent","ExampleEventService.deleteExampleEvent","_hoisted_5","_component_IconCalendarBlank","hasContactsApp","hasCalendarApp","NcSettingsSection","ExampleContactSettings","ExampleEventSettings","app","createApp","ExampleContentSettingsSection"],"mappings":"8aAAA,MAAAA,EAAe,wUCoBVC,EAAU,CACb,KAAM,cACN,MAAO,CAAC,OAAO,EACf,MAAO,CACL,MAAO,CACL,KAAM,QAER,UAAW,CACT,KAAM,OACN,QAAS,gBAEX,KAAM,CACJ,KAAM,OACN,QAAS,EACX,CACF,CACF,6DAxBYC,EAAA,CAAA,EAAE,gIAAgI,+CAX5IC,EAeO,OAfPC,EAAcC,EAAA,OAAM,CACb,cAAaC,EAAA,MAAK,KAAA,OAClB,aAAYA,EAAA,MACb,MAAM,oCACN,KAAK,MACJ,QAAKC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAEH,EAAA,MAAK,QAAUG,CAAM,WACjCL,EAQM,MAAA,CARA,KAAMG,EAAA,UACP,MAAM,4BACL,MAAOA,EAAA,KACP,OAAQA,EAAA,KACT,QAAQ,cACXG,EAEO,OAFPP,EAEO,CADQI,EAAA,OAAbI,EAAA,EAAAP,EAAuC,YAAhBG,EAAA,KAAK,EAAA,CAAA,wDCO/BL,GAAU,CACb,KAAM,cACN,MAAO,CAAC,OAAO,EACf,MAAO,CACL,MAAO,CACL,KAAM,QAER,UAAW,CACT,KAAM,OACN,QAAS,gBAEX,KAAM,CACJ,KAAM,OACN,QAAS,EACX,CACF,CACF,+DAxBYC,GAAA,CAAA,EAAE,oMAAoM,iDAXhNC,EAeO,OAfPC,EAAcC,EAAA,OAAM,CACb,cAAaC,EAAA,MAAK,KAAA,OAClB,aAAYA,EAAA,MACb,MAAM,oCACN,KAAK,MACJ,QAAKC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAEH,EAAA,MAAK,QAAUG,CAAM,WACjCL,EAQM,MAAA,CARA,KAAMG,EAAA,UACP,MAAM,4BACL,MAAOA,EAAA,KACP,OAAQA,EAAA,KACT,QAAQ,cACXG,EAEO,OAFPP,GAEO,CADQI,EAAA,OAAbI,EAAA,EAAAP,EAAuC,aAAhBG,EAAA,KAAK,EAAA,CAAA,4DCO/BL,GAAU,CACb,KAAM,kBACN,MAAO,CAAC,OAAO,EACf,MAAO,CACL,MAAO,CACL,KAAM,QAER,UAAW,CACT,KAAM,OACN,QAAS,gBAEX,KAAM,CACJ,KAAM,OACN,QAAS,EACX,CACF,CACF,+DAxBYC,GAAA,CAAA,EAAE,iJAAiJ,iDAX7JC,EAeO,OAfPC,EAAcC,EAAA,OAAM,CACb,cAAaC,EAAA,MAAK,KAAA,OAClB,aAAYA,EAAA,MACb,MAAM,0CACN,KAAK,MACJ,QAAKC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAEH,EAAA,MAAK,QAAUG,CAAM,WACjCL,EAQM,MAAA,CARA,KAAMG,EAAA,UACP,MAAM,4BACL,MAAOA,EAAA,KACP,OAAQA,EAAA,KACT,QAAQ,cACXG,EAEO,OAFPP,GAEO,CADQI,EAAA,OAAbI,EAAA,EAAAP,EAAuC,aAAhBG,EAAA,KAAK,EAAA,CAAA,oNCKnCK,EAYWC,EAAAC,CAAA,EAAA,CAZD,QAAQ,WAAY,KAAAC,EAAA,IAAA,GAClB,OACV,IAAoB,CAApBC,EAAoBV,EAAA,OAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAErB,IAOM,CAPNI,EAOM,MAPNO,GAOM,CANLP,EAEO,OAFPQ,GAEO,CADNF,EAAuBV,EAAA,OAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,GAExBa,EAEcC,EAAA,CADb,MAAM,wBACL,KAAM,EAAA,sEC4CLC,GAAuBC,EAAU,MAAO,uBAAwB,EAAK,EACrEC,GAA0BD,EAAU,MAAO,0BAA2B,EAAK,EAE5EpB,GAAU,CACd,KAAM,yBACN,WAAY,CACX,SAAAsB,EACA,SAAAV,EACA,sBAAAW,EACA,WAAAC,EACA,YAAAC,EACA,YAAAC,EACA,6BAAAC,GAGD,OAAQ,CACP,MAAO,GAAEC,CAAA,CACV,EAEA,MAAO,CACN,MAAO,CACN,qBAAAT,GACA,wBAAAE,GACA,YAAa,GACb,QAAS,GACT,QAAS,CACR,CACC,MAAOO,EAAE,MAAO,QAAQ,EACxB,KAAM7B,EACN,SAAU,IAAM,CAAE,KAAK,YAAc,EAAM,GAE5C,CACC,MAAO6B,EAAE,MAAO,QAAQ,EACxB,KAAMC,EACN,QAAS,UACT,SAAU,IAAM,CAAE,KAAK,iBAAgB,CAAG,GAG7C,CACD,EAEA,SAAU,CACT,aAAc,CACb,OAAOC,EAAY,sCAAsC,CAC1D,GAGD,QAAS,CACR,4BAA6B,CAC5BC,EAAM,IAAID,EAAY,oCAAoC,EAAG,CAC5D,MAAO,CAAC,KAAK,qBACb,EAAE,KAAK,IAAM,CACb,KAAK,qBAAuB,CAAC,KAAK,oBACnC,CAAC,EAAE,MAAM,IAAM,CACdE,EAAUJ,EAAE,MAAO,6BAA6B,CAAC,CAClD,CAAC,CACF,EAEA,aAAc,CACb,KAAK,YAAc,CAAC,KAAK,WAC1B,EAEA,kBAAmB,CAClB,KAAK,MAAM,0BAA0B,MAAK,CAC3C,EAEA,cAAe,CACd,KAAK,QAAU,GACfG,EAAM,IAAID,EAAY,sCAAsC,CAAC,EAC3D,KAAK,IAAM,CACX,KAAK,wBAA0B,GAC/BG,EAAYL,EAAE,MAAO,4BAA4B,CAAC,CACnD,CAAC,EACA,MAAOM,GAAU,CACjBC,EAAO,MAAM,2BAA4B,CAAE,MAAAD,EAAO,EAClDF,EAAUJ,EAAE,MAAO,+BAA+B,CAAC,CACpD,CAAC,EACA,QAAQ,IAAM,CACd,KAAK,QAAU,EAChB,CAAC,CACH,EAEA,YAAYQ,EAAO,CAClB,KAAK,QAAU,GAEf,MAAMC,EAAOD,EAAM,OAAO,MAAM,CAAC,EAC3BE,EAAS,IAAI,WAEnBA,EAAO,OAAS,SAAY,CAC3B,KAAK,YAAc,GACnB,GAAI,CACH,MAAMP,EAAM,IAAID,EAAY,sCAAsC,EAAG,CAAE,YAAaQ,EAAO,OAAQ,EACnG,KAAK,wBAA0B,GAC/BL,EAAYL,EAAE,MAAO,+BAA+B,CAAC,CACtD,OAASM,EAAO,CACfC,EAAO,MAAM,2BAA4B,CAAE,MAAAD,EAAO,EAClDF,EAAUJ,EAAE,MAAO,+BAA+B,CAAC,CACpD,QAAA,CACC,KAAK,QAAU,GACfQ,EAAM,OAAO,MAAQ,EACtB,CACD,EACAE,EAAO,WAAWD,CAAI,CACvB,EAEF,EA3KMtB,GAAA,CAAA,MAAM,0BAA0B,YAOH,MAAM,6OAPxC,OAAAN,EAAA,EAAAP,EAgDM,MAhDNa,GAgDM,CA/CLE,EAKwBsB,EAAA,CAJtB,cAAaC,EAAA,qBACd,KAAK,SACJ,sBAAoBC,EAAA,uCACrB,IAAmF,KAAhFC,EAAA,EAAC,MAAA,mEAAA,CAAA,EAAA,CAAA,kDAEMF,EAAA,sBAAX/B,IAAAP,EAwBM,MAxBNc,GAwBM,CAvBLC,EAK+B0B,EAAA,CALA,KAAMF,EAAA,WAAW,EAAA,CACpC,OACV,IAA0B,CAA1BxB,EAA0B2B,EAAA,CAAZ,KAAM,EAAE,CAAA,cACZ,IAEZ,eAFY,wBAEZ,EAAA,sBACA3B,EAOW4B,EAAA,CANV,QAAQ,YACP,QAAOJ,EAAA,cACG,OACV,IAAyB,CAAzBxB,EAAyB6B,EAAA,CAAZ,KAAM,EAAE,CAAA,cACX,IACX,CADWC,EAAA,MACRL,EAAA,EAAC,MAAA,gBAAA,CAAA,EAAA,CAAA,wBAGEF,EAAA,6BADP9B,EAQWmC,EAAA,OANV,QAAQ,WACP,QAAOJ,EAAA,eACG,OACV,IAA0B,CAA1BxB,EAA0B+B,EAAA,CAAZ,KAAM,EAAE,CAAA,cACZ,IACX,CADWD,EAAA,MACRL,EAAA,EAAC,MAAA,kBAAA,CAAA,EAAA,CAAA,8CAGNzB,EAOWgC,EAAA,CANF,KAAMT,EAAA,2CAAAA,EAAA,YAAWjC,GACxB,KAAMmC,EAAA,EAAC,MAAA,iBAAA,EACP,QAASF,EAAA,oBACV,IAEM,CAFNhC,EAEM,MAAA,KAAA,CADLA,EAAqJ,WAA/IkC,EAAA,EAAC,MAAA,8HAAA,CAAA,EAAA,CAAA,wCAGTlC,EAOuB,QAAA,CANtB,GAAG,yBACH,IAAI,4BACH,SAAUgC,EAAA,QACX,KAAK,OACL,OAAO,OACP,MAAM,kBACL,6BAAQC,EAAA,aAAAA,EAAA,YAAA,GAAAS,CAAA,iFCjCPlD,GAAU,CACb,KAAM,oBACN,MAAO,CAAC,OAAO,EACf,MAAO,CACL,MAAO,CACL,KAAM,QAER,UAAW,CACT,KAAM,OACN,QAAS,gBAEX,KAAM,CACJ,KAAM,OACN,QAAS,EACX,CACF,CACF,+DAxBYC,GAAA,CAAA,EAAE,kHAAkH,iDAX9HC,EAeO,OAfPC,EAAcC,EAAA,OAAM,CACb,cAAaC,EAAA,MAAK,KAAA,OAClB,aAAYA,EAAA,MACb,MAAM,2CACN,KAAK,MACJ,QAAKC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAC,GAAEH,EAAA,MAAK,QAAUG,CAAM,WACjCL,EAQM,MAAA,CARA,KAAMG,EAAA,UACP,MAAM,4BACL,MAAOA,EAAA,KACP,OAAQA,EAAA,KACT,QAAQ,cACXG,EAEO,OAFPP,GAEO,CADQI,EAAA,OAAbI,EAAA,EAAAP,EAAuC,aAAhBG,EAAA,KAAK,EAAA,CAAA,6DCApC,eAAsB8C,GAAsBC,EAAgC,CAC3E,MAAMC,EAAMvB,EAAY,mCAAmC,EAC3D,MAAMC,EAAM,KAAKsB,EAAK,CACrB,OAAAD,CAAA,CACA,CACF,CAOA,eAAsBE,GAAmBC,EAA4B,CACpE,MAAMF,EAAMvB,EAAY,kCAAkC,EAC1D,MAAMC,EAAM,KAAKsB,EAAK,CACrB,IAAAE,CAAA,CACA,CACF,CAKA,eAAsBC,IAAoC,CACzD,MAAMH,EAAMvB,EAAY,kCAAkC,EAC1D,MAAMC,EAAM,OAAOsB,CAAG,CACvB,CC+CA,MAAKrD,GAAU,CACd,KAAM,uBACN,WAAY,CACX,SAAAY,EACA,sBAAAW,EACA,SAAAD,EACA,kBAAAmC,GACA,WAAAjC,EACA,YAAAC,EACA,6BAAAE,GAGD,OAAQ,CACP,MAAO,GAAEC,CAAA,CACV,EAEA,MAAO,CACN,MAAO,CACN,mBAAoBR,EAAU,MAAO,uBAAwB,EAAK,EAClE,eAAgBA,EAAU,MAAO,2BAA4B,EAAK,EAClE,gBAAiB,GACjB,UAAW,GACX,SAAU,GACV,aAAc,GACd,aAAc,MACf,CACD,EAEA,SAAU,CACT,aAAc,CACb,OAAOU,EAAY,kCAAkC,CACtD,GAGD,QAAS,CACR,YAAa,CACZ,KAAK,aAAe,KAAK,MAAM,YAAY,GAAG,MAAM,CAAC,CACtD,EAEA,MAAM,0BAA2B,CAChC,KAAK,aAAe,GAEpB,MAAMsB,EAAS,CAAC,KAAK,mBACrB,GAAI,CACH,MAAMM,GAA0CN,CAAM,CACvD,OAASlB,EAAO,CACfF,EAAUJ,EAAE,MAAO,+CAA+C,CAAC,EACnEO,EAAO,MAAM,gDAAiD,CAC7D,MAAAD,EACA,OAAAkB,EACA,CACF,QAAA,CACC,KAAK,aAAe,EACrB,CAEA,KAAK,mBAAqBA,CAC3B,EAEA,mBAAoB,CACnB,GAAI,CAAC,KAAK,aACT,OAGD,KAAK,UAAY,GAEjB,MAAMd,EAAS,IAAI,WACnBA,EAAO,iBAAiB,OAAQ,SAAY,CAC3C,MAAMiB,EAAMjB,EAAO,OAEnB,GAAI,CACH,MAAMqB,GAAuCJ,CAAG,CACjD,OAASrB,EAAO,CACfF,EAAUJ,EAAE,MAAO,oCAAoC,CAAC,EACxDO,EAAO,MAAM,+BAAgC,CAC5C,MAAAD,EACA,IAAAqB,EACA,EACD,MACD,QAAA,CACC,KAAK,UAAY,EAClB,CAEAtB,EAAYL,EAAE,MAAO,6CAA6C,CAAC,EACnE,KAAK,gBAAkB,GACvB,KAAK,eAAiB,EACvB,CAAC,EACDU,EAAO,WAAW,KAAK,YAAY,CACpC,EAEA,MAAM,mBAAoB,CACzB,KAAK,SAAW,GAEhB,GAAI,CACH,MAAMsB,GAAsC,CAC7C,OAAS1B,EAAO,CACfF,EAAUJ,EAAE,MAAO,2CAA2C,CAAC,EAC/DO,EAAO,MAAM,4CAA6C,CACzD,MAAAD,EACA,EACD,MACD,SACC,KAAK,SAAW,EACjB,CAEAD,EAAYL,EAAE,MAAO,+CAA+C,CAAC,EACrE,KAAK,eAAiB,EACvB,EAEF,EA3LMb,GAAA,CAAA,MAAM,wBAAwB,YAUjC,MAAM,mCA6BDd,GAAA,CAAA,MAAM,oBAAoB,kBAWzB4D,GAAA,CAAA,MAAM,6BAA6B,gMAlD3C,OAAApD,EAAA,EAAAP,EA+DM,MA/DNa,GA+DM,CA9DLE,EAMwBsB,EAAA,CALtB,cAAaC,EAAA,mBACb,SAAUA,EAAA,aACX,KAAK,SACJ,sBAAoBC,EAAA,qCACrB,IAA6E,KAA1EC,EAAA,EAAC,MAAA,6DAAA,CAAA,EAAA,CAAA,6DAGEF,EAAA,oBADP/B,IAAAP,EA2BM,MA3BNc,GA2BM,CAxBLC,EAK+B0B,EAAA,CALA,KAAMF,EAAA,WAAW,EAAA,CACpC,OACV,IAAgC,CAAhCxB,EAAgC6C,EAAA,CAAZ,KAAM,EAAE,CAAA,cAClB,IAEZ,eAFY,sBAEZ,EAAA,sBACA7C,EAOW4B,EAAA,CANV,QAAQ,YACP,uBAAOL,EAAA,gBAAe,MACZ,OACV,IAAyB,CAAzBvB,EAAyB6B,EAAA,CAAZ,KAAM,EAAE,CAAA,cACX,IACX,CADWC,EAAA,MACRL,EAAA,EAAC,MAAA,uBAAA,CAAA,EAAA,CAAA,UAGEF,EAAA,oBADP9B,EASWmC,EAAA,OAPV,QAAQ,WACP,SAAUL,EAAA,SACV,QAAOC,EAAA,oBACG,OACV,IAA0B,CAA1BxB,EAA0B+B,EAAA,CAAZ,KAAM,EAAE,CAAA,cACZ,IACX,CADWD,EAAA,MACRL,EAAA,EAAC,MAAA,kBAAA,CAAA,EAAA,CAAA,yDAGNzB,EA0BWgC,EAAA,CAzBF,KAAMT,EAAA,+CAAAA,EAAA,gBAAejC,GAC5B,KAAMmC,EAAA,EAAC,MAAA,uBAAA,cACR,IAsBM,CAtBNlC,EAsBM,MAtBNP,GAsBM,CArBLO,EAEI,WADAkC,EAAA,EAAC,MAAA,wDAAA,CAAA,EAAA,CAAA,EAELlC,EAMsB,QAAA,CALrB,IAAI,aACH,SAAUgC,EAAA,UACX,KAAK,OACL,OAAO,qBACP,MAAM,kCACL,6BAAQC,EAAA,YAAAA,EAAA,WAAA,GAAAS,CAAA,gBACV1C,EAUM,MAVNqD,GAUM,CATL5C,EAQW4B,EAAA,CAPT,SAAUL,EAAA,WAAS,CAAKA,EAAA,aACzB,QAAQ,UACP,uBAAOC,EAAA,uBACG,OACV,IAAyB,CAAzBxB,EAAyB6B,EAAA,CAAZ,KAAM,EAAE,CAAA,cACX,IACX,CADWC,EAAA,MACRL,EAAA,EAAC,MAAA,cAAA,CAAA,EAAA,CAAA,8KCpDV,MAAMqB,EAAiB3C,EAAU,MAAO,iBAAiB,EACnD4C,EAAiB5C,EAAU,MAAO,iBAAiB,oBAIxDV,EAMoBC,EAAAsD,CAAA,EAAA,CALnB,GAAG,kBACF,KAAMtD,EAAAiB,CAAA,EAAC,MAAA,iBAAA,EACP,YAAajB,EAAAiB,CAAA,EAAC,MAAA,iJAAA,CAAA,aACf,IAAgD,CAAlBjB,EAAAoD,CAAA,OAA9BrD,EAAgDwD,GAAA,CAAA,IAAA,CAAA,CAAA,YACpBvD,EAAAqD,CAAA,OAA5BtD,EAA8CyD,GAAA,CAAA,IAAA,CAAA,CAAA,iDCd1CC,GAAMC,EAAUC,EAA6B,EACnDF,GAAI,MAAM,2BAA2B","x_google_ignoreList":[0,1,2,3,6]}