nextcloud/dist/UpdateAllDialog-Bx9vMq27.chunk.mjs.map
nextcloud-command 230b14978e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-06-22 18:44:49 +00:00

1 line
No EOL
38 KiB
Text

{"version":3,"mappings":"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","names":["_sfc_main","NcIconSvgWrapper","ActionGlobalMixin","NC_ACTIONS_IS_SEMANTIC_MENU","createElementId","id","props","useModel","mdiCheckboxBlankOutline","mdiCheckboxMarked","event","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render","_ctx","_cache","$props","$setup","$data","$options","_component_NcIconSvgWrapper","resolveComponent","openBlock","createElementBlock","normalizeClass","createElementVNode","withDirectives","$event","args","vModelCheckbox","createVNode","toDisplayString","NcActionCheckbox","_export_sfc","queue","PQueue","__props","isError","ref","isLoading","watchEffect","image","promise","resolve","_createElementBlock","_normalizeClass","$style","_createBlock","_unref","mdiCogOutline","NcLoadingIcon","userSettingsStore","useUserSettingsStore","route","useRoute","routeToDetails","computed","_createVNode","_component_RouterLink","AppImage","_createElementVNode","_toDisplayString","BadgeAppScore","BadgeAppLevel","BadgeAppDaemon","userSettings","gridSize","_Fragment","_renderList","app","AppGridItem","router","useRouter","watch","enabled","newSize","showIncompatible","NcActions","t","mdiFilterVariant","NcActionButtonGroup","NcActionButton","mdiSizeS","mdiSizeM","mdiSizeL","NcButton","mdiViewGrid","useFilteredApps","apps","store","query","toValue","needle","UpdateAllDialog","defineAsyncComponent","__vitePreload","UpdateAllDialog$1","useAppsStore","updatesStore","useUpdatesStore","currentCategory","visibleApps","onUpdateAll","spawnDialog","AppToolbar","mdiUpdate","_createTextVNode","NcEmptyContent","_openBlock","_resolveDynamicComponent","AppGrid","AppTable","$router","$route","search","newQuery","watchDebounced","newValue","NcInputField","emit","__emit","showDetails","isUpdating","changelogText","release","getLanguage","onUpdate","error","logger","showError","NcDialog","mdiCheck","mdiWeb","mdiInformationOutline","NcNoteCard","MarkdownPreview"],"ignoreList":[0],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionCheckbox-DBqiK-AZ.mjs","../build/frontend/apps/appstore/src/components/AppImage.vue","../build/frontend/apps/appstore/src/components/AppGrid/AppGridItem.vue","../build/frontend/apps/appstore/src/components/AppGrid/AppGrid.vue","../build/frontend/apps/appstore/src/components/AppToolbar.vue","../build/frontend/apps/appstore/src/composables/useFilteredApps.ts","../build/frontend/apps/appstore/src/views/AppstoreManage.vue","../build/frontend/apps/appstore/src/views/AppstoreSearch.vue","../build/frontend/apps/appstore/src/components/UpdateAllDialog.vue"],"sourcesContent":["import '../assets/NcActionCheckbox-wD8m_a8-.css';\nimport { h as mdiCheckboxMarked, i as mdiCheckboxBlankOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, withDirectives, vModelCheckbox, createVNode, toDisplayString, useModel } from \"vue\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-g8ubWhoz.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcActionCheckbox\",\n components: {\n NcIconSvgWrapper\n },\n mixins: [ActionGlobalMixin],\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * checked state of the the checkbox element\n */\n modelValue: {\n type: Boolean,\n default: false\n },\n /**\n * value of the checkbox input\n */\n value: {\n type: [String, Number],\n default: \"\"\n },\n /**\n * disabled state of the checkbox element\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n /** Native change event */\n \"change\",\n /** Checkbox is checked */\n \"check\",\n /** Checkbox is unchecked */\n \"uncheck\",\n /** Model value changed */\n \"update:modelValue\"\n ],\n setup(props) {\n const model = useModel(props, \"modelValue\");\n return {\n model,\n mdiCheckboxBlankOutline,\n mdiCheckboxMarked\n };\n },\n methods: {\n onChange(event) {\n this.$emit(\"change\", event);\n if (event.target.checked) {\n this.$emit(\"check\");\n } else {\n this.$emit(\"uncheck\");\n }\n }\n }\n};\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"role\", \"aria-checked\"];\nconst _hoisted_3 = { class: \"action-checkbox__icon\" };\nconst _hoisted_4 = [\"id\", \"value\", \"disabled\"];\nconst _hoisted_5 = { class: \"action-checkbox__text\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([\"action\", { \"action--disabled\": $props.disabled }]),\n role: $options.isInSemanticMenu && \"presentation\"\n }, [\n createElementVNode(\"label\", {\n class: \"action-checkbox\",\n role: $options.isInSemanticMenu && \"menuitemcheckbox\",\n \"aria-checked\": $options.isInSemanticMenu && $setup.model.toString()\n }, [\n createElementVNode(\"span\", _hoisted_3, [\n withDirectives(createElementVNode(\"input\", {\n id: $props.id,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $setup.model = $event),\n type: \"checkbox\",\n class: normalizeClass([\"action-checkbox__input\", { focusable: !$props.disabled }]),\n value: $props.value,\n disabled: $props.disabled,\n onChange: _cache[1] || (_cache[1] = (...args) => $options.onChange && $options.onChange(...args))\n }, null, 42, _hoisted_4), [\n [vModelCheckbox, $setup.model]\n ]),\n createVNode(_component_NcIconSvgWrapper, {\n path: $setup.model ? $setup.mdiCheckboxMarked : $setup.mdiCheckboxBlankOutline,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n createElementVNode(\"span\", _hoisted_5, toDisplayString(_ctx.text), 1)\n ], 8, _hoisted_2)\n ], 10, _hoisted_1);\n}\nconst NcActionCheckbox = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-2947bc3b\"]]);\nexport {\n NcActionCheckbox as N\n};\n//# sourceMappingURL=NcActionCheckbox-DBqiK-AZ.mjs.map\n","<!--\n - SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { mdiCogOutline } from '@mdi/js'\nimport { NcLoadingIcon } from '@nextcloud/vue'\nimport PQueue from 'p-queue'\nimport { ref, watchEffect } from 'vue'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\n\nconst props = defineProps<{\n\tapp: IAppstoreApp | IAppstoreExApp\n}>()\n\nconst isError = ref(false)\nconst isLoading = ref(true)\nwatchEffect(() => {\n\tif (props.app.screenshot) {\n\t\tisError.value = false\n\t\tisLoading.value = true\n\t\tqueue.add(() => {\n\t\t\tconst image = new Image()\n\t\t\tconst { promise, resolve } = Promise.withResolvers<void>()\n\t\t\timage.onload = () => {\n\t\t\t\tisLoading.value = false\n\t\t\t\tresolve()\n\t\t\t}\n\t\t\timage.onerror = () => {\n\t\t\t\tisError.value = true\n\t\t\t\tisLoading.value = false\n\t\t\t\tresolve()\n\t\t\t}\n\t\t\timage.src = props.app.screenshot!\n\t\t\treturn promise\n\t\t})\n\t} else {\n\t\tisLoading.value = false\n\t\tisError.value = false\n\t}\n})\n</script>\n\n<script lang=\"ts\">\nconst queue = new PQueue({ concurrency: 4 })\n</script>\n\n<template>\n\t<div :class=\"$style.appImage\">\n\t\t<NcIconSvgWrapper\n\t\t\tv-if=\"isError || !props.app.screenshot\"\n\t\t\t:size=\"80\"\n\t\t\t:path=\"mdiCogOutline\" />\n\n\t\t<NcLoadingIcon v-else-if=\"isLoading\" :size=\"80\" />\n\n\t\t<img\n\t\t\tv-else\n\t\t\t:class=\"$style.appImage__image\"\n\t\t\t:src=\"props.app.screenshot\"\n\t\t\talt=\"\">\n\t</div>\n</template>\n\n<style module>\n.appImage {\n\tdisplay: flex;\n\tjustify-content: center;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.appImage__image {\n\tobject-fit: cover;\n\theight: 100%;\n\twidth: 100%;\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { IAppstoreApp, IAppstoreExApp } from '../../apps.d.ts'\n\nimport { computed } from 'vue'\nimport { useRoute } from 'vue-router'\nimport AppImage from '../AppImage.vue'\nimport BadgeAppDaemon from '../BadgeAppDaemon.vue'\nimport BadgeAppLevel from '../BadgeAppLevel.vue'\nimport BadgeAppScore from '../BadgeAppScore.vue'\nimport { useUserSettingsStore } from '../../store/userSettings.ts'\n\nconst { app } = defineProps<{\n\tapp: IAppstoreApp | IAppstoreExApp\n}>()\n\nconst userSettingsStore = useUserSettingsStore()\nconst route = useRoute()\nconst routeToDetails = computed(() => ({\n\t...route,\n\tparams: {\n\t\t...route.params,\n\t\tid: app.id,\n\t},\n\tquery: userSettingsStore.getQuery(),\n}))\n</script>\n\n<template>\n\t<li :class=\"$style.appGridItem\">\n\t\t<RouterLink :to=\"routeToDetails\">\n\t\t\t<AppImage :app :class=\"$style.appGridItem__image\" />\n\t\t\t<div :class=\"$style.appGridItem__content\">\n\t\t\t\t<h3 :class=\"$style.appGridItem__name\">\n\t\t\t\t\t{{ app.name }}\n\t\t\t\t</h3>\n\t\t\t\t<p>{{ app.summary }}</p>\n\t\t\t</div>\n\t\t</RouterLink>\n\t\t<div :class=\"$style.appGridItem__badges\">\n\t\t\t<BadgeAppScore :app />\n\t\t\t<BadgeAppLevel :level=\"app.level\" />\n\t\t\t<BadgeAppDaemon v-if=\"app.app_api && app.daemon\" :daemon=\"app.daemon\" />\n\t\t</div>\n\t</li>\n</template>\n\n<style module>\n.appGridItem {\n\tbackground-color: var(--color-primary-element-light);\n\tcolor: var(--color-primary-element-light-text);\n\tborder-radius: var(--border-radius-element);\n\tpadding-block-end: var(--border-radius-element);;\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: space-between;\n\tgap: var(--default-grid-baseline);\n\n\t&:hover {\n\t\tbackground-color: var(--color-primary-element-light-hover);\n\t}\n}\n\n.appGridItem__content {\n\tpadding-inline: var(--border-radius-element);\n}\n\n.appGridItem__image {\n\taspect-ratio: 16 / 9;\n\theight: min-content;\n\tborder-start-start-radius: var(--border-radius-element);\n\tborder-start-end-radius: var(--border-radius-element);\n\toverflow: hidden;\n}\n\n.appGridItem__name {\n\tfont-size: 1.2em;\n\tfont-weight: var(--font-weight-heading, bold);\n\tmargin-block: var(--default-grid-baseline) calc(2 * var(--default-grid-baseline));\n}\n\n.appGridItem__badges {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: var(--default-grid-baseline);\n\tpadding-inline: var(--border-radius-element);\n\twidth: 100%;\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { IAppstoreApp, IAppstoreExApp } from '../../apps.d.ts'\n\nimport { computed } from 'vue'\nimport AppGridItem from './AppGridItem.vue'\nimport { useUserSettingsStore } from '../../store/userSettings.ts'\n\ndefineProps<{\n\tapps: (IAppstoreApp | IAppstoreExApp)[]\n}>()\n\nconst userSettings = useUserSettingsStore()\nconst gridSize = computed(() => userSettings.gridSizePx)\n</script>\n\n<template>\n\t<ul :class=\"$style.appGrid\">\n\t\t<AppGridItem\n\t\t\tv-for=\"app in apps\"\n\t\t\t:key=\"app.id\"\n\t\t\t:app />\n\t</ul>\n</template>\n\n<style module>\n.appGrid {\n\twidth: 100%;\n\tdisplay: grid;\n\tgap: calc(4 * var(--default-grid-baseline));\n\tgrid-template-columns: repeat(auto-fit, minmax(v-bind(gridSize), 1fr));\n\tpadding-inline-start: var(--app-navigation-padding);\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport { mdiFilterVariant, mdiSizeL, mdiSizeM, mdiSizeS, mdiViewGrid } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActionButtonGroup from '@nextcloud/vue/components/NcActionButtonGroup'\nimport NcActionCheckbox from '@nextcloud/vue/components/NcActionCheckbox'\nimport NcActions from '@nextcloud/vue/components/NcActions'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport { useUserSettingsStore } from '../store/userSettings.ts'\n\nconst route = useRoute()\nconst router = useRouter()\nconst userSettingsStore = useUserSettingsStore()\n\nwatch(() => userSettingsStore.isGridView, (enabled: boolean) => {\n\trouter.replace({\n\t\t...route,\n\t\tquery: {\n\t\t\t...route.query,\n\t\t\tgrid: enabled ? null : undefined,\n\t\t},\n\t})\n})\n\nwatch(() => userSettingsStore.defaultGridSize, (newSize) => {\n\tif (userSettingsStore.isGridView) {\n\t\trouter.replace({\n\t\t\t...route,\n\t\t\tquery: {\n\t\t\t\t...route.query,\n\t\t\t\tgrid: newSize || null,\n\t\t\t},\n\t\t})\n\t}\n})\n\nwatch(() => userSettingsStore.showIncompatible, (showIncompatible) => {\n\tif (showIncompatible) {\n\t\trouter.replace({\n\t\t\t...route,\n\t\t\tquery: {\n\t\t\t\t...route.query,\n\t\t\t\tcompatible: undefined,\n\t\t\t},\n\t\t})\n\t} else {\n\t\trouter.replace({\n\t\t\t...route,\n\t\t\tquery: {\n\t\t\t\t...route.query,\n\t\t\t\tcompatible: null,\n\t\t\t},\n\t\t})\n\t}\n})\n</script>\n\n<template>\n\t<div :class=\"$style.appToolbar\">\n\t\t<NcActions :class=\"$style.appToolbar__filterButton\" :aria-label=\"t('appstore', 'Filter view')\" forceMenu>\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiFilterVariant\" />\n\t\t\t</template>\n\t\t\t<NcActionButtonGroup v-if=\"userSettingsStore.isGridView\" :name=\"t('appstore', 'Grid size')\">\n\t\t\t\t<NcActionButton\n\t\t\t\t\t:aria-label=\"t('appstore', 'Small grid size')\"\n\t\t\t\t\t:modelValue=\"userSettingsStore.defaultGridSize === ''\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tvalue=\"\"\n\t\t\t\t\t@update:modelValue=\"userSettingsStore.defaultGridSize = ''\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiSizeS\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton\n\t\t\t\t\t:aria-label=\"t('appstore', 'Medium grid size')\"\n\t\t\t\t\t:modelValue=\"userSettingsStore.defaultGridSize === 'm'\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tvalue=\"m\"\n\t\t\t\t\t@update:modelValue=\"userSettingsStore.defaultGridSize = 'm'\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiSizeM\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton\n\t\t\t\t\t:aria-label=\"t('appstore', 'Large grid size')\"\n\t\t\t\t\t:modelValue=\"userSettingsStore.defaultGridSize === 'l'\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\tvalue=\"l\"\n\t\t\t\t\t@update:modelValue=\"userSettingsStore.defaultGridSize = 'l'\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiSizeL\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActionButtonGroup>\n\n\t\t\t<NcActionCheckbox v-model=\"userSettingsStore.showIncompatible\">\n\t\t\t\t{{ t('appstore', 'Show incompatible') }}\n\t\t\t</NcActionCheckbox>\n\t\t</NcActions>\n\n\t\t<NcButton\n\t\t\tv-model:pressed=\"userSettingsStore.isGridView\"\n\t\t\t:aria-label=\"t('appstore', 'Grid view')\"\n\t\t\tvariant=\"tertiary\">\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiViewGrid\" />\n\t\t\t</template>\n\t\t</NcButton>\n\t</div>\n</template>\n\n<style module>\n.appToolbar {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: calc(2 * var(--default-grid-baseline));\n\tposition: absolute;\n\tinset-block-start: var(--app-navigation-padding);\n\tinset-inline-end: var(--app-sidebar-padding);\n\n\tz-index: 999;\n\n\tbutton:not([aria-pressed=\"true\"]):not(:hover) {\n\t\tbackground-color: var(--color-main-background) !important;\n\t}\n}\n</style>\n","/*!\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { computed, toValue } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { useUserSettingsStore } from '../store/userSettings.ts'\n\n/**\n * Get the filtered list of apps based on the user settings\n *\n * @param apps - The apps to filter\n */\nexport function useFilteredApps(apps: MaybeRefOrGetter<(IAppstoreApp | IAppstoreExApp)[]>) {\n\tconst store = useUserSettingsStore()\n\tconst route = useRoute()\n\treturn computed(() => {\n\t\tconst query = [route.query.q || ''].flat()[0]!\n\t\treturn toValue(apps)\n\t\t\t.filter((app) => {\n\t\t\t\tif (!store.showIncompatible && app.isCompatible === false) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\tif (query) {\n\t\t\t\t\tconst needle = query.trim().toLocaleLowerCase()\n\t\t\t\t\treturn app.name.toLocaleLowerCase().includes(needle)\n\t\t\t\t\t\t|| app.id.toLocaleLowerCase().includes(needle)\n\t\t\t\t\t\t|| app.summary.toLocaleLowerCase().includes(needle)\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t})\n\t})\n}\n","<!--\n - SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport { mdiUpdate } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { NcIconSvgWrapper, spawnDialog } from '@nextcloud/vue'\nimport { computed, defineAsyncComponent } from 'vue'\nimport { useRoute } from 'vue-router'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport AppGrid from '../components/AppGrid/AppGrid.vue'\nimport AppTable from '../components/AppTable/AppTable.vue'\nimport AppToolbar from '../components/AppToolbar.vue'\nimport { useFilteredApps } from '../composables/useFilteredApps.ts'\nimport { useAppsStore } from '../store/apps.ts'\nimport { useUpdatesStore } from '../store/updates.ts'\nimport { useUserSettingsStore } from '../store/userSettings.ts'\n\nconst UpdateAllDialog = defineAsyncComponent(() => import('../components/UpdateAllDialog.vue'))\n\nconst route = useRoute()\nconst store = useAppsStore()\nconst updatesStore = useUpdatesStore()\nconst userSettings = useUserSettingsStore()\n\nconst currentCategory = computed(() => route.params!.category as 'enabled' | 'installed' | 'disabled' | 'updates')\nconst apps = computed(() => {\n\tif (currentCategory.value === 'installed') {\n\t\treturn store.apps.filter((app) => app.installed)\n\t} else if (currentCategory.value === 'enabled') {\n\t\treturn store.apps.filter((app) => app.active)\n\t} else if (currentCategory.value === 'disabled') {\n\t\treturn store.apps.filter((app) => app.installed && !app.active)\n\t} else if (currentCategory.value === 'updates') {\n\t\treturn store.apps.filter((app) => app.active && app.update)\n\t}\n\treturn []\n})\nconst visibleApps = useFilteredApps(apps)\n\n/**\n * Handle update all apps\n */\nasync function onUpdateAll() {\n\tawait spawnDialog(UpdateAllDialog, {\n\t\tapps: visibleApps.value,\n\t})\n}\n</script>\n\n<template>\n\t<AppToolbar />\n\n\t<NcButton\n\t\tv-if=\"currentCategory === 'updates' && updatesStore.updateCount > 0\"\n\t\t:class=\"$style.appstoreManage__updateAllButton\"\n\t\tvariant=\"primary\"\n\t\t@click=\"onUpdateAll\">\n\t\t<template #icon>\n\t\t\t<NcIconSvgWrapper :path=\"mdiUpdate\" />\n\t\t</template>\n\t\t{{ t('appstore', 'Update all applications') }}\n\t</NcButton>\n\n\t<!-- Apps list -->\n\t<NcEmptyContent\n\t\tv-if=\"store.isLoadingApps\"\n\t\t:name=\"t('appstore', 'Loading app list')\">\n\t\t<template #icon>\n\t\t\t<NcLoadingIcon :size=\"64\" />\n\t\t</template>\n\t</NcEmptyContent>\n\n\t<component\n\t\t:is=\"userSettings.isGridView ? AppGrid : AppTable\"\n\t\tv-else-if=\"visibleApps.length\"\n\t\t:class=\"$style.appstoreManage\"\n\t\t:apps=\"visibleApps\" />\n\t<NcEmptyContent\n\t\tv-else\n\t\t:name=\"t('appstore', 'No matching apps found')\">\n\t\t<template #action>\n\t\t\t<NcButton variant=\"primary\" @click=\"$router.push({ query: $route.query, name: 'apps-search' })\">\n\t\t\t\t{{ t('appstore', 'Search everywhere') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</NcEmptyContent>\n</template>\n\n<style module>\n.appstoreManage {\n\tmargin-bottom: var(--body-container-margin);\n}\n\n.appstoreManage__updateAllButton {\n\tmargin-inline: var(--app-navigation-padding);\n\tmargin-block: calc(3 * var(--default-grid-baseline));\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport { t } from '@nextcloud/l10n'\nimport { watchDebounced } from '@vueuse/core'\nimport { ref, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcInputField from '@nextcloud/vue/components/NcInputField'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport AppGrid from '../components/AppGrid/AppGrid.vue'\nimport AppTable from '../components/AppTable/AppTable.vue'\nimport AppToolbar from '../components/AppToolbar.vue'\nimport { useFilteredApps } from '../composables/useFilteredApps.ts'\nimport { useAppsStore } from '../store/apps.ts'\nimport { useUserSettingsStore } from '../store/userSettings.ts'\n\nconst route = useRoute()\nconst router = useRouter()\nconst store = useAppsStore()\nconst userSettings = useUserSettingsStore()\n\nconst visibleApps = useFilteredApps(() => store.apps)\nconst search = ref('')\n\nwatch(() => route.query.q, (newQuery) => {\n\tsearch.value = [newQuery || ''].flat()[0]!\n}, { immediate: true })\n\nwatchDebounced(search, (newValue) => {\n\trouter.replace({\n\t\t...route,\n\t\tquery: {\n\t\t\t...route.query,\n\t\t\tq: newValue.trim(),\n\t\t},\n\t})\n}, { debounce: 500 })\n</script>\n\n<template>\n\t<AppToolbar />\n\n\t<!-- Apps list -->\n\t<NcEmptyContent\n\t\tv-if=\"store.isLoadingApps\"\n\t\t:name=\"t('appstore', 'Loading app list')\">\n\t\t<template #icon>\n\t\t\t<NcLoadingIcon :size=\"64\" />\n\t\t</template>\n\t</NcEmptyContent>\n\n\t<component\n\t\t:is=\"userSettings.isGridView ? AppGrid : AppTable\"\n\t\tv-else-if=\"visibleApps.length && search.trim().length > 2\"\n\t\t:class=\"$style.appstoreSearch\"\n\t\t:apps=\"visibleApps\" />\n\t<NcEmptyContent\n\t\tv-else\n\t\t:name=\"t('appstore', 'No matching apps found')\"\n\t\t:description=\"search.trim().length <= 2 ? t('appstore', 'Please enter more characters to search.') : undefined\">\n\t\t<template #action>\n\t\t\t<NcInputField v-model=\"search\" type=\"search\" :label=\"t('appstore', 'Search apps')\" />\n\t\t</template>\n\t</NcEmptyContent>\n</template>\n\n<style module>\n.appstoreSearch {\n\tmargin-bottom: var(--body-container-margin);\n}\n</style>\n","<!--\n SPDX-License-Identifier: AGPL-3.0-or-later\n SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n-->\n\n<script setup lang=\"ts\">\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { mdiCheck, mdiInformationOutline, mdiUpdate, mdiWeb } from '@mdi/js'\nimport { showError } from '@nextcloud/dialogs'\nimport { getLanguage, t } from '@nextcloud/l10n'\nimport { NcButton, NcDialog, NcIconSvgWrapper, NcLoadingIcon, NcNoteCard } from '@nextcloud/vue'\nimport { computed, ref } from 'vue'\nimport MarkdownPreview from './MarkdownPreview.vue'\nimport { useUpdatesStore } from '../store/updates.ts'\nimport logger from '../utils/logger.ts'\n\nconst props = defineProps<{\n\tapps: (IAppstoreApp | IAppstoreExApp)[]\n}>()\n\nconst emit = defineEmits<{\n\tclose: []\n}>()\n\nconst store = useUpdatesStore()\nconst showDetails = ref('')\nconst isUpdating = ref(false)\n\nconst changelogText = computed(() => {\n\tif (!showDetails.value) {\n\t\treturn ''\n\t}\n\n\tconst app = props.apps.find((app) => app.id === showDetails.value)\n\tif (!app || !app.releases || app.releases.length === 0) {\n\t\treturn ''\n\t}\n\n\tconst [release] = app.releases\n\tconst localizedEntry = release.translations[getLanguage()]\n\treturn localizedEntry?.changelog ?? release.translations.en?.changelog ?? ''\n})\n\n/**\n * Handle update all apps\n */\nasync function onUpdate() {\n\tisUpdating.value = true\n\tfor (const app of props.apps) {\n\t\ttry {\n\t\t\tawait store.updateApp(app.id)\n\t\t} catch (error) {\n\t\t\tlogger.error(`Failed to update app ${app.id}`, { error })\n\t\t\tshowError(t('appstore', 'Failed to update app {appName}', { appName: app.name }))\n\t\t}\n\t}\n\tisUpdating.value = false\n\temit('close')\n}\n</script>\n\n<template>\n\t<NcDialog :contentClasses=\"$style.updateAllDialog\" size=\"normal\" :name=\"t('appstore', 'Update all apps')\">\n\t\t<p>{{ t('appstore', 'Are you sure you want to update all apps?') }}</p>\n\t\t<ul>\n\t\t\t<li v-for=\"app in apps\" :key=\"app.id\" :class=\"$style.updateAllDialog__listEntry\">\n\t\t\t\t<div :class=\"$style.updateAllDialog__listEntryContent\">\n\t\t\t\t\t<div :class=\"$style.updateAllDialog__listEntryHeading\">\n\t\t\t\t\t\t<NcIconSvgWrapper\n\t\t\t\t\t\t\t:path=\"app.update ? mdiUpdate : mdiCheck\"\n\t\t\t\t\t\t\t:name=\"app.update ? undefined : t('appstore', 'Update done')\" />\n\t\t\t\t\t\t<span :class=\"$style.updateAllDialog__listEntryName\">{{ app.name }} ({{ app.version }} → {{ app.update }})</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div :class=\"$style.updateAllDialog__listEntryActions\">\n\t\t\t\t\t\t<NcButton\n\t\t\t\t\t\t\tv-if=\"app.website\"\n\t\t\t\t\t\t\t:aria-label=\"t('appstore', 'View website')\"\n\t\t\t\t\t\t\t:title=\"t('appstore', 'View website')\"\n\t\t\t\t\t\t\t:href=\"app.website\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\tvariant=\"tertiary\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiWeb\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t\t<NcButton\n\t\t\t\t\t\t\tv-if=\"app.releases\"\n\t\t\t\t\t\t\t:aria-label=\"t('appstore', 'Show details')\"\n\t\t\t\t\t\t\t:title=\"t('appstore', 'Show details')\"\n\t\t\t\t\t\t\t:pressed=\"showDetails === app.id\"\n\t\t\t\t\t\t\t@update:pressed=\"showDetails = $event ? app.id : ''\">\n\t\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiInformationOutline\" />\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</NcButton>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<NcNoteCard\n\t\t\t:class=\"$style.updateAllDialog__listEntryDetails\"\n\t\t\t:heading=\"t('appstore', 'Details')\"\n\t\t\ttype=\"info\">\n\t\t\t<MarkdownPreview\n\t\t\t\t:minHeadingLevel=\"3\"\n\t\t\t\t:text=\"changelogText\" />\n\t\t</NcNoteCard>\n\n\t\t<template #actions>\n\t\t\t<NcButton variant=\"tertiary\" @click=\"emit('close')\">\n\t\t\t\t{{ t('appstore', 'Cancel') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton variant=\"primary\" @click=\"onUpdate\">\n\t\t\t\t<template v-if=\"isUpdating\" #icon>\n\t\t\t\t\t<NcLoadingIcon />\n\t\t\t\t</template>\n\t\t\t\t{{ t('appstore', 'Update all') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</NcDialog>\n</template>\n\n<style module>\n.updateAllDialog {\n\tmin-height: 50vh !important;\n}\n\n.updateAllDialog__list {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: calc(3 * var(--default-grid-baseline));\n}\n\n.updateAllDialog__listEntry {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(2 * var(--default-grid-baseline));\n\tpadding: calc(2 * var(--default-grid-baseline));\n}\n\n.updateAllDialog__listEntryHeading {\n\tdisplay: flex;\n}\n\n.updateAllDialog__listEntryName {\n\tfont-weight: 500;\n\tline-height: var(--default-clickable-area);\n}\n\n.updateAllDialog__listEntryActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: var(--default-grid-baseline);\n}\n\n.updateAllDialog__listEntryContent {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n\n.updateAllDialog__listEntryDetails {\n\tmargin: 0;\n}\n</style>\n"],"file":"UpdateAllDialog-Bx9vMq27.chunk.mjs"}