Files
nextcloud-server-mirror/dist/appstore-main.mjs.map
nextcloud-command 2ab4557d4e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-06-21 13:54:02 +00:00

1 line
250 KiB
Plaintext

{"version":3,"mappings":"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","names":["_hoisted_1","_sfc_main","defineComponent","__props","_ctx","_cache","openBlock","createElementBlock","NcAppNavigationSpacer","_export_sfc","event","_hoisted_2","_sfc_render","$props","$setup","$data","$options","normalizeClass","args","createElementVNode","toDisplayString","renderSlot","NcAppSidebarTab","APPSTORE_CATEGORY_NAMES","t","APPSTORE_CATEGORY_ICONS","mdiStarCircleOutline","mdiAccountOutline","mdiCheck","mdiClose","mdiArchiveOutline","mdiStarShootingOutline","mdiStar","mdiDownload","mdiCreationOutline","mdiKeyOutline","mdiCogOutline","mdiViewColumnOutline","mdiFolder","mdiControllerClassicOutline","mdiOpenInApp","mdiMonitorEye","mdiMultimedia","mdiFileDocumentEdit","mdiOfficeBuildingOutline","mdiMagnify","mdiSecurity","mdiAccountMultipleOutline","mdiTools","mdiClipboardFlowOutline","APP_DISCOVER_KNOWN_TYPES","addPasswordConfirmationInterceptors","axios","BASE_URL","generateOcsUrl","Url","queue","PQueue","enableApp","appId","force","groups","PwdConfirmationMode","disableApp","updateApp","uninstallApp","getApps","data","getCategories","category","enableBundle","bundleId","rebuildNavigation","emit","canInstall","app","canUninstall","canEnable","isInitializing","isDeploying","canForceEnable","needForceEnable","canDisable","canUpdate","restrictedTypes","canLimitToGroups","type","logger","getLoggerBuilder","props","__emit","itemTitle","computed","_createBlock","_unref","NcListItem","_createTextVNode","_toDisplayString","store","useExAppsStore","_createElementBlock","_normalizeClass","$style","_openBlock","_Fragment","_renderList","daemon","DaemonSelectionDialogListEntry","$event","$emit","appApiAdminPage","generateUrl","NcDialog","NcEmptyContent","_createVNode","NcIconSvgWrapper","mdiFormatListBulleted","NcButton","DaemonSelectionDialogList","fetchApps","fetchAppStatus","enableExApp","deployOptions","confirmPassword","forceEnableExApp","disableExApp","defineStore","isEnabled","loadState","apps","ref","updateCount","statusUpdater","daemonAccessible","defaultDaemon","dockerDaemons","initializingOrDeployingApps","getById","id","exAppApi.enableExApp","spawnDialog","DaemonSelectionDialog","forceEnableApp","exAppApi.forceEnableExApp","initialize","exAppApi.disableExApp","error","showError","fetchDockerDaemons","fetchAllApps","exAppApi.fetchApps","status","exAppApi.fetchAppStatus","e","updateAppsStatus","useAppsStore","exApps","appstoreApps","categories","bundles","readonly","isLoadingApps","isLoadingCategories","getCategoryById","categoryId","getAppById","getAppsByCategory","api.enableApp","api.disableApp","api.uninstallApp","limitAppToGroups","bundle","b","api.enableBundle","loadCategories","api.getCategories","loadApps","api.getApps","useUpdatesStore","internalUpdateCount","api.updateApp","useUserSettingsStore","defaultGridSize","isGridView","showIncompatible","gridSizePx","getQuery","gridMode","useRoute","useRouter","to","updateFromQuery","query","appstoreEnabled","updateStore","userSettings","categoriesLoading","route","router","searchElement","useTemplateRef","useHotKey","search","watch","newQuery","watchDebounced","newValue","oldValue","isSubscribed","level","NcAppNavigation","NcAppNavigationSearch","NcAppNavigationItem","NcCounterBubble","NcLoadingIcon","inlineActions","action","menuActions","NcActions","NcActionButton","NcActionLink","NcActionRouter","gpuSupport","mdiFileChart","_createElementVNode","M","T","N","l","_","E","n","s","d","r","i","m","Te","Oe","we","ye","B","Pe","j","oe","ae","Se","F","$e","U","Le","_e","H","K","ze","le","Me","W","se","Ee","Ie","Ae","Ce","ue","Be","I","Z","X","De","pe","qe","ve","He","ce","Ze","Ge","he","Ne","Qe","je","Fe","Ue","Ke","We","Xe","Je","Ve","v","Ye","ke","de","et","ie","J","tt","Q","nt","D","A","rt","ge","O","V","Y","o","u","a","$","ee","fe","me","xe","st","w","c","p","k","h","R","f","S","te","ne","re","be","Re","G","C","x","y","L","P","q","z","g","useMarkdown","text","options","renderer","marked","markedBlockquote","markedLink","markedImage","minHeading","getMarkedHeading","markdown","toValue","dompurify","href","title","url","out","depth","renderMarkdown","mdiTextShort","MarkdownPreview","isSupported","isFeatured","badgeIcon","badgeText","badgeTitle","isShown","score","appScore","fullStars","emptyStars","hasHalfStar","index","mdiStarHalfFull","mdiStarOutline","useGroupsStore","fetchGroupById","groupId","internalFetchGroupById","searchGroups","group","getGroupById","useLimitedGroups","groupsStore","groupsAppIsLimitedTo","promises","results","idLimitedToGroups","useId","lastModified","release","date","appAuthors","authorName","appstoreUrl","externalResources","resources","appCategories","cannotLimitToGroups","xmlNode","mdiTextBoxOutline","BadgeAppLevel","BadgeAppDaemon","BadgeAppScore","NcNoteCard","dep","_hoisted_3","_hoisted_5","NcDateTime","resource","_hoisted_7","releases","values","changelog","createChangelogFromRelease","getLanguage","mdiClockFast","actionDisable","actionEnable","actionForceEnable","mdiAlertCircleCheckOutline","actionInstall","actionInstallForced","actionsInteract","mdiBugOutline","mdiForumOutline","mdiWeb","LimitToGroupDialog","defineAsyncComponent","__vitePreload","LimitToGroupDialog$1","actionLimitToGroup","mdiAccountGroup","actionRemove","mdiTrashCanOutline","actionUpdate","mdiUpdate","actions","useActions","useAppIcon","appIcon","categoryIcon","path","name","icon","mdiCog","watchEffect","rawSvg","licenseText","activeTab","hideAppDetails","screenshotLoaded","hasScreenshot","loadScreenshot","image","onMounted","NcAppSidebar","AppDescriptionTab","AppReleasesTab","AppDetailsTab","AppDeployDaemonTab","AppActions","currentCategory","heading","pageTitle","showSidebar","NcContent","AppstoreNavigation","NcAppContent","_component_router_view","AppstoreSidebar","AppstoreDiscover","AppstoreManage","AppstoreBundles","AppstoreBrowse","AppstoreSearch","routes","createRouter","createWebHistory","pinia","createPinia","createApp","AppstoreApp","loading","availableGroups","onSearch","useDebounceFn","onSave","onReset","NcSelectUsers","isSvg","svgIcon","response","detailsRoute","detailsAction","mdiInformationOutline","rawActions","AppIcon","_hoisted_4","_hoisted_6","NcChip","tableElement","tableWidth","useElementSize","isNarrow","isWide","AppTableRow","appBundles","canEnableBundle","isBundleEnabled","enableAll","mdiDownloadMultiple","AppTable"],"ignoreList":[0,1,18],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSpacer-CIRC4ZEj.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebarTab-DOSDDbGA.mjs","../build/frontend/apps/appstore/src/constants.ts","../build/frontend/apps/appstore/src/service/api.ts","../build/frontend/apps/appstore/src/service/rebuild-navigation.ts","../build/frontend/apps/appstore/src/utils/appStatus.ts","../build/frontend/apps/appstore/src/utils/logger.ts","../build/frontend/apps/appstore/src/components/DaemonSelectionDialog/DaemonSelectionDialogListEntry.vue","../build/frontend/apps/appstore/src/components/DaemonSelectionDialog/DaemonSelectionDialogList.vue","../build/frontend/apps/appstore/src/components/DaemonSelectionDialog/DaemonSelectionDialog.vue","../build/frontend/apps/appstore/src/service/exAppApi.ts","../build/frontend/apps/appstore/src/store/exApps.ts","../build/frontend/apps/appstore/src/store/apps.ts","../build/frontend/apps/appstore/src/store/updates.ts","../build/frontend/apps/appstore/src/store/userSettings.ts","../build/frontend/apps/appstore/src/views/AppstoreNavigation.vue","../build/frontend/apps/appstore/src/components/AppActions.vue","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppDeployDaemonTab.vue","../node_modules/marked/lib/marked.esm.js","../build/frontend/apps/appstore/src/composables/useMarkdown.ts","../build/frontend/apps/appstore/src/components/MarkdownPreview.vue","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppDescriptionTab.vue","../build/frontend/apps/appstore/src/components/BadgeAppDaemon.vue","../build/frontend/apps/appstore/src/components/BadgeAppLevel.vue","../build/frontend/apps/appstore/src/components/BadgeAppScore.vue","../build/frontend/apps/appstore/src/store/groups.ts","../build/frontend/apps/appstore/src/composables/useLimitedGroups.ts","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppDetailsTab.vue","../build/frontend/apps/appstore/src/components/AppstoreSidebar/AppReleasesTab.vue","../build/frontend/apps/appstore/src/actions/actionDisable.ts","../build/frontend/apps/appstore/src/actions/actionEnable.ts","../build/frontend/apps/appstore/src/actions/actionForceEnable.ts","../build/frontend/apps/appstore/src/actions/actionInstall.ts","../build/frontend/apps/appstore/src/actions/actionInstallForced.ts","../build/frontend/apps/appstore/src/actions/actionInteract.ts","../build/frontend/apps/appstore/src/actions/actionLimitToGroup.ts","../build/frontend/apps/appstore/src/actions/actionRemove.ts","../build/frontend/apps/appstore/src/actions/actionUpdate.ts","../build/frontend/apps/appstore/src/actions/index.ts","../build/frontend/apps/appstore/src/composables/useActions.ts","../build/frontend/apps/appstore/src/composables/useAppIcon.ts","../build/frontend/apps/appstore/src/views/AppstoreSidebar.vue","../build/frontend/apps/appstore/src/AppstoreApp.vue","../build/frontend/apps/appstore/src/router/routes.ts","../build/frontend/apps/appstore/src/router/index.ts","../build/frontend/apps/appstore/src/main.ts","../build/frontend/apps/appstore/src/components/LimitToGroupDialog.vue","../build/frontend/apps/appstore/src/components/AppIcon.vue","../build/frontend/apps/appstore/src/components/AppTable/AppTableRow.vue","../build/frontend/apps/appstore/src/components/AppTable/AppTable.vue","../build/frontend/apps/appstore/src/views/AppstoreBundles.vue"],"sourcesContent":["import '../assets/NcAppNavigationSpacer-LST5uYYS.css';\nimport { defineComponent, openBlock, createElementBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"app-navigation-spacer\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSpacer\",\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"li\", _hoisted_1);\n };\n }\n});\nconst NcAppNavigationSpacer = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-277fa710\"]]);\nexport {\n NcAppNavigationSpacer as N\n};\n//# sourceMappingURL=NcAppNavigationSpacer-CIRC4ZEj.mjs.map\n","import '../assets/NcAppSidebarTab-Xd3HTDbw.css';\nimport { openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, renderSlot } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcAppSidebarTab\",\n inject: [\"registerTab\", \"unregisterTab\", \"getActiveTab\", \"isTablistShown\"],\n props: {\n /**\n * Unique id of the sidebar tab\n */\n id: {\n type: String,\n required: true\n },\n /**\n * Tab name in navigation\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Tab icon's html class in navigation. Used if #icon slot is not provided\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Tab order in navigation. If not provided, name is used.\n */\n order: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"bottomReached\",\n \"scroll\"\n ],\n expose: [\"id\", \"name\", \"icon\", \"order\", \"renderIcon\"],\n computed: {\n /**\n * Is the current tab an active tab, that should be shown?\n *\n * @return {boolean}\n */\n isActive() {\n return this.getActiveTab() === this.id;\n }\n },\n created() {\n this.registerTab(this);\n },\n beforeUnmount() {\n this.unregisterTab(this.id);\n },\n methods: {\n onScroll(event) {\n if (this.$el.scrollHeight - this.$el.scrollTop === this.$el.clientHeight) {\n this.$emit(\"bottomReached\", event);\n }\n this.$emit(\"scroll\", event);\n },\n /**\n * Render tab's icon slot if any\n *\n * @return {import('vue').VNode[]}\n */\n renderIcon() {\n return this.$slots.icon?.();\n }\n }\n};\nconst _hoisted_1 = [\"id\", \"aria-hidden\", \"aria-label\", \"aria-labelledby\", \"role\", \"tabindex\"];\nconst _hoisted_2 = { class: \"hidden-visually\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"section\", {\n id: `tab-${$props.id}`,\n \"aria-hidden\": !$options.isActive,\n \"aria-label\": $options.isTablistShown() ? void 0 : $props.name,\n \"aria-labelledby\": $options.isTablistShown() ? `tab-button-${$props.id}` : void 0,\n class: normalizeClass([\"app-sidebar__tab\", { \"app-sidebar__tab--active\": $options.isActive }]),\n role: $options.isTablistShown() ? \"tabpanel\" : void 0,\n tabindex: $options.isTablistShown() ? 0 : -1,\n onScroll: _cache[0] || (_cache[0] = (...args) => $options.onScroll && $options.onScroll(...args))\n }, [\n createElementVNode(\"h3\", _hoisted_2, toDisplayString($props.name), 1),\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 42, _hoisted_1);\n}\nconst NcAppSidebarTab = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-dba10798\"]]);\nexport {\n NcAppSidebarTab as N\n};\n//# sourceMappingURL=NcAppSidebarTab-DOSDDbGA.mjs.map\n","/**\n * SPDX-FileCopyrightText: Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tmdiAccountMultipleOutline,\n\tmdiAccountOutline,\n\tmdiArchiveOutline,\n\tmdiCheck,\n\tmdiClipboardFlowOutline,\n\tmdiClose,\n\tmdiCogOutline,\n\tmdiControllerClassicOutline,\n\tmdiCreationOutline,\n\tmdiDownload,\n\tmdiFileDocumentEdit,\n\tmdiFolder,\n\tmdiKeyOutline,\n\tmdiMagnify,\n\tmdiMonitorEye,\n\tmdiMultimedia,\n\tmdiOfficeBuildingOutline,\n\tmdiOpenInApp,\n\tmdiSecurity,\n\tmdiStar,\n\tmdiStarCircleOutline,\n\tmdiStarShootingOutline,\n\tmdiTools,\n\tmdiViewColumnOutline,\n} from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\n\n/**\n * The names of the special appstore sections\n */\nexport const APPSTORE_CATEGORY_NAMES = Object.freeze({\n\tdiscover: t('appstore', 'Discover'),\n\tinstalled: t('appstore', 'Your apps'),\n\tenabled: t('appstore', 'Active apps'),\n\tdisabled: t('appstore', 'Disabled apps'),\n\tupdates: t('appstore', 'Updates'),\n\tbundles: t('appstore', 'App bundles'),\n\tfeatured: t('appstore', 'Featured apps'),\n\tsupported: t('appstore', 'Supported apps'), // From subscription\n\tsearch: t('appstore', 'Search results'),\n})\n\n/**\n * SVG paths used for appstore category icons\n */\nexport const APPSTORE_CATEGORY_ICONS = Object.freeze({\n\t// system special categories\n\tdiscover: mdiStarCircleOutline,\n\tinstalled: mdiAccountOutline,\n\tenabled: mdiCheck,\n\tdisabled: mdiClose,\n\tbundles: mdiArchiveOutline,\n\tsupported: mdiStarShootingOutline,\n\tfeatured: mdiStar,\n\tupdates: mdiDownload,\n\n\t// generic category\n\tai: mdiCreationOutline,\n\tauth: mdiKeyOutline,\n\tcustomization: mdiCogOutline,\n\tdashboard: mdiViewColumnOutline,\n\tfiles: mdiFolder,\n\tgames: mdiControllerClassicOutline,\n\tintegration: mdiOpenInApp,\n\tmonitoring: mdiMonitorEye,\n\tmultimedia: mdiMultimedia,\n\toffice: mdiFileDocumentEdit,\n\torganization: mdiOfficeBuildingOutline,\n\tsearch: mdiMagnify,\n\tsecurity: mdiSecurity,\n\tsocial: mdiAccountMultipleOutline,\n\ttools: mdiTools,\n\tworkflow: mdiClipboardFlowOutline,\n})\n\n/**\n * Currently known types of app discover section elements\n */\nexport const APP_DISCOVER_KNOWN_TYPES = ['post', 'showcase', 'carousel'] as const\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\nimport type { IAppstoreApp, IAppstoreCategory } from '../apps.d.ts'\n\nimport axios from '@nextcloud/axios'\nimport { addPasswordConfirmationInterceptors, PwdConfirmationMode } from '@nextcloud/password-confirmation'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport PQueue from 'p-queue'\nimport { APPSTORE_CATEGORY_ICONS } from '../constants.ts'\n\naddPasswordConfirmationInterceptors(axios)\n\nconst BASE_URL = generateOcsUrl('apps/appstore/api/v1')\nconst Url = Object.freeze({\n\tapps: `${BASE_URL}/apps`,\n\tcategories: `${BASE_URL}/apps/categories`,\n\tenable: `${BASE_URL}/apps/enable`,\n\tdisable: `${BASE_URL}/apps/disable`,\n\tuninstall: `${BASE_URL}/apps/uninstall`,\n\tupdate: `${BASE_URL}/apps/update`,\n\tbundleEnable: `${BASE_URL}/bundles/enable`,\n})\n\nconst queue = new PQueue({ concurrency: 1 })\n\n/**\n * Enable an app by its app id\n *\n * @param appId - The app to enable\n * @param force - Whether to force enable the app\n * @param groups - The groups to enable the app for\n */\nexport async function enableApp(appId: string, force = false, groups?: string[]) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.enable, { appId, groups, force: force || undefined }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n\n/**\n * Disable app by its app id\n *\n * @param appId - The app to disable\n */\nexport async function disableApp(appId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.disable, { appId }, { confirmPassword: PwdConfirmationMode.Lax })\n\t})\n}\n\n/**\n * Update an app by its app id\n *\n * @param appId - The app id to update\n */\nexport async function updateApp(appId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.update, { appId }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n\n/**\n * Uninstall an app by its app id\n *\n * @param appId - The app to uninstall\n */\nexport async function uninstallApp(appId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.uninstall, { appId }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n\n/**\n * Get all apps from the appstore\n */\nexport async function getApps() {\n\tconst { data } = await axios.get<OCSResponse<IAppstoreApp[]>>(Url.apps)\n\treturn data.ocs.data\n}\n\n/**\n * Get app categories\n */\nexport async function getCategories() {\n\tconst { data } = await axios.get<OCSResponse<IAppstoreCategory[]>>(Url.categories)\n\tfor (const category of data.ocs.data) {\n\t\tcategory.icon = APPSTORE_CATEGORY_ICONS[category.id] ?? ''\n\t}\n\treturn data.ocs.data\n}\n\n/**\n * Enable an app bundle by its id\n *\n * @param bundleId - The id of the bundle to enable\n */\nexport async function enableBundle(bundleId: string) {\n\treturn queue.add(async () => {\n\t\tawait axios.post(Url.bundleEnable, { bundleId }, { confirmPassword: PwdConfirmationMode.Strict })\n\t})\n}\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { OCSResponse } from '@nextcloud/typings/ocs'\n\nimport axios from '@nextcloud/axios'\nimport { emit } from '@nextcloud/event-bus'\nimport { generateOcsUrl } from '@nextcloud/router'\n\n/**\n * Rebuilds the app navigation menu\n */\nexport async function rebuildNavigation() {\n\tconst { data } = await axios.get<OCSResponse>(generateOcsUrl('core/navigation/apps?format=json'))\n\tif (data.ocs.meta.statuscode !== 200) {\n\t\treturn\n\t}\n\n\temit('nextcloud:app-menu.refresh', { apps: data.ocs.data })\n\twindow.dispatchEvent(new Event('resize'))\n}\n","/*!\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\n/**\n * Check if an app can be installed.\n *\n * @param app - The app to check if installable\n */\nexport function canInstall(app: IAppstoreApp | IAppstoreExApp) {\n\tif (app.installed || app.internal) {\n\t\treturn false\n\t}\n\n\tif (app.missingDependencies === undefined || app.missingDependencies.length === 0) {\n\t\treturn true\n\t}\n\n\tif (!app.isCompatible && app.missingDependencies.length === 1) {\n\t\t// incompatible so can be installed but has to be force-enabled\n\t\treturn true\n\t}\n\n\treturn false\n}\n\n/**\n * Check if an app can be uninstalled.\n *\n * @param app - The app to check if uninstallable\n */\nexport function canUninstall(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.installed && app.removable && !app.active\n}\n\n/**\n * Check if app can be enabled.\n *\n * @param app - The app to check\n */\nexport function canEnable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !isInitializing(app) && !isDeploying(app) && canForceEnable(app) && app.isCompatible\n}\n\n/**\n * Check if an app can be force-enabled\n *\n * @param app - The app to check\n */\nexport function canForceEnable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !app.active && (app.installed || canInstall(app))\n}\n\n/**\n * Check if an app needs to be force-enabled\n *\n * @param app - The app to check\n */\nexport function needForceEnable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !app.active && !app.isCompatible\n}\n\n/**\n * Check if an app can be disabled.\n *\n * @param app - The app to check\n */\nexport function canDisable(app: IAppstoreApp | IAppstoreExApp) {\n\treturn !isInitializing(app) && !isDeploying(app) && app.active && !app.internal\n}\n\n/**\n * Check if an app can be updated.\n *\n * @param app - The app to check if update-able\n */\nexport function canUpdate(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.update !== undefined\n}\n\nconst restrictedTypes = ['filesystem', 'prelogin', 'authentication', 'logging', 'prevent_group_restriction']\n\n/**\n * Check if an app can be limited to groups\n *\n * @param app - The app to check if can be limited to groups\n */\nexport function canLimitToGroups(app: IAppstoreApp | IAppstoreExApp) {\n\tif (!app.active && !app.installed) {\n\t\treturn false\n\t}\n\n\tif (!app.active && needForceEnable(app)) {\n\t\treturn false\n\t}\n\n\tif (!app.types) {\n\t\treturn true\n\t}\n\n\treturn app.types.every((type) => !restrictedTypes.includes(type))\n}\n\n/**\n * Check if an app is currently being initialized.\n *\n * @param app - The app to check\n */\nfunction isInitializing(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.app_api\n\t\t&& (app.status.action === 'init' || app.status.action === 'healthcheck')\n}\n\n/**\n * Check if an app is currently being deployed.\n *\n * @param app - The app to check\n */\nfunction isDeploying(app: IAppstoreApp | IAppstoreExApp) {\n\treturn app.app_api\n\t\t&& app.status.action === 'deploy'\n}\n","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('appstore')\n\t.detectUser()\n\t.build()\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 type { IDeployDaemon } from '../../apps.d.ts'\n\nimport { t } from '@nextcloud/l10n'\nimport { computed } from 'vue'\nimport NcListItem from '@nextcloud/vue/components/NcListItem'\n\nconst props = defineProps<{\n\t/**\n\t * The daemon to use\n\t */\n\tdaemon: IDeployDaemon\n\t/**\n\t * Whether this daemon is the default one\n\t */\n\tisDefault: boolean\n}>()\n\nconst emit = defineEmits<{\n\tselected: []\n}>()\n\nconst itemTitle = computed(() => `${props.daemon.name} - ${props.daemon.display_name}`)\n</script>\n\n<template>\n\t<NcListItem\n\t\t:active=\"isDefault\"\n\t\t:counterNumber=\"daemon.exAppsCount\"\n\t\tcounterType=\"highlighted\"\n\t\t:details=\"isDefault ? t('appstore', 'Default') : ''\"\n\t\tforceDisplayActions\n\t\t:name=\"itemTitle\"\n\t\t@click.stop=\"emit('selected')\">\n\t\t<template #subname>\n\t\t\t{{ daemon.accepts_deploy_id }}\n\t\t</template>\n\t</NcListItem>\n</template>\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 type { IDeployDaemon } from '../../apps.d.ts'\n\nimport { t } from '@nextcloud/l10n'\nimport DaemonSelectionDialogListEntry from './DaemonSelectionDialogListEntry.vue'\nimport { useExAppsStore } from '../../store/exApps.ts'\n\ndefineEmits<{\n\tselected: [daemon: IDeployDaemon]\n}>()\n\nconst store = useExAppsStore()\n</script>\n\n<template>\n\t<ul\n\t\t:class=\"$style.DaemonSelectionDialogList\"\n\t\t:aria-label=\"t('appstore', 'Registered Deploy daemons list')\">\n\t\t<DaemonSelectionDialogListEntry\n\t\t\tv-for=\"daemon in store.dockerDaemons\"\n\t\t\t:key=\"daemon.id\"\n\t\t\t:daemon\n\t\t\t:isDefault=\"store.defaultDaemon?.name === daemon.name\"\n\t\t\t@selected=\"$emit('selected', daemon)\" />\n\t</ul>\n</template>\n\n<style module>\n.DaemonSelectionDialogList {\n\tmax-height: 350px;\n\toverflow-y: scroll;\n\tpadding: 2rem;\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 type { IAppstoreExApp, IDeployDaemon } from '../../apps.d.ts'\n\nimport { mdiFormatListBulleted } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcDialog from '@nextcloud/vue/components/NcDialog'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport DaemonSelectionDialogList from './DaemonSelectionDialogList.vue'\nimport { useExAppsStore } from '../../store/exApps.ts'\n\ndefineProps<{\n\t/**\n\t * The app to enable\n\t */\n\tapp: IAppstoreExApp\n}>()\n\ndefineEmits<{\n\tclose: [daemon?: IDeployDaemon]\n}>()\n\nconst store = useExAppsStore()\nconst appApiAdminPage = generateUrl('/settings/admin/app_api')\n</script>\n\n<template>\n\t<NcDialog\n\t\t:name=\"t('appstore', 'Choose Deploy Daemon for {appName}', { appName: app.name })\"\n\t\tsize=\"normal\"\n\t\t@update:open=\"$event || $emit('close')\">\n\t\t<NcEmptyContent\n\t\t\tv-if=\"store.dockerDaemons.length === 0\"\n\t\t\tclass=\"daemon-selection-list__empty-content\"\n\t\t\t:name=\"t('appstore', 'No Deploy daemons configured')\"\n\t\t\t:description=\"t('appstore', 'Register a custom one or setup from available templates')\">\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"mdiFormatListBulleted\" />\n\t\t\t</template>\n\t\t\t<template #action>\n\t\t\t\t<NcButton :href=\"appApiAdminPage\">\n\t\t\t\t\t{{ t('appstore', 'Manage Deploy daemons') }}\n\t\t\t\t</NcButton>\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\n\t\t<DaemonSelectionDialogList\n\t\t\tv-else\n\t\t\t:app=\"app\"\n\t\t\t@selected=\"$emit('close', $event)\" />\n\t</NcDialog>\n</template>\n","/*!\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { IAppstoreExApp, IDeployDaemon, IDeployOptions, IExAppStatus } from '../apps.d.ts'\n\nimport axios from '@nextcloud/axios'\nimport { confirmPassword } from '@nextcloud/password-confirmation'\nimport { generateUrl } from '@nextcloud/router'\n\n/**\n * Fetch all external (app_api) apps from the server.\n */\nexport async function fetchApps() {\n\tconst { data } = await axios.get(generateUrl('/apps/app_api/apps/list'))\n\treturn data.apps as IAppstoreExApp[]\n}\n\n/**\n * Get the status of an external app.\n *\n * @param appId - The app to fetch\n */\nexport async function fetchAppStatus(appId: string) {\n\tconst { data } = await axios.get<IExAppStatus>(generateUrl(`/apps/app_api/apps/status/${appId}`))\n\treturn data\n}\n\n/**\n * Enable an external app.\n *\n * @param app - The app to enable\n * @param daemon - The daemon to use for deployment\n * @param deployOptions - Additional options for deployment\n */\nexport async function enableExApp(app: IAppstoreExApp, daemon: IDeployDaemon, deployOptions?: IDeployOptions) {\n\tawait confirmPassword()\n\tawait axios.post(generateUrl(`/apps/app_api/apps/enable/${app.id}/${daemon.name}`), { deployOptions })\n}\n\n/**\n * Force enable an external app\n *\n * @param appId - The app to force-enable\n */\nexport async function forceEnableExApp(appId: string) {\n\tawait confirmPassword()\n\tawait axios.post(generateUrl('/apps/app_api/apps/force'), { appId })\n}\n\n/**\n * Disable an external app.\n *\n * @param appId - The app to disable\n */\nexport async function disableExApp(appId: string) {\n\tawait confirmPassword()\n\tawait axios.get(generateUrl(`apps/app_api/apps/disable/${appId}`))\n}\n\n/**\n * Remove an external app.\n *\n * @param appId - The app to uninstall\n * @param removeData - If all data should be removed\n */\nexport async function uninstallExApp(appId: string, removeData = false) {\n\tawait confirmPassword()\n\tawait axios.get(generateUrl(`/apps/app_api/apps/uninstall/${appId}?removeData=${removeData}`))\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreExApp, IDeployDaemon, IExAppStatus } from '../apps.d.ts'\n\nimport axios from '@nextcloud/axios'\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { generateUrl } from '@nextcloud/router'\nimport { spawnDialog } from '@nextcloud/vue'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport DaemonSelectionDialog from '../components/DaemonSelectionDialog/DaemonSelectionDialog.vue'\nimport * as exAppApi from '../service/exAppApi.ts'\nimport logger from '../utils/logger.ts'\n\nexport const useExAppsStore = defineStore('external-apps', () => {\n\t/**\n\t * Is the App API enabled\n\t */\n\tconst isEnabled = loadState('appstore', 'appApiEnabled', false)\n\n\t/**\n\t * All external apps available\n\t */\n\tconst apps = ref<IAppstoreExApp[]>([])\n\n\t/**\n\t * Number of external apps with available updates, used to show the update badge in the UI\n\t */\n\tconst updateCount = ref(loadState('appstore', 'appstoreExAppUpdateCount', 0))\n\n\t/**\n\t * The interval ID for the status updater\n\t */\n\tlet statusUpdater: number | null = null\n\n\t/**\n\t * Whether at least one of the configured daemons is accessible.\n\t */\n\tconst daemonAccessible = ref(loadState('appstore', 'defaultDaemonConfigAccessible', false))\n\n\t/**\n\t * The default daemon, used for apps that don't specify a daemon or have a daemon that is not accessible.\n\t */\n\tconst defaultDaemon = ref(loadState<IDeployDaemon | null>('appstore', 'defaultDaemonConfig', null))\n\n\t/**\n\t * The list of daemons that support docker-based deployment, used to show the daemon selection when enabling an app.\n\t */\n\tconst dockerDaemons = ref<IDeployDaemon[]>([])\n\n\tconst initializingOrDeployingApps = computed(() => apps.value\n\t\t.filter((app) => app?.status?.action\n\t\t\t&& app.status.type !== ''\n\t\t\t&& (app?.status?.action === 'deploy' || app.status.action === 'init' || app.status.action === 'healthcheck')))\n\n\t/**\n\t * Get an external app by its ID\n\t *\n\t * @param appId - The app ID\n\t */\n\tfunction getById(appId: string): IAppstoreExApp | null {\n\t\treturn apps.value.find(({ id }) => id === appId) ?? null\n\t}\n\n\t/**\n\t * Enable an exApp.\n\t *\n\t * @param appId - The app ID\n\t */\n\tasync function enableApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (dockerDaemons.value.length === 1 && app.needsDownload) {\n\t\t\t\texAppApi.enableExApp(app, dockerDaemons[0])\n\t\t\t\tapp.daemon = dockerDaemons[0]\n\t\t\t} else if (app.needsDownload) {\n\t\t\t\tconst daemon = await spawnDialog(DaemonSelectionDialog, { app })\n\t\t\t\tif (!daemon) {\n\t\t\t\t\tthrow new Error('No daemon selected')\n\t\t\t\t}\n\t\t\t\tawait exAppApi.enableExApp(app, daemon)\n\t\t\t\tapp.daemon = daemon\n\t\t\t} else {\n\t\t\t\tawait exAppApi.enableExApp(app, app.daemon!)\n\t\t\t}\n\n\t\t\tif (!app.installed) {\n\t\t\t\tapp.needsDownload = false\n\t\t\t\tapp.status = {\n\t\t\t\t\ttype: 'install',\n\t\t\t\t\taction: 'deploy',\n\t\t\t\t\tinit: 0,\n\t\t\t\t\tdeploy: 0,\n\t\t\t\t} as IExAppStatus\n\t\t\t}\n\t\t\tapp.removable = true\n\t\t\tdelete app.error\n\n\t\t\tawait fetchAppStatus(appId)\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Force enable an exApp by ignoring its dependencies.\n\t *\n\t * @param appId - The app to force-enable\n\t */\n\tasync function forceEnableApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait exAppApi.forceEnableExApp(appId)\n\t\t\tawait initialize(true)\n\t\t\tapp.active = false\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * @param appId - The app to disable\n\t */\n\tasync function disableApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait exAppApi.disableExApp(appId)\n\t\t\tapp.active = false\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Uninstall an app by its id\n\t *\n\t * @param appId - The app to uninstall\n\t */\n\tasync function uninstallApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait exAppApi.disableExApp(appId)\n\t\t\tapp.active = false\n\t\t\tapp.needsDownload = true\n\t\t\tapp.installed = false\n\t\t\tapp.daemon = null\n\t\t\tapp.status = {}\n\t\t\tif (app.update !== null) {\n\t\t\t\tupdateCount.value--\n\t\t\t}\n\t\t\tdelete app.update\n\t\t\tdelete app.error\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Update an external app\n\t *\n\t * @param appId - The app ID\n\t */\n\tasync function updateApp(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tawait axios.get(generateUrl(`/apps/app_api/apps/update/${appId}`))\n\t\t\tapp.version = app.update || app.version\n\t\t\tapp.status = {\n\t\t\t\ttype: 'update',\n\t\t\t\taction: 'deploy',\n\t\t\t\tinit: 0,\n\t\t\t\tdeploy: 0,\n\t\t\t} satisfies IExAppStatus\n\t\t\tdelete app.update\n\t\t\tdelete app.error\n\t\t\tupdateCount.value--\n\n\t\t\tawait fetchAppStatus(appId)\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to update ex app', { appId, error })\n\t\t\tshowError(t('appstore', 'Could not update the app. Please try again later.'))\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Initialize the store.\n\t * This only needs to be called when an app management operation is performed.\n\t *\n\t * @param force - If the initialization should be forced (to run again)\n\t */\n\tasync function initialize(force = false) {\n\t\tif (force || (!defaultDaemon.value || !dockerDaemons.value.length)) {\n\t\t\tawait fetchDockerDaemons()\n\t\t}\n\t\tif (force || apps.value.length === 0) {\n\t\t\tawait fetchAllApps()\n\t\t}\n\t}\n\n\treturn {\n\t\tisEnabled,\n\n\t\tapps,\n\t\tupdateCount,\n\t\tdefaultDaemon,\n\t\tdockerDaemons,\n\t\tdaemonAccessible,\n\n\t\tgetById,\n\t\tdisableApp,\n\t\tenableApp,\n\t\tforceEnableApp,\n\t\tupdateApp,\n\t\tuninstallApp,\n\t\tinitialize,\n\t}\n\n\t/**\n\t * Fetch the configured docker daemons from the backend.\n\t */\n\tasync function fetchDockerDaemons() {\n\t\ttry {\n\t\t\tconst { data } = await axios.get(generateUrl('/apps/app_api/daemons'))\n\t\t\tdefaultDaemon.value = data.daemons.find((daemon: IDeployDaemon) => daemon.name === data.default_daemon_config)\n\t\t\tdockerDaemons.value = data.daemons.filter((daemon: IDeployDaemon) => daemon.accepts_deploy_id === 'docker-install')\n\t\t} catch (error) {\n\t\t\tlogger.error('[app-api-store] Failed to fetch Docker daemons', { error })\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t}\n\n\t/**\n\t * Fetch the list of external apps from the backend.\n\t */\n\tasync function fetchAllApps() {\n\t\ttry {\n\t\t\tapps.value = await exAppApi.fetchApps()\n\t\t} catch (error) {\n\t\t\tlogger.error('An error occurred while fetching apps', { error })\n\t\t\tshowError(t('appstore', 'An error occurred during the request. Unable to proceed.'))\n\t\t}\n\t}\n\n\t/**\n\t * Get the status of an external app.\n\t *\n\t * @param appId - The app ID to fetch the status for\n\t */\n\tasync function fetchAppStatus(appId: string) {\n\t\tconst app = getById(appId)\n\t\tif (!app) {\n\t\t\tlogger.error('[app-api-store] app not found while fetching status', { appId })\n\t\t\treturn\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tconst status = await exAppApi.fetchAppStatus(appId)\n\t\t\tapp.status = status\n\t\t\tlogger.debug('[app-api-store] initializingOrDeployingApps after setAppStatus', { initializingOrDeployingApps })\n\t\t\tif (initializingOrDeployingApps.value.length === 0) {\n\t\t\t\tlogger.debug('[app-api-store] Clearing interval')\n\t\t\t\tclearInterval(statusUpdater as number)\n\t\t\t\tstatusUpdater = null\n\t\t\t}\n\t\t\tif (app.status.error && initializingOrDeployingApps.value.length === 1) {\n\t\t\t\tclearInterval(statusUpdater as number)\n\t\t\t\tstatusUpdater = null\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tupdateAppsStatus()\n\t\t\tthrow e\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Update the status of all apps that are currently initializing or deploying\n\t */\n\tfunction updateAppsStatus() {\n\t\tclearInterval(statusUpdater as number)\n\t\tif (initializingOrDeployingApps.value.length === 0) {\n\t\t\treturn\n\t\t}\n\n\t\tstatusUpdater = window.setInterval(() => {\n\t\t\tlogger.debug('[app-api-store] initializingOrDeployingApps', { initializingOrDeployingApps })\n\t\t\tfor (const app of initializingOrDeployingApps.value) {\n\t\t\t\tfetchAppStatus(app.id)\n\t\t\t}\n\t\t}, 2000)\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppBundle, IAppstoreApp, IAppstoreCategory, IAppstoreExApp } from '../apps.d.ts'\n\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { defineStore } from 'pinia'\nimport { computed, readonly, ref } from 'vue'\nimport * as api from '../service/api.ts'\nimport { rebuildNavigation } from '../service/rebuild-navigation.ts'\nimport { canDisable, canInstall, canLimitToGroups, canUninstall, needForceEnable } from '../utils/appStatus.ts'\nimport logger from '../utils/logger.ts'\nimport { useExAppsStore } from './exApps.ts'\n\nexport const useAppsStore = defineStore('apps', () => {\n\tconst exApps = useExAppsStore()\n\n\t/**\n\t * All apps available in the appstore\n\t */\n\tconst appstoreApps = ref<IAppstoreApp[]>([])\n\t/**\n\t * All app categories available in the appstore\n\t */\n\tconst categories = ref<IAppstoreCategory[]>([])\n\t/**\n\t * All app bundles available in the appstore\n\t */\n\tconst bundles = readonly(loadState<IAppBundle[]>('appstore', 'appstoreBundles'))\n\n\t/**\n\t * Loading state of the store\n\t */\n\tconst isLoadingApps = ref(false)\n\tconst isLoadingCategories = ref(false)\n\n\t/**\n\t * All apps available\n\t */\n\tconst apps = computed(() => [...appstoreApps.value, ...(exApps.isEnabled ? exApps.apps : [])])\n\n\t/**\n\t * Get a category by its id\n\t *\n\t * @param categoryId - The id of the category\n\t */\n\tfunction getCategoryById(categoryId: string) {\n\t\treturn categories.value.find(({ id }) => id === categoryId) ?? null\n\t}\n\n\t/**\n\t * Get an app by its id\n\t *\n\t * @param appId - The id of the app\n\t */\n\tfunction getAppById(appId: string): IAppstoreApp | IAppstoreExApp | null {\n\t\treturn apps.value.find(({ id }) => id === appId) ?? null\n\t}\n\n\t/**\n\t * Get all apps of a category\n\t *\n\t * @param categoryId - The id of the category\n\t */\n\tfunction getAppsByCategory(categoryId: string): (IAppstoreApp | IAppstoreExApp)[] {\n\t\treturn apps.value.filter((app) => [app.category].flat().includes(categoryId))\n\t}\n\n\t/**\n\t * Enable an app by its id\n\t *\n\t * @param appId - The app to enable\n\t * @param force - Whether to force enable the app\n\t */\n\tasync function enableApp(appId: string, force = false) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (app.active || (!app.installed && !canInstall(app))) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be enabled`)\n\t\t}\n\n\t\tif (!force && needForceEnable(app)) {\n\t\t\tthrow new Error(`App with id ${appId} requires force enable`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (app.app_api) {\n\t\t\t\tawait exApps.enableApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.enableApp(appId, force)\n\t\t\t}\n\t\t\tif (force) {\n\t\t\t\tapp.isCompatible = true\n\t\t\t}\n\t\t\tapp.active = true\n\t\t\tapp.installed = true\n\t\t\tapp.removable = true\n\t\t\tawait rebuildNavigation()\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Disable an app by its id\n\t *\n\t * @param appId - The app to disable\n\t */\n\tasync function disableApp(appId: string) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (!canDisable(app)) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be disabled`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (app.app_api) {\n\t\t\t\tawait exApps.disableApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.disableApp(appId)\n\t\t\t}\n\t\t\tapp.active = false\n\t\t\t// revert \"force enable\"\n\t\t\tapp.isCompatible = app.missingDependencies === undefined || app.missingDependencies.length === 0\n\t\t\tawait rebuildNavigation()\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Uninstall an app by its id\n\t *\n\t * @param appId - The app to uninstall\n\t */\n\tasync function uninstallApp(appId: string) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (!canUninstall(app)) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be uninstalled`)\n\t\t}\n\n\t\tapp.loading = true\n\t\ttry {\n\t\t\tif (app.app_api) {\n\t\t\t\tawait exApps.uninstallApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.uninstallApp(appId)\n\t\t\t}\n\t\t\tapp.active = false\n\t\t\tapp.installed = false\n\t\t\tawait rebuildNavigation()\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Limit access to an app to specific groups\n\t *\n\t * @param appId - The app to limit access to\n\t * @param groups - The groups which should have access\n\t */\n\tasync function limitAppToGroups(appId: string, groups: string[]) {\n\t\tconst app = getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\tif (!canLimitToGroups(app)) {\n\t\t\tthrow new Error(`App with id ${appId} cannot be limited to groups`)\n\t\t}\n\n\t\tif (app.app_api) {\n\t\t\treturn\n\t\t}\n\n\t\ttry {\n\t\t\tapp.loading = true\n\t\t\tawait api.enableApp(appId, false, groups)\n\t\t\tapp.groups = groups\n\t\t} finally {\n\t\t\tapp.loading = false\n\t\t}\n\t}\n\n\t/**\n\t * Enable a whole bundle of apps by its id\n\t *\n\t * @param bundleId - The id of the bundle to enable\n\t */\n\tasync function enableBundle(bundleId: string) {\n\t\tconst bundle = bundles.find((b) => b.id === bundleId)\n\t\tif (!bundle) {\n\t\t\tthrow new Error(`Bundle with id ${bundleId} not found`)\n\t\t}\n\n\t\ttry {\n\t\t\tfor (const appId of bundle.appIdentifiers) {\n\t\t\t\tconst app = getAppById(appId)!\n\t\t\t\tapp.loading = true\n\t\t\t}\n\t\t\tawait api.enableBundle(bundle.id)\n\t\t\tfor (const appId of bundle.appIdentifiers) {\n\t\t\t\tconst app = getAppById(appId)!\n\t\t\t\tapp.active = true\n\t\t\t\tapp.installed = true\n\t\t\t\tapp.removable = true\n\t\t\t\tawait rebuildNavigation()\n\t\t\t}\n\t\t} finally {\n\t\t\tfor (const appId of bundle.appIdentifiers) {\n\t\t\t\tconst app = getAppById(appId)!\n\t\t\t\tapp.loading = false\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Load the app categories from the backend\n\t */\n\tasync function loadCategories() {\n\t\ttry {\n\t\t\tisLoadingCategories.value = true\n\t\t\tcategories.value = await api.getCategories()\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to load app categories', { error })\n\t\t\tshowError(t('appstore', 'Could not load app categories. Please try again later.'))\n\t\t} finally {\n\t\t\tisLoadingCategories.value = false\n\t\t}\n\t}\n\n\t/**\n\t * Load the apps from the backend\n\t */\n\tasync function loadApps() {\n\t\ttry {\n\t\t\tisLoadingApps.value = true\n\t\t\tappstoreApps.value = await api.getApps()\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to load apps list', { error })\n\t\t\tshowError(t('appstore', 'Could not load apps list. Please try again later.'))\n\t\t} finally {\n\t\t\tisLoadingApps.value = false\n\t\t}\n\t}\n\n\t// initialize store\n\tloadApps()\n\tloadCategories()\n\n\treturn {\n\t\tapps,\n\t\tbundles,\n\t\tcategories,\n\t\tisLoadingApps,\n\t\tisLoadingCategories,\n\n\t\tdisableApp,\n\t\tenableApp,\n\t\tuninstallApp,\n\t\tenableBundle,\n\n\t\tgetAppById,\n\t\tgetAppsByCategory,\n\t\tgetCategoryById,\n\t\tlimitAppToGroups,\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport * as api from '../service/api.ts'\nimport { rebuildNavigation } from '../service/rebuild-navigation.ts'\nimport logger from '../utils/logger.ts'\nimport { useAppsStore } from './apps.ts'\nimport { useExAppsStore } from './exApps.ts'\n\nexport const useUpdatesStore = defineStore('updates', () => {\n\tconst exApps = useExAppsStore()\n\n\t/**\n\t * Number of apps with available updates\n\t */\n\tconst internalUpdateCount = ref(loadState<number>('appstore', 'appstoreUpdateCount', 0))\n\n\t/**\n\t * Total number of apps with available updates\n\t */\n\tconst updateCount = computed(() => internalUpdateCount.value + exApps.updateCount)\n\n\t/**\n\t * Update the given app\n\t *\n\t * @param appId - The app id to update\n\t * @throws {Error} if the app is not found\n\t */\n\tasync function updateApp(appId: string) {\n\t\tconst store = useAppsStore()\n\n\t\tconst app = store.getAppById(appId)\n\t\tif (!app) {\n\t\t\tthrow new Error(`App with id ${appId} not found`)\n\t\t}\n\n\t\ttry {\n\t\t\tif ('app_api' in app && app.app_api) {\n\t\t\t\tawait exApps.updateApp(appId)\n\t\t\t} else {\n\t\t\t\tawait api.updateApp(appId)\n\t\t\t\tinternalUpdateCount.value = Math.max(internalUpdateCount.value - 1, 0)\n\t\t\t}\n\n\t\t\tapp.update = undefined\n\t\t\trebuildNavigation()\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to update app', { appId, error })\n\t\t\tshowError(t('appstore', 'Could not update the app. Please try again later.'))\n\t\t}\n\t}\n\n\treturn {\n\t\tupdateCount,\n\t\tupdateApp,\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { LocationQuery } from 'vue-router'\n\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\nexport const useUserSettingsStore = defineStore('userSettings', () => {\n\tconst defaultGridSize = ref('')\n\n\tconst isGridView = ref(false)\n\tconst showIncompatible = ref(true)\n\n\tconst gridSizePx = computed(() => {\n\t\tif (defaultGridSize.value === 'm') {\n\t\t\treturn '468px'\n\t\t} else if (defaultGridSize.value === 'l') {\n\t\t\treturn '512px'\n\t\t}\n\t\treturn '320px'\n\t})\n\n\t/**\n\t * Get the query parameters for the current settings\n\t *\n\t * @param gridMode Optional override for the grid mode, if not provided it will use the current setting\n\t */\n\tfunction getQuery(gridMode?: boolean) {\n\t\tconst route = useRoute() ?? {}\n\t\treturn {\n\t\t\t...route.query,\n\t\t\tgrid: (gridMode ?? isGridView.value) ? (defaultGridSize.value || null) : undefined,\n\t\t\tcompatible: showIncompatible.value ? undefined : null,\n\t\t}\n\t}\n\n\tconst router = useRouter()\n\trouter.afterEach((to) => {\n\t\tupdateFromQuery(to.query)\n\t})\n\n\treturn {\n\t\tdefaultGridSize,\n\t\tgridSizePx,\n\n\t\tisGridView,\n\t\tshowIncompatible,\n\n\t\tgetQuery,\n\t}\n\n\t/**\n\t * Initializes the store with the current query parameters\n\t *\n\t * @param query The query parameters to initialize the store with\n\t */\n\tfunction updateFromQuery(query: LocationQuery) {\n\t\tisGridView.value = 'grid' in query\n\t\tdefaultGridSize.value = [query.grid ?? ''].flat()[0]!.toLowerCase()\n\t\tshowIncompatible.value = !('compatible' in query)\n\t}\n})\n","<!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport { emit } from '@nextcloud/event-bus'\nimport { loadState } from '@nextcloud/initial-state'\nimport { t } from '@nextcloud/l10n'\nimport { useHotKey } from '@nextcloud/vue'\nimport { watchDebounced } from '@vueuse/core'\nimport { computed, ref, useTemplateRef, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport NcAppNavigation from '@nextcloud/vue/components/NcAppNavigation'\nimport NcAppNavigationItem from '@nextcloud/vue/components/NcAppNavigationItem'\nimport NcAppNavigationSearch from '@nextcloud/vue/components/NcAppNavigationSearch'\nimport NcAppNavigationSpacer from '@nextcloud/vue/components/NcAppNavigationSpacer'\nimport NcCounterBubble from '@nextcloud/vue/components/NcCounterBubble'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport { APPSTORE_CATEGORY_ICONS, APPSTORE_CATEGORY_NAMES } from '../constants.ts'\nimport { useAppsStore } from '../store/apps.ts'\nimport { useUpdatesStore } from '../store/updates.ts'\nimport { useUserSettingsStore } from '../store/userSettings.ts'\n\nconst appstoreEnabled = loadState<boolean>('settings', 'appstoreEnabled', true)\n\nconst store = useAppsStore()\nconst updateStore = useUpdatesStore()\nconst userSettings = useUserSettingsStore()\nconst categories = computed(() => store.categories)\nconst categoriesLoading = computed(() => store.isLoadingCategories)\n\nconst route = useRoute()\nconst router = useRouter()\n\nconst searchElement = useTemplateRef('search')\n\nuseHotKey('f', () => {\n\tif (!searchElement.value?.$refs.inputElement) {\n\t\temit('toggle-navigation', {\n\t\t\topen: true,\n\t\t})\n\t\t// open animation\n\t\twindow.setTimeout(() => searchElement.value?.$refs.inputElement?.focus(), 400)\n\t}\n\tsearchElement.value?.$refs.inputElement?.focus()\n}, { ctrl: true, stop: true, prevent: true })\n\nconst search = ref('')\n// initialize the search value from the query parameter on mount\nwatch(() => route.query.q, (newQuery) => {\n\tsearch.value = [newQuery || ''].flat()[0]!\n}, { immediate: true })\n// update the query parameter when the search value changes, debounced to avoid excessive updates\nwatchDebounced(search, (newValue, oldValue) => {\n\tif (newValue.trim() === oldValue.trim()) {\n\t\treturn\n\t}\n\n\tif (router.currentRoute.value.name === 'apps-discover' || (router.currentRoute.value.name === 'apps-manage' && route.params.category === 'bundles')) {\n\t\trouter.push({\n\t\t\tname: 'apps-search',\n\t\t\tquery: {\n\t\t\t\t...route.query,\n\t\t\t\tq: newValue.trim() || undefined,\n\t\t\t},\n\t\t})\n\t\treturn\n\t}\n\n\trouter.replace({\n\t\t...route,\n\t\tquery: {\n\t\t\t...route.query,\n\t\t\tq: newValue.trim() || undefined,\n\t\t},\n\t})\n}, { debounce: 500 })\n\n/**\n * Check if the current instance has a support subscription from the Nextcloud GmbH\n *\n * For customers of the Nextcloud GmbH the app level will be set to `300` for apps that are supported in their subscription\n */\nconst isSubscribed = computed(() => store.apps.find(({ level }) => level === 300) !== undefined)\n</script>\n\n<template>\n\t<!-- Categories & filters -->\n\t<NcAppNavigation :aria-label=\"t('appstore', 'Appstore categories')\">\n\t\t<template #search>\n\t\t\t<NcAppNavigationSearch\n\t\t\t\tref=\"search\"\n\t\t\t\tv-model=\"search\"\n\t\t\t\t:label=\"t('appstore', 'Search apps…')\" />\n\t\t</template>\n\t\t<template #list>\n\t\t\t<NcAppNavigationItem\n\t\t\t\tv-if=\"appstoreEnabled\"\n\t\t\t\t:to=\"{ name: 'apps-discover' }\"\n\t\t\t\t:name=\"APPSTORE_CATEGORY_NAMES.discover\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcIconSvgWrapper :path=\"APPSTORE_CATEGORY_ICONS.discover\" />\n\t\t\t\t</template>\n\t\t\t</NcAppNavigationItem>\n\t\t\t<NcAppNavigationItem\n\t\t\t\t:to=\"{ name: 'apps-manage', params: { category: 'installed' } }\"\n\t\t\t\t:name=\"APPSTORE_CATEGORY_NAMES.installed\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcIconSvgWrapper :path=\"APPSTORE_CATEGORY_ICONS.installed\" />\n\t\t\t\t</template>\n\t\t\t</NcAppNavigationItem>\n\t\t\t<NcAppNavigationItem\n\t\t\t\t:to=\"{ name: 'apps-manage', params: { category: 'enabled' } }\"\n\t\t\t\t:name=\"APPSTORE_CATEGORY_NAMES.enabled\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcIconSvgWrapper :path=\"APPSTORE_CATEGORY_ICONS.enabled\" />\n\t\t\t\t</template>\n\t\t\t</NcAppNavigationItem>\n\t\t\t<NcAppNavigationItem\n\t\t\t\t:to=\"{ name: 'apps-manage', params: { category: 'disabled' } }\"\n\t\t\t\t:name=\"APPSTORE_CATEGORY_NAMES.disabled\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcIconSvgWrapper :path=\"APPSTORE_CATEGORY_ICONS.disabled\" />\n\t\t\t\t</template>\n\t\t\t</NcAppNavigationItem>\n\t\t\t<NcAppNavigationItem\n\t\t\t\tv-if=\"updateStore.updateCount > 0\"\n\t\t\t\t:to=\"{ name: 'apps-manage', params: { category: 'updates' } }\"\n\t\t\t\t:name=\"APPSTORE_CATEGORY_NAMES.updates\">\n\t\t\t\t<template #counter>\n\t\t\t\t\t<NcCounterBubble :count=\"updateStore.updateCount\" />\n\t\t\t\t</template>\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcIconSvgWrapper :path=\"APPSTORE_CATEGORY_ICONS.updates\" />\n\t\t\t\t</template>\n\t\t\t</NcAppNavigationItem>\n\t\t\t<NcAppNavigationItem\n\t\t\t\t:to=\"{ name: 'apps-bundles' }\"\n\t\t\t\t:name=\"APPSTORE_CATEGORY_NAMES.bundles\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcIconSvgWrapper :path=\"APPSTORE_CATEGORY_ICONS.bundles\" />\n\t\t\t\t</template>\n\t\t\t</NcAppNavigationItem>\n\n\t\t\t<NcAppNavigationSpacer />\n\n\t\t\t<!-- App store categories -->\n\t\t\t<li v-if=\"appstoreEnabled && categoriesLoading\" :class=\"$style.appstoreNavigation__categories_loading\">\n\t\t\t\t<NcLoadingIcon :size=\"20\" :name=\"t('appstore', 'Loading categories')\" />\n\t\t\t</li>\n\n\t\t\t<template v-else-if=\"appstoreEnabled && !categoriesLoading\">\n\t\t\t\t<NcAppNavigationItem\n\t\t\t\t\tv-if=\"isSubscribed\"\n\t\t\t\t\tid=\"app-category-supported\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'supported' }, query: userSettings.getQuery(true) }\"\n\t\t\t\t\t:name=\"APPSTORE_CATEGORY_NAMES.supported\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"APPSTORE_CATEGORY_ICONS.supported\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcAppNavigationItem>\n\t\t\t\t<NcAppNavigationItem\n\t\t\t\t\tid=\"app-category-featured\"\n\t\t\t\t\t:to=\"{ name: 'apps-category', params: { category: 'featured' }, query: userSettings.getQuery(true) }\"\n\t\t\t\t\t:name=\"APPSTORE_CATEGORY_NAMES.featured\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"APPSTORE_CATEGORY_ICONS.featured\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcAppNavigationItem>\n\n\t\t\t\t<NcAppNavigationItem\n\t\t\t\t\tv-for=\"category in categories\"\n\t\t\t\t\t:id=\"`app-category-${category.id}`\"\n\t\t\t\t\t:key=\"category.id\"\n\t\t\t\t\t:name=\"category.displayName\"\n\t\t\t\t\t:to=\"{\n\t\t\t\t\t\tname: 'apps-category',\n\t\t\t\t\t\tparams: { category: category.id },\n\t\t\t\t\t\tquery: userSettings.getQuery(true),\n\t\t\t\t\t}\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"category.icon\" />\n\t\t\t\t\t</template>\n\t\t\t\t</NcAppNavigationItem>\n\t\t\t</template>\n\t\t</template>\n\t</NcAppNavigation>\n</template>\n\n<style module>\n.appstoreNavigation__categories_loading {\n\tflex: 1;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\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 { AppAction } from '../actions/index.ts'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { computed } from 'vue'\nimport NcActionButton from '@nextcloud/vue/components/NcActionButton'\nimport NcActionLink from '@nextcloud/vue/components/NcActionLink'\nimport NcActionRouter from '@nextcloud/vue/components/NcActionRouter'\nimport NcActions from '@nextcloud/vue/components/NcActions'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\n\nconst { actions, maxInlineActions = 1 } = defineProps<{\n\tapp: IAppstoreApp | IAppstoreExApp\n\tactions: AppAction[]\n\tmaxInlineActions?: number\n\ticonOnly?: boolean\n}>()\n\nconst inlineActions = computed(() => {\n\tif (actions.length <= maxInlineActions) {\n\t\treturn actions\n\t}\n\treturn actions\n\t\t.filter((action) => action.inline !== false)\n\t\t.slice(0, maxInlineActions)\n})\n\nconst menuActions = computed(() => actions\n\t.filter((action) => !inlineActions.value.includes(action)))\n</script>\n\n<template>\n\t<div :class=\"$style.appActions\">\n\t\t<NcButton\n\t\t\tv-for=\"action in inlineActions\"\n\t\t\t:key=\"action.id\"\n\t\t\t:ariaLabel=\"iconOnly ? action.label(app) : undefined\"\n\t\t\t:title=\"iconOnly ? action.label(app) : undefined\"\n\t\t\t:variant=\"action.variant\"\n\t\t\t:href=\"'href' in action ? action.href(app) : undefined\"\n\t\t\t:to=\"'to' in action ? action.to(app) : undefined\"\n\t\t\t:target=\"'href' in action ? '_blank' : undefined\"\n\t\t\t@click=\"'callback' in action && action.callback(app)\">\n\t\t\t<template #icon>\n\t\t\t\t<NcIconSvgWrapper :path=\"action.icon\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"!iconOnly\" #default>\n\t\t\t\t{{ action.label(app) }}\n\t\t\t</template>\n\t\t</NcButton>\n\t\t<NcActions forceMenu>\n\t\t\t<template v-for=\"action in menuActions\">\n\t\t\t\t<NcActionButton\n\t\t\t\t\tv-if=\"'callback' in action\"\n\t\t\t\t\t:key=\"'callback-' + action.id\"\n\t\t\t\t\tcloseAfterClick\n\t\t\t\t\t:variant=\"action.variant\"\n\t\t\t\t\t@click=\"action.callback(app)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"action.icon\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ action.label(app) }}\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionLink\n\t\t\t\t\tv-else-if=\"'href' in action\"\n\t\t\t\t\t:key=\"'link-' + action.id\"\n\t\t\t\t\tcloseAfterClick\n\t\t\t\t\t:variant=\"action.variant\"\n\t\t\t\t\t:href=\"action.href(app)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"action.icon\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ action.label(app) }}\n\t\t\t\t</NcActionLink>\n\t\t\t\t<NcActionRouter\n\t\t\t\t\tv-else\n\t\t\t\t\t:key=\"'route-' + action.id\"\n\t\t\t\t\tcloseAfterClick\n\t\t\t\t\t:variant=\"action.variant\"\n\t\t\t\t\t:to=\"action.to(app)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"action.icon\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ action.label(app) }}\n\t\t\t\t</NcActionRouter>\n\t\t\t</template>\n\t\t</NcActions>\n\t</div>\n</template>\n\n<style module>\n.appActions {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: calc(2 * var(--default-grid-baseline));\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { IAppstoreExApp } from '../../apps.d.ts'\n\nimport { mdiFileChart } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { ref } from 'vue'\nimport NcAppSidebarTab from '@nextcloud/vue/components/NcAppSidebarTab'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\n\nconst props = defineProps<{\n\tapp: IAppstoreExApp\n}>()\n\nconst gpuSupport = ref(props.app?.daemon?.deploy_config?.computeDevice?.id !== 'cpu' || false)\n</script>\n\n<template>\n\t<NcAppSidebarTab\n\t\tv-if=\"app?.daemon\"\n\t\tid=\"daemon\"\n\t\t:name=\"t('appstore', 'Daemon')\"\n\t\t:order=\"5\">\n\t\t<template #icon>\n\t\t\t<NcIconSvgWrapper :path=\"mdiFileChart\" :size=\"24\" />\n\t\t</template>\n\t\t<div :class=\"$style.appDeployDaemonTab\">\n\t\t\t<h4>{{ t('appstore', 'Deploy Daemon') }}</h4>\n\t\t\t<p><b>{{ t('appstore', 'Type') }}</b>: {{ app?.daemon.accepts_deploy_id }}</p>\n\t\t\t<p><b>{{ t('appstore', 'Name') }}</b>: {{ app?.daemon.name }}</p>\n\t\t\t<p><b>{{ t('appstore', 'Display Name') }}</b>: {{ app?.daemon.display_name }}</p>\n\t\t\t<p><b>{{ t('appstore', 'GPUs support') }}</b>: {{ gpuSupport }}</p>\n\t\t\t<p><b>{{ t('appstore', 'Compute device') }}</b>: {{ app?.daemon?.deploy_config?.computeDevice?.label }}</p>\n\t\t</div>\n\t</NcAppSidebarTab>\n</template>\n\n<style module>\n.appDeployDaemonTab {\n\tpadding: 20px;\n\n\th4 {\n\t\tfont-weight: bold;\n\t\tmargin: 10px auto;\n\t}\n}\n</style>\n","/**\n * marked v18.0.5 - a markdown parser\n * Copyright (c) 2018-2026, MarkedJS. (MIT License)\n * Copyright (c) 2011-2018, Christopher Jeffrey. (MIT License)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction M(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var T=M();function N(l){T=l}var _={exec:()=>null};function E(l){let e=[];return t=>{let n=Math.max(0,Math.min(3,t-1)),s=e[n];return s||(s=l(n),e[n]=s),s}}function d(l,e=\"\"){let t=typeof l==\"string\"?l:l.source,n={replace:(s,r)=>{let i=typeof r==\"string\"?r:r.source;return i=i.replace(m.caret,\"$1\"),t=t.replace(s,i),n},getRegex:()=>new RegExp(t,e)};return n}var Te=((l=\"\")=>{try{return!!new RegExp(\"(?<=1)(?<!1)\"+l)}catch{return!1}})(),m={codeRemoveIndent:/^(?: {1,4}| {0,3}\\t)/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] +\\S/,listReplaceTask:/^\\[[ xX]\\] +/,listTaskCheckbox:/\\[[ xX]\\]/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:E(l=>new RegExp(`^ {0,${l}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`)),hrRegex:E(l=>new RegExp(`^ {0,${l}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`)),fencesBeginRegex:E(l=>new RegExp(`^ {0,${l}}(?:\\`\\`\\`|~~~)`)),headingBeginRegex:E(l=>new RegExp(`^ {0,${l}}#`)),htmlBeginRegex:E(l=>new RegExp(`^ {0,${l}}<(?:[a-z].*>|!--)`,\"i\")),blockquoteBeginRegex:E(l=>new RegExp(`^ {0,${l}}>`))},Oe=/^(?:[ \\t]*(?:\\n|$))+/,we=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,ye=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,B=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Pe=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,j=/ {0,3}(?:[*+-]|\\d{1,9}[.)])/,oe=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,ae=d(oe).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Se=d(oe).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),F=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,$e=/^[^\\n]+/,U=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,Le=d(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",U).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),_e=d(/^(bull)([ \\t][^\\n]*?)?(?:\\n|$)/).replace(/bull/g,j).getRegex(),H=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",K=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,ze=d(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",K).replace(\"tag\",H).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),le=d(F).replace(\"hr\",B).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]+[^ \\\\t\\\\n]\").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",H).getRegex(),Me=d(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",le).getRegex(),W={blockquote:Me,code:we,def:Le,fences:ye,heading:Pe,hr:B,html:ze,lheading:ae,list:_e,newline:Oe,paragraph:le,table:_,text:$e},se=d(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",B).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]\").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",H).getRegex(),Ee={...W,lheading:Se,table:se,paragraph:d(F).replace(\"hr\",B).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",se).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)])[ \\\\t]+[^ \\\\t\\\\n]\").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",H).getRegex()},Ie={...W,html:d(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",K).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:_,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:d(F).replace(\"hr\",B).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",ae).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Ae=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ce=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,ue=/^( {2,}|\\\\)\\n(?!\\s*$)/,Be=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,I=/[\\p{P}\\p{S}]/u,Z=/[\\s\\p{P}\\p{S}]/u,X=/[^\\s\\p{P}\\p{S}]/u,De=d(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,Z).getRegex(),pe=/(?!~)[\\p{P}\\p{S}]/u,qe=/(?!~)[\\s\\p{P}\\p{S}]/u,ve=/(?:[^\\s\\p{P}\\p{S}]|~)/u,He=d(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",Te?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ce=/^(?:\\*+(?:((?!\\*)punct)|([^\\s*]))?)|^_+(?:((?!_)punct)|([^\\s_]))?/,Ze=d(ce,\"u\").replace(/punct/g,I).getRegex(),Ge=d(ce,\"u\").replace(/punct/g,pe).getRegex(),he=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",Ne=d(he,\"gu\").replace(/notPunctSpace/g,X).replace(/punctSpace/g,Z).replace(/punct/g,I).getRegex(),Qe=d(he,\"gu\").replace(/notPunctSpace/g,ve).replace(/punctSpace/g,qe).replace(/punct/g,pe).getRegex(),je=d(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,X).replace(/punctSpace/g,Z).replace(/punct/g,I).getRegex(),Fe=d(/^~~?(?:((?!~)punct)|[^\\s~])/,\"u\").replace(/punct/g,I).getRegex(),Ue=\"^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)\",Ke=d(Ue,\"gu\").replace(/notPunctSpace/g,X).replace(/punctSpace/g,Z).replace(/punct/g,I).getRegex(),We=d(/\\\\(punct)/,\"gu\").replace(/punct/g,I).getRegex(),Xe=d(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Je=d(K).replace(\"(?:-->|$)\",\"-->\").getRegex(),Ve=d(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",Je).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),v=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\])|[^\\[\\]\\\\`])*?/,Ye=d(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]+(?:\\n[ \\t]*)?|\\n[ \\t]*)(title))?\\s*\\)/).replace(\"label\",v).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),ke=d(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",v).replace(\"ref\",U).getRegex(),de=d(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",U).getRegex(),et=d(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",ke).replace(\"nolink\",de).getRegex(),ie=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,J={_backpedal:_,anyPunctuation:We,autolink:Xe,blockSkip:He,br:ue,code:Ce,del:_,delLDelim:_,delRDelim:_,emStrongLDelim:Ze,emStrongRDelimAst:Ne,emStrongRDelimUnd:je,escape:Ae,link:Ye,nolink:de,punctuation:De,reflink:ke,reflinkSearch:et,tag:Ve,text:Be,url:_},tt={...J,link:d(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",v).getRegex(),reflink:d(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",v).getRegex()},Q={...J,emStrongRDelimAst:Qe,emStrongLDelim:Ge,delLDelim:Fe,delRDelim:Ke,url:d(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",ie).replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\[\\s\\S]|[^\\\\])*?(?:\\\\[\\s\\S]|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:d(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\",ie).getRegex()},nt={...Q,br:d(ue).replace(\"{2,}\",\"*\").getRegex(),text:d(Q.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},D={normal:W,gfm:Ee,pedantic:Ie},A={normal:J,gfm:Q,breaks:nt,pedantic:tt};var rt={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},ge=l=>rt[l];function O(l,e){if(e){if(m.escapeTest.test(l))return l.replace(m.escapeReplace,ge)}else if(m.escapeTestNoEncode.test(l))return l.replace(m.escapeReplaceNoEncode,ge);return l}function V(l){try{l=encodeURI(l).replace(m.percentDecode,\"%\")}catch{return null}return l}function Y(l,e){let t=l.replace(m.findPipe,(r,i,o)=>{let u=!1,a=i;for(;--a>=0&&o[a]===\"\\\\\";)u=!u;return u?\"|\":\" |\"}),n=t.split(m.splitPipe),s=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;s<n.length;s++)n[s]=n[s].trim().replace(m.slashPipe,\"|\");return n}function $(l,e,t){let n=l.length;if(n===0)return\"\";let s=0;for(;s<n;){let r=l.charAt(n-s-1);if(r===e&&!t)s++;else if(r!==e&&t)s++;else break}return l.slice(0,n-s)}function ee(l){let e=l.split(`\n`),t=e.length-1;for(;t>=0&&m.blankLine.test(e[t]);)t--;return e.length-t<=2?l:e.slice(0,t+1).join(`\n`)}function fe(l,e){if(l.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<l.length;n++)if(l[n]===\"\\\\\")n++;else if(l[n]===e[0])t++;else if(l[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function me(l,e=0){let t=e,n=\"\";for(let s of l)if(s===\"\t\"){let r=4-t%4;n+=\" \".repeat(r),t+=r}else n+=s,t++;return n}function xe(l,e,t,n,s){let r=e.href,i=e.title||null,o=l[1].replace(s.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let u={type:l[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:r,title:i,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,u}function st(l,e,t){let n=l.match(t.other.indentCodeCompensation);if(n===null)return e;let s=n[1];return e.split(`\n`).map(r=>{let i=r.match(t.other.beginningSpace);if(i===null)return r;let[o]=i;return o.length>=s.length?r.slice(s.length):r}).join(`\n`)}var w=class{options;rules;lexer;constructor(e){this.options=e||T}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:ee(t[0]),s=n.replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:n,codeBlockStyle:\"indented\",text:s}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],s=st(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:s}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let s=$(n,\"#\");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(n=s.trim())}return{type:\"heading\",raw:$(t[0],`\n`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:$(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=$(t[0],`\n`).split(`\n`),s=\"\",r=\"\",i=[];for(;n.length>0;){let o=!1,u=[],a;for(a=0;a<n.length;a++)if(this.rules.other.blockquoteStart.test(n[a]))u.push(n[a]),o=!0;else if(!o)u.push(n[a]);else break;n=n.slice(a);let c=u.join(`\n`),p=c.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");s=s?`${s}\n${c}`:c,r=r?`${r}\n${p}`:p;let k=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(p,i,!0),this.lexer.state.top=k,n.length===0)break;let h=i.at(-1);if(h?.type===\"code\")break;if(h?.type===\"blockquote\"){let R=h,f=R.raw+`\n`+n.join(`\n`),S=this.blockquote(f);i[i.length-1]=S,s=s.substring(0,s.length-R.raw.length)+S.raw,r=r.substring(0,r.length-R.text.length)+S.text;break}else if(h?.type===\"list\"){let R=h,f=R.raw+`\n`+n.join(`\n`),S=this.list(f);i[i.length-1]=S,s=s.substring(0,s.length-h.raw.length)+S.raw,r=r.substring(0,r.length-R.raw.length)+S.raw,n=f.substring(i.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:s,tokens:i,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),s=n.length>1,r={type:\"list\",raw:\"\",ordered:s,start:s?+n.slice(0,-1):\"\",loose:!1,items:[]};n=s?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=s?n:\"[*+-]\");let i=this.rules.other.listItemRegex(n),o=!1;for(;e;){let a=!1,c=\"\",p=\"\";if(!(t=i.exec(e))||this.rules.block.hr.test(e))break;c=t[0],e=e.substring(c.length);let k=me(t[2].split(`\n`,1)[0],t[1].length),h=e.split(`\n`,1)[0],R=!k.trim(),f=0;if(this.options.pedantic?(f=2,p=k.trimStart()):R?f=t[1].length+1:(f=k.search(this.rules.other.nonSpaceChar),f=f>4?1:f,p=k.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(c+=h+`\n`,e=e.substring(h.length+1),a=!0),!a){let S=this.rules.other.nextBulletRegex(f),te=this.rules.other.hrRegex(f),ne=this.rules.other.fencesBeginRegex(f),re=this.rules.other.headingBeginRegex(f),be=this.rules.other.htmlBeginRegex(f),Re=this.rules.other.blockquoteBeginRegex(f);for(;e;){let G=e.split(`\n`,1)[0],C;if(h=G,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\" \"),C=h):C=h.replace(this.rules.other.tabCharGlobal,\" \"),ne.test(h)||re.test(h)||be.test(h)||Re.test(h)||S.test(h)||te.test(h))break;if(C.search(this.rules.other.nonSpaceChar)>=f||!h.trim())p+=`\n`+C.slice(f);else{if(R||k.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||ne.test(k)||re.test(k)||te.test(k))break;p+=`\n`+h}R=!h.trim(),c+=G+`\n`,e=e.substring(G.length+1),k=C.slice(f)}}r.loose||(o?r.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(o=!0)),r.items.push({type:\"list_item\",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(p),loose:!1,text:p,tokens:[]}),r.raw+=c}let u=r.items.at(-1);if(u)u.raw=u.raw.trimEnd(),u.text=u.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let a of r.items){this.lexer.state.top=!1,a.tokens=this.lexer.blockTokens(a.text,[]);let c=a.tokens[0];if(a.task&&(c?.type===\"text\"||c?.type===\"paragraph\")){a.text=a.text.replace(this.rules.other.listReplaceTask,\"\"),c.raw=c.raw.replace(this.rules.other.listReplaceTask,\"\"),c.text=c.text.replace(this.rules.other.listReplaceTask,\"\");for(let k=this.lexer.inlineQueue.length-1;k>=0;k--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[k].src)){this.lexer.inlineQueue[k].src=this.lexer.inlineQueue[k].src.replace(this.rules.other.listReplaceTask,\"\");break}let p=this.rules.other.listTaskCheckbox.exec(a.raw);if(p){let k={type:\"checkbox\",raw:p[0]+\" \",checked:p[0]!==\"[ ]\"};a.checked=k.checked,r.loose?a.tokens[0]&&[\"paragraph\",\"text\"].includes(a.tokens[0].type)&&\"tokens\"in a.tokens[0]&&a.tokens[0].tokens?(a.tokens[0].raw=k.raw+a.tokens[0].raw,a.tokens[0].text=k.raw+a.tokens[0].text,a.tokens[0].tokens.unshift(k)):a.tokens.unshift({type:\"paragraph\",raw:k.raw,text:k.raw,tokens:[k]}):a.tokens.unshift(k)}}else a.task&&(a.task=!1);if(!r.loose){let p=a.tokens.filter(h=>h.type===\"space\"),k=p.length>0&&p.some(h=>this.rules.other.anyLine.test(h.raw));r.loose=k}}if(r.loose)for(let a of r.items){a.loose=!0;for(let c of a.tokens)c.type===\"text\"&&(c.type=\"paragraph\")}return r}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=ee(t[0]);return{type:\"html\",block:!0,raw:n,pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),s=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:$(t[0],`\n`),href:s,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Y(t[1]),s=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),r=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],i={type:\"table\",raw:$(t[0],`\n`),header:[],align:[],rows:[]};if(n.length===s.length){for(let o of s)this.rules.other.tableAlignRight.test(o)?i.align.push(\"right\"):this.rules.other.tableAlignCenter.test(o)?i.align.push(\"center\"):this.rules.other.tableAlignLeft.test(o)?i.align.push(\"left\"):i.align.push(null);for(let o=0;o<n.length;o++)i.header.push({text:n[o],tokens:this.lexer.inline(n[o]),header:!0,align:i.align[o]});for(let o of r)i.rows.push(Y(o,i.header.length).map((u,a)=>({text:u,tokens:this.lexer.inline(u),header:!1,align:i.align[a]})));return i}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:\"heading\",raw:$(t[0],`\n`),depth:t[2].charAt(0)===\"=\"?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let i=$(n.slice(0,-1),\"\\\\\");if((n.length-i.length)%2===0)return}else{let i=fe(t[2],\"()\");if(i===-2)return;if(i>-1){let u=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,u).trim(),t[3]=\"\"}}let s=t[2],r=\"\";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(s);i&&(s=i[1],r=i[3])}else r=t[3]?t[3].slice(1,-1):\"\";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?s=s.slice(1):s=s.slice(1,-1)),xe(t,{href:s&&s.replace(this.rules.inline.anyPunctuation,\"$1\"),title:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let s=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[s.toLowerCase()];if(!r){let i=n[0].charAt(0);return{type:\"text\",raw:i,text:i}}return xe(n,r,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let s=this.rules.inline.emStrongLDelim.exec(e);if(!s||!s[1]&&!s[2]&&!s[3]&&!s[4]||s[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(s[1]||s[3]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let i=[...s[0]].length-1,o,u,a=i,c=0,p=s[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(p.lastIndex=0,t=t.slice(-1*e.length+i);(s=p.exec(t))!==null;){if(o=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!o)continue;if(u=[...o].length,s[3]||s[4]){a+=u;continue}else if((s[5]||s[6])&&i%3&&!((i+u)%3)){c+=u;continue}if(a-=u,a>0)continue;u=Math.min(u,u+a+c);let k=[...s[0]][0].length,h=e.slice(0,i+s.index+k+u);if(Math.min(i,u)%2){let f=h.slice(1,-1);return{type:\"em\",raw:h,text:f,tokens:this.lexer.inlineTokens(f)}}let R=h.slice(2,-2);return{type:\"strong\",raw:h,text:R,tokens:this.lexer.inlineTokens(R)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),s=this.rules.other.nonSpaceChar.test(n),r=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return s&&r&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e,t,n=\"\"){let s=this.rules.inline.delLDelim.exec(e);if(!s)return;if(!(s[1]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let i=[...s[0]].length-1,o,u,a=i,c=this.rules.inline.delRDelim;for(c.lastIndex=0,t=t.slice(-1*e.length+i);(s=c.exec(t))!==null;){if(o=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!o||(u=[...o].length,u!==i))continue;if(s[3]||s[4]){a+=u;continue}if(a-=u,a>0)continue;u=Math.min(u,u+a);let p=[...s[0]][0].length,k=e.slice(0,i+s.index+p+u),h=k.slice(i,-i);return{type:\"del\",raw:k,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,s;return t[2]===\"@\"?(n=t[1],s=\"mailto:\"+n):(n=t[1],s=n),{type:\"link\",raw:t[0],text:n,href:s,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,s;if(t[2]===\"@\")n=t[0],s=\"mailto:\"+n;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(r!==t[0]);n=t[0],t[1]===\"www.\"?s=\"http://\"+t[0]:s=t[0]}return{type:\"link\",raw:t[0],text:n,href:s,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var x=class l{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||T,this.options.tokenizer=this.options.tokenizer||new w,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:D.normal,inline:A.normal};this.options.pedantic?(t.block=D.pedantic,t.inline=A.pedantic):this.options.gfm&&(t.block=D.gfm,this.options.breaks?t.inline=A.breaks:t.inline=A.gfm),this.tokenizer.rules=t}static get rules(){return{block:D,inline:A}}static lex(e,t){return new l(t).lex(e)}static lexInline(e,t){return new l(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));let s=1/0;for(;e;){if(e.length<s)s=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let r;if(this.options.extensions?.block?.some(o=>(r=o.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let o=t.at(-1);r.raw.length===1&&o!==void 0?o.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let o=t.at(-1);o?.type===\"paragraph\"||o?.type===\"text\"?(o.raw+=(o.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,o.text+=`\n`+r.text,this.inlineQueue.at(-1).src=o.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let o=t.at(-1);o?.type===\"paragraph\"||o?.type===\"text\"?(o.raw+=(o.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,o.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=o.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let o=1/0,u=e.slice(1),a;this.options.extensions.startBlock.forEach(c=>{a=c.call({lexer:this},u),typeof a==\"number\"&&a>=0&&(o=Math.min(o,a))}),o<1/0&&o>=0&&(i=e.substring(0,o+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let o=t.at(-1);n&&o?.type===\"paragraph\"?(o.raw+=(o.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,o.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let o=t.at(-1);o?.type===\"text\"?(o.raw+=(o.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,o.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):t.push(r);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){this.tokenizer.lexer=this;let n=e,s=null;if(this.tokens.links){let a=Object.keys(this.tokens.links);if(a.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)a.includes(s[0].slice(s[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,s.index)+\"[\"+\"a\".repeat(s[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,s.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let r;for(;(s=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)r=s[2]?s[2].length:0,n=n.slice(0,s.index+r)+\"[\"+\"a\".repeat(s[0].length-r-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let i=!1,o=\"\",u=1/0;for(;e;){if(e.length<u)u=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}i||(o=\"\"),i=!1;let a;if(this.options.extensions?.inline?.some(p=>(a=p.call({lexer:this},e,t))?(e=e.substring(a.raw.length),t.push(a),!0):!1))continue;if(a=this.tokenizer.escape(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.tag(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.link(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(a.raw.length);let p=t.at(-1);a.type===\"text\"&&p?.type===\"text\"?(p.raw+=a.raw,p.text+=a.text):t.push(a);continue}if(a=this.tokenizer.emStrong(e,n,o)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.codespan(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.br(e)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.del(e,n,o)){e=e.substring(a.raw.length),t.push(a);continue}if(a=this.tokenizer.autolink(e)){e=e.substring(a.raw.length),t.push(a);continue}if(!this.state.inLink&&(a=this.tokenizer.url(e))){e=e.substring(a.raw.length),t.push(a);continue}let c=e;if(this.options.extensions?.startInline){let p=1/0,k=e.slice(1),h;this.options.extensions.startInline.forEach(R=>{h=R.call({lexer:this},k),typeof h==\"number\"&&h>=0&&(p=Math.min(p,h))}),p<1/0&&p>=0&&(c=e.substring(0,p+1))}if(a=this.tokenizer.inlineText(c)){e=e.substring(a.raw.length),a.raw.slice(-1)!==\"_\"&&(o=a.raw.slice(-1)),i=!0;let p=t.at(-1);p?.type===\"text\"?(p.raw+=a.raw,p.text+=a.text):t.push(a);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return t}infiniteLoopError(e){let t=\"Infinite loop on byte: \"+e;if(this.options.silent)console.error(t);else throw new Error(t)}};var y=class{options;parser;constructor(e){this.options=e||T}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let s=(t||\"\").match(m.notSpaceStart)?.[0],r=e.replace(m.endingNewline,\"\")+`\n`;return s?'<pre><code class=\"language-'+O(s)+'\">'+(n?r:O(r,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?r:O(r,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,s=\"\";for(let o=0;o<e.items.length;o++){let u=e.items[o];s+=this.listitem(u)}let r=t?\"ol\":\"ul\",i=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+r+i+`>\n`+s+\"</\"+r+`>\n`}listitem(e){return`<li>${this.parser.parse(e.tokens)}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\"> '}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let r=0;r<e.header.length;r++)n+=this.tablecell(e.header[r]);t+=this.tablerow({text:n});let s=\"\";for(let r=0;r<e.rows.length;r++){let i=e.rows[r];n=\"\";for(let o=0;o<i.length;o++)n+=this.tablecell(i[o]);s+=this.tablerow({text:n})}return s&&(s=`<tbody>${s}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+s+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${O(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let s=this.parser.parseInline(n),r=V(e);if(r===null)return s;e=r;let i='<a href=\"'+e+'\"';return t&&(i+=' title=\"'+O(t)+'\"'),i+=\">\"+s+\"</a>\",i}image({href:e,title:t,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let r=V(e);if(r===null)return O(n);e=r;let i=`<img src=\"${e}\" alt=\"${O(n)}\"`;return t&&(i+=` title=\"${O(t)}\"`),i+=\">\",i}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:O(e.text)}};var L=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}checkbox({raw:e}){return e}};var b=class l{options;renderer;textRenderer;constructor(e){this.options=e||T,this.options.renderer=this.options.renderer||new y,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new L}static parse(e,t){return new l(t).parse(e)}static parseInline(e,t){return new l(t).parseInline(e)}parse(e){this.renderer.parser=this;let t=\"\";for(let n=0;n<e.length;n++){let s=e[n];if(this.options.extensions?.renderers?.[s.type]){let i=s,o=this.options.extensions.renderers[i.type].call({parser:this},i);if(o!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"def\",\"paragraph\",\"text\"].includes(i.type)){t+=o||\"\";continue}}let r=s;switch(r.type){case\"space\":{t+=this.renderer.space(r);break}case\"hr\":{t+=this.renderer.hr(r);break}case\"heading\":{t+=this.renderer.heading(r);break}case\"code\":{t+=this.renderer.code(r);break}case\"table\":{t+=this.renderer.table(r);break}case\"blockquote\":{t+=this.renderer.blockquote(r);break}case\"list\":{t+=this.renderer.list(r);break}case\"checkbox\":{t+=this.renderer.checkbox(r);break}case\"html\":{t+=this.renderer.html(r);break}case\"def\":{t+=this.renderer.def(r);break}case\"paragraph\":{t+=this.renderer.paragraph(r);break}case\"text\":{t+=this.renderer.text(r);break}default:{let i='Token with \"'+r.type+'\" type was not found.';if(this.options.silent)return console.error(i),\"\";throw new Error(i)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=\"\";for(let s=0;s<e.length;s++){let r=e[s];if(this.options.extensions?.renderers?.[r.type]){let o=this.options.extensions.renderers[r.type].call({parser:this},r);if(o!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(r.type)){n+=o||\"\";continue}}let i=r;switch(i.type){case\"escape\":{n+=t.text(i);break}case\"html\":{n+=t.html(i);break}case\"link\":{n+=t.link(i);break}case\"image\":{n+=t.image(i);break}case\"checkbox\":{n+=t.checkbox(i);break}case\"strong\":{n+=t.strong(i);break}case\"em\":{n+=t.em(i);break}case\"codespan\":{n+=t.codespan(i);break}case\"br\":{n+=t.br(i);break}case\"del\":{n+=t.del(i);break}case\"text\":{n+=t.text(i);break}default:{let o='Token with \"'+i.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return n}};var P=class{options;block;constructor(e){this.options=e||T}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\",\"emStrongMask\"]);static passThroughHooksRespectAsync=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?x.lex:x.lexInline}provideParser(e=this.block){return e?b.parse:b.parseInline}};var q=class{defaults=M();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=y;TextRenderer=L;Lexer=x;Tokenizer=w;Hooks=P;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let s of e)switch(n=n.concat(t.call(this,s)),s.type){case\"table\":{let r=s;for(let i of r.header)n=n.concat(this.walkTokens(i.tokens,t));for(let i of r.rows)for(let o of i)n=n.concat(this.walkTokens(o.tokens,t));break}case\"list\":{let r=s;n=n.concat(this.walkTokens(r.items,t));break}default:{let r=s;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(i=>{let o=r[i].flat(1/0);n=n.concat(this.walkTokens(o,t))}):r.tokens&&(n=n.concat(this.walkTokens(r.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error(\"extension name required\");if(\"renderer\"in r){let i=t.renderers[r.name];i?t.renderers[r.name]=function(...o){let u=r.renderer.apply(this,o);return u===!1&&(u=i.apply(this,o)),u}:t.renderers[r.name]=r.renderer}if(\"tokenizer\"in r){if(!r.level||r.level!==\"block\"&&r.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let i=t[r.level];i?i.unshift(r.tokenizer):t[r.level]=[r.tokenizer],r.start&&(r.level===\"block\"?t.startBlock?t.startBlock.push(r.start):t.startBlock=[r.start]:r.level===\"inline\"&&(t.startInline?t.startInline.push(r.start):t.startInline=[r.start]))}\"childTokens\"in r&&r.childTokens&&(t.childTokens[r.name]=r.childTokens)}),s.extensions=t),n.renderer){let r=this.defaults.renderer||new y(this.defaults);for(let i in n.renderer){if(!(i in r))throw new Error(`renderer '${i}' does not exist`);if([\"options\",\"parser\"].includes(i))continue;let o=i,u=n.renderer[o],a=r[o];r[o]=(...c)=>{let p=u.apply(r,c);return p===!1&&(p=a.apply(r,c)),p||\"\"}}s.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new w(this.defaults);for(let i in n.tokenizer){if(!(i in r))throw new Error(`tokenizer '${i}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(i))continue;let o=i,u=n.tokenizer[o],a=r[o];r[o]=(...c)=>{let p=u.apply(r,c);return p===!1&&(p=a.apply(r,c)),p}}s.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new P;for(let i in n.hooks){if(!(i in r))throw new Error(`hook '${i}' does not exist`);if([\"options\",\"block\"].includes(i))continue;let o=i,u=n.hooks[o],a=r[o];P.passThroughHooks.has(i)?r[o]=c=>{if(this.defaults.async&&P.passThroughHooksRespectAsync.has(i))return(async()=>{let k=await u.call(r,c);return a.call(r,k)})();let p=u.call(r,c);return a.call(r,p)}:r[o]=(...c)=>{if(this.defaults.async)return(async()=>{let k=await u.apply(r,c);return k===!1&&(k=await a.apply(r,c)),k})();let p=u.apply(r,c);return p===!1&&(p=a.apply(r,c)),p}}s.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,i=n.walkTokens;s.walkTokens=function(o){let u=[];return u.push(i.call(this,o)),r&&(u=u.concat(r.call(this,o))),u}}this.defaults={...this.defaults,...s}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return x.lex(e,t??this.defaults)}parser(e,t){return b.parse(e,t??this.defaults)}parseMarkdown(e){return(n,s)=>{let r={...s},i={...this.defaults,...r},o=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return o(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return o(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return o(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let u=i.hooks?await i.hooks.preprocess(n):n,c=await(i.hooks?await i.hooks.provideLexer(e):e?x.lex:x.lexInline)(u,i),p=i.hooks?await i.hooks.processAllTokens(c):c;i.walkTokens&&await Promise.all(this.walkTokens(p,i.walkTokens));let h=await(i.hooks?await i.hooks.provideParser(e):e?b.parse:b.parseInline)(p,i);return i.hooks?await i.hooks.postprocess(h):h})().catch(o);try{i.hooks&&(n=i.hooks.preprocess(n));let a=(i.hooks?i.hooks.provideLexer(e):e?x.lex:x.lexInline)(n,i);i.hooks&&(a=i.hooks.processAllTokens(a)),i.walkTokens&&this.walkTokens(a,i.walkTokens);let p=(i.hooks?i.hooks.provideParser(e):e?b.parse:b.parseInline)(a,i);return i.hooks&&(p=i.hooks.postprocess(p)),p}catch(u){return o(u)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let s=\"<p>An error occurred:</p><pre>\"+O(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}};var z=new q;function g(l,e){return z.parse(l,e)}g.options=g.setOptions=function(l){return z.setOptions(l),g.defaults=z.defaults,N(g.defaults),g};g.getDefaults=M;g.defaults=T;g.use=function(...l){return z.use(...l),g.defaults=z.defaults,N(g.defaults),g};g.walkTokens=function(l,e){return z.walkTokens(l,e)};g.parseInline=z.parseInline;g.Parser=b;g.parser=b.parse;g.Renderer=y;g.TextRenderer=L;g.Lexer=x;g.lexer=x.lex;g.Tokenizer=w;g.Hooks=P;g.parse=g;var Ft=g.options,Ut=g.setOptions,Kt=g.use,Wt=g.walkTokens,Xt=g.parseInline,Jt=g,Vt=b.parse,Yt=x.lex;export{P as Hooks,x as Lexer,q as Marked,b as Parser,y as Renderer,L as TextRenderer,w as Tokenizer,T as defaults,M as getDefaults,Yt as lexer,g as marked,Ft as options,Jt as parse,Xt as parseInline,Vt as parser,Ut as setOptions,Kt as use,Wt as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Tokens } from 'marked'\nimport type { MaybeRefOrGetter } from 'vue'\n\nimport dompurify from 'dompurify'\nimport { marked } from 'marked'\nimport { computed, toValue } from 'vue'\n\nexport interface MarkdownOptions {\n\tminHeadingLevel?: number\n}\n\n/**\n * Render Markdown to HTML\n *\n * @param text - The Markdown source\n * @param options - Markdown options\n */\nexport function useMarkdown(text: MaybeRefOrGetter<string>, options?: MarkdownOptions) {\n\tconst renderer = new marked.Renderer()\n\trenderer.blockquote = markedBlockquote\n\trenderer.link = markedLink\n\trenderer.image = markedImage\n\n\treturn computed(() => {\n\t\tconst minHeading = options?.minHeadingLevel ?? 1\n\t\trenderer.heading = getMarkedHeading(minHeading)\n\t\tconst markdown = toValue(text).trim()\n\n\t\treturn dompurify.sanitize(\n\t\t\tmarked(markdown, {\n\t\t\t\tasync: false,\n\t\t\t\trenderer,\n\t\t\t\tgfm: false,\n\t\t\t\tbreaks: false,\n\t\t\t\tpedantic: false,\n\t\t\t}),\n\t\t\t{\n\t\t\t\tALLOWED_TAGS: [\n\t\t\t\t\t'h1',\n\t\t\t\t\t'h2',\n\t\t\t\t\t'h3',\n\t\t\t\t\t'h4',\n\t\t\t\t\t'h5',\n\t\t\t\t\t'h6',\n\t\t\t\t\t'strong',\n\t\t\t\t\t'p',\n\t\t\t\t\t'a',\n\t\t\t\t\t'ul',\n\t\t\t\t\t'ol',\n\t\t\t\t\t'li',\n\t\t\t\t\t'em',\n\t\t\t\t\t'del',\n\t\t\t\t\t'blockquote',\n\t\t\t\t],\n\t\t\t},\n\t\t)\n\t})\n}\n\n/**\n * Custom link renderer that only allows http and https links\n *\n * @param ctx - The render context\n * @param ctx.href - The link href\n * @param ctx.title - The link title\n * @param ctx.text - The link text\n */\nfunction markedLink({ href, title, text }: Tokens.Link) {\n\tlet url: URL\n\ttry {\n\t\turl = new URL(href)\n\t} catch {\n\t\treturn ''\n\t}\n\n\tif (url.protocol !== 'http:' && url.protocol !== 'https:') {\n\t\treturn ''\n\t}\n\n\tlet out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"'\n\tif (title) {\n\t\tout += ' title=\"' + title + '\"'\n\t}\n\tout += '>' + text.replaceAll(/(?<!\\\\)\\\\([^\\\\])/g, '$1') + '</a>'\n\treturn out\n}\n\n/**\n * Only render image alt text or title\n *\n * @param ctx - The render context\n * @param ctx.title - The image title\n * @param ctx.text - The image alt text\n */\nfunction markedImage({ title, text }: Tokens.Image): string {\n\tif (text) {\n\t\treturn text\n\t}\n\treturn title ?? ''\n}\n\n/**\n * Render block quotes without any special styling\n *\n * @param ctx - The render context\n * @param ctx.text - The blockquote text\n */\nfunction markedBlockquote({ text }: Tokens.Blockquote): string {\n\treturn `<blockquote>${text}</blockquote>`\n}\n\n/**\n * Get a custom heading renderer that clamps heading levels\n *\n * @param minHeading - The heading to clamp to\n */\nfunction getMarkedHeading(minHeading: number) {\n\t/**\n\t * Custom heading renderer that adjusts heading levels\n\t *\n\t * @param ctx - The render context\n\t * @param ctx.text - The heading text\n\t * @param ctx.depth - The heading depth\n\t */\n\treturn ({ text, depth }: Tokens.Heading): string => {\n\t\tdepth = Math.min(6, depth + (minHeading - 1))\n\t\treturn `<h${depth}>${text}</h${depth}>`\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport { useMarkdown } from '../composables/useMarkdown.ts'\n\nconst {\n\ttext,\n\tminHeadingLevel = 1,\n} = defineProps<{\n\t/**\n\t * The markdown text to render\n\t */\n\ttext: string\n\t/**\n\t * Limit the minimum heading level\n\t */\n\tminHeadingLevel?: number\n}>()\n\nconst renderMarkdown = useMarkdown(() => text, { minHeadingLevel })\n</script>\n\n<template>\n\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t<div class=\"settings-markdown\" v-html=\"renderMarkdown\" />\n</template>\n\n<style scoped lang=\"scss\">\n.settings-markdown :deep {\n\ta {\n\t\ttext-decoration: underline;\n\t\t&::after {\n\t\t\tcontent: '↗';\n\t\t\tpadding-inline: calc(var(--default-grid-baseline) / 2);\n\t\t}\n\t}\n\n\tpre {\n\t\twhite-space: pre;\n\t\toverflow-x: auto;\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: 1em 1.3em;\n\t\tmargin-bottom: 1em;\n\t}\n\n\tp code {\n\t\tbackground-color: var(--color-background-dark);\n\t\tborder-radius: var(--border-radius);\n\t\tpadding: .1em .3em;\n\t}\n\n\tli {\n\t\tposition: relative;\n\t}\n\n\tul, ol {\n\t\tpadding-inline-start: 10px;\n\t\tmargin-inline-start: 10px;\n\t}\n\n\tul li {\n\t\tlist-style-type: disc;\n\t}\n\n\tul > li > ul > li {\n\t\tlist-style-type: circle;\n\t}\n\n\tul > li > ul > li ul li {\n\t\tlist-style-type: square;\n\t}\n\n\tblockquote {\n\t\tpadding-inline-start: 1em;\n\t\tborder-inline-start: 4px solid var(--color-primary-element);\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tmargin-inline: 0;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2018 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 { mdiTextShort } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport NcAppSidebarTab from '@nextcloud/vue/components/NcAppSidebarTab'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport MarkdownPreview from '../MarkdownPreview.vue'\n\ndefineProps<{\n\tapp: IAppstoreApp | IAppstoreExApp\n}>()\n</script>\n\n<template>\n\t<NcAppSidebarTab\n\t\tid=\"desc\"\n\t\t:name=\"t('appstore', 'Description')\"\n\t\t:order=\"0\">\n\t\t<template #icon>\n\t\t\t<NcIconSvgWrapper :path=\"mdiTextShort\" />\n\t\t</template>\n\t\t<div :class=\"$style.appDescriptionTab\">\n\t\t\t<MarkdownPreview :text=\"app.description\" :minHeadingLevel=\"3\" />\n\t\t</div>\n\t</NcAppSidebarTab>\n</template>\n\n<style module>\n.appDescriptionTab {\n\tpadding: 12px;\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { IDeployDaemon } from '../apps.d.ts'\n\nimport { mdiFileChart } from '@mdi/js'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\n\ndefineProps<{\n\tdaemon?: IDeployDaemon\n}>()\n</script>\n\n<template>\n\t<span\n\t\tv-if=\"daemon\"\n\t\t:class=\"$style.appDaemonBadge\"\n\t\t:title=\"daemon.name\">\n\t\t<NcIconSvgWrapper :path=\"mdiFileChart\" :size=\"20\" inline />\n\t\t{{ daemon.display_name }}\n\t</span>\n</template>\n\n<style module>\n.appDaemonBadge {\n\tcolor: var(--color-text-maxcontrast);\n\tbackground-color: transparent;\n\tborder: 1px solid var(--color-text-maxcontrast);\n\tborder-radius: var(--border-radius);\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: 6px;\n\tpadding: 3px 6px;\n\twidth: fit-content;\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport { mdiStar, mdiStarShootingOutline } from '@mdi/js'\nimport { translate as t } from '@nextcloud/l10n'\nimport { computed } from 'vue'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\n\nconst props = defineProps<{\n\t/**\n\t * The app level\n\t */\n\tlevel?: number\n}>()\n\nconst isSupported = computed(() => props.level === 300)\nconst isFeatured = computed(() => props.level === 200)\nconst badgeIcon = computed(() => isSupported.value\n\t? mdiStarShootingOutline\n\t: mdiStar)\nconst badgeText = computed(() => isSupported.value ? t('appstore', 'Supported') : t('appstore', 'Featured'))\nconst badgeTitle = computed(() => isSupported.value\n\t? t('appstore', 'This app is supported via your current Nextcloud subscription.')\n\t: t('appstore', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.'))\n</script>\n\n<template>\n\t<span\n\t\tv-if=\"isSupported || isFeatured\"\n\t\t:class=\"[ $style.appLevelBadge, { [$style.appLevelBadge__supported]: isSupported } ]\"\n\t\t:title=\"badgeTitle\">\n\t\t<NcIconSvgWrapper :path=\"badgeIcon\" :size=\"20\" inline />\n\t\t{{ badgeText }}\n\t</span>\n</template>\n\n<style module>\n.appLevelBadge {\n\tcolor: var(--color-text-maxcontrast);\n\tbackground-color: transparent;\n\tborder: 1px solid var(--color-text-maxcontrast);\n\tborder-radius: var(--border-radius);\n\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: var(--default-grid-baseline);\n\tpadding: 3px 6px;\n\twidth: fit-content;\n}\n\n.appLevelBadge__supported {\n\tbackground-color: var(--color-success);\n\tborder-color: var(--color-border-success);\n\tcolor: var(--color-success-text);\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2018 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 { mdiStar, mdiStarHalfFull, mdiStarOutline } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { computed } from 'vue'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\n\nconst { app } = defineProps<{\n\tapp: IAppstoreApp | IAppstoreExApp\n}>()\n\nconst isShown = computed(() => !app.shipped && app.ratingNumOverall && app.ratingNumOverall > 5)\nconst score = computed(() => app.ratingOverall ?? 4)\n\nconst title = computed(() => {\n\tconst appScore = (score.value * 5).toFixed(1)\n\treturn t('appstore', 'Community rating: {score}/5', { score: appScore })\n})\n\nconst fullStars = computed(() => Math.floor(score.value * 5 + 0.25))\nconst emptyStars = computed(() => Math.min(Math.floor((1 - score.value) * 5 + 0.25), 5 - fullStars.value))\nconst hasHalfStar = computed(() => (fullStars.value + emptyStars.value) < 5)\n</script>\n\n<template>\n\t<span\n\t\tv-if=\"isShown\"\n\t\trole=\"img\"\n\t\t:aria-label=\"title\"\n\t\t:title=\"title\"\n\t\t:class=\"$style.badgeAppScore\">\n\t\t<NcIconSvgWrapper\n\t\t\tv-for=\"index in fullStars\"\n\t\t\t:key=\"`full-star-${index}`\"\n\t\t\t:path=\"mdiStar\"\n\t\t\tinline />\n\t\t<NcIconSvgWrapper v-if=\"hasHalfStar\" :path=\"mdiStarHalfFull\" inline />\n\t\t<NcIconSvgWrapper\n\t\t\tv-for=\"index in emptyStars\"\n\t\t\t:key=\"`empty-star-${index}`\"\n\t\t\t:path=\"mdiStarOutline\"\n\t\t\tinline />\n\t</span>\n</template>\n\n<style module>\n.badgeAppScore {\n\tdisplay: inline-flex;\n\tcolor: var(--color-favorite, #a08b00);\n\n\t> * {\n\t\tvertical-align: text-bottom;\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 { OCSResponse } from '@nextcloud/typings/ocs'\nimport type { NcSelectUsersModel } from '@nextcloud/vue/components/NcSelectUsers'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport PQueue from 'p-queue'\nimport { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport logger from '../utils/logger.ts'\n\nconst queue = new PQueue({ concurrency: 3 })\n\nexport const useGroupsStore = defineStore('groups', () => {\n\tconst groups = ref(new Map<string, NcSelectUsersModel>())\n\n\t/**\n\t * Get group details by id\n\t *\n\t * @param groupId - The id of the group to fetch\n\t */\n\tasync function fetchGroupById(groupId: string) {\n\t\treturn await queue.add(() => internalFetchGroupById(groupId))\n\t}\n\n\t/**\n\t * Search the API for groups matching the query\n\t *\n\t * @param query - Query to search\n\t */\n\tasync function searchGroups(query: string) {\n\t\tconst url = generateOcsUrl('/cloud/groups/details')\n\t\ttry {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\tconst { data } = await axios.get<OCSResponse<{ groups: any }>>(url, {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch: query.trim(),\n\t\t\t\t\tlimit: 10,\n\t\t\t\t},\n\t\t\t})\n\t\t\tfor (const group of data.ocs.data.groups) {\n\t\t\t\tif (groups.value.has(group.id)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tgroups.value.set(group.id, {\n\t\t\t\t\tid: group.id,\n\t\t\t\t\tdisplayName: group.displayname,\n\t\t\t\t\tisNoUser: true,\n\t\t\t\t})\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to search groups', { error })\n\t\t}\n\t}\n\n\t/**\n\t * Get a group by its id\n\t *\n\t * @param groupId - The id of the group to retrieve\n\t */\n\tfunction getGroupById(groupId: string) {\n\t\treturn groups.value.get(groupId)\n\t}\n\n\treturn {\n\t\tgroups: computed(() => Array.from(groups.value.values())),\n\t\tsearchGroups,\n\t\tgetGroupById,\n\t\tfetchGroupById,\n\t}\n\n\t/**\n\t * Handle fetching group details by id\n\t *\n\t * @param groupId - The id of the group to fetch\n\t */\n\tasync function internalFetchGroupById(groupId: string) {\n\t\tif (!groups.value.has(groupId)) {\n\t\t\tawait searchGroups(groupId)\n\t\t}\n\t\treturn groups.value.get(groupId)\n\t}\n})\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { readonly, ref, toValue, watch } from 'vue'\nimport { useGroupsStore } from '../store/groups.ts'\n\n/**\n * Get the groups an app is limited to and keep it up to date\n *\n * @param app - The app to get the groups\n */\nexport function useLimitedGroups(app: MaybeRefOrGetter<IAppstoreApp | IAppstoreExApp>) {\n\tconst groupsStore = useGroupsStore()\n\tconst groupsAppIsLimitedTo = ref<{ id: string, displayName: string }[]>([])\n\twatch(() => toValue(app).groups, async () => {\n\t\tconst groups = toValue(app).groups\n\t\tif (groups === undefined) {\n\t\t\tgroupsAppIsLimitedTo.value = []\n\t\t\treturn\n\t\t}\n\n\t\tconst promises = groups.map((group) => groupsStore.fetchGroupById(group))\n\t\tconst results = await Promise.all(promises)\n\t\tgroupsAppIsLimitedTo.value = results.filter(Boolean) as { id: string, displayName: string }[]\n\t}, { immediate: true })\n\n\treturn readonly(groupsAppIsLimitedTo)\n}\n","<!--\n - SPDX-FileCopyrightText: 2018 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 { mdiTextBoxOutline } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { computed, useId } from 'vue'\nimport NcAppSidebarTab from '@nextcloud/vue/components/NcAppSidebarTab'\nimport NcDateTime from '@nextcloud/vue/components/NcDateTime'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport NcNoteCard from '@nextcloud/vue/components/NcNoteCard'\nimport BadgeAppDaemon from '../BadgeAppDaemon.vue'\nimport BadgeAppLevel from '../BadgeAppLevel.vue'\nimport BadgeAppScore from '../BadgeAppScore.vue'\nimport { useLimitedGroups } from '../../composables/useLimitedGroups.ts'\nimport { useAppsStore } from '../../store/apps.ts'\nimport { canLimitToGroups } from '../../utils/appStatus.ts'\n\nconst { app } = defineProps<{ app: IAppstoreApp | IAppstoreExApp }>()\n\nconst store = useAppsStore()\n\nconst idLimitedToGroups = useId()\n\nconst lastModified = computed(() => app.releases\n\t?.map((release) => release.lastModified)\n\t.map((date) => Date.parse(date))\n\t.sort()\n\t.at(-1))\n\n/**\n * App authors as comma separated string\n */\nconst appAuthors = computed(() => {\n\tif (!app) {\n\t\treturn ''\n\t}\n\n\treturn [app.author].flat().map(authorName)\n\t\t.sort((a, b) => a.split(' ').at(-1)!.localeCompare(b.split(' ').at(-1)!))\n\t\t.join(', ')\n})\n\nconst appstoreUrl = computed(() => `https://apps.nextcloud.com/apps/${app.id}`)\nconst groupsAppIsLimitedTo = useLimitedGroups(() => app)\n\n/**\n * Further external resources (e.g. website)\n */\nconst externalResources = computed(() => {\n\tconst resources: { id: string, href: string, label: string }[] = []\n\tif (!app.internal) {\n\t\tresources.push({\n\t\t\tid: 'appstore',\n\t\t\thref: appstoreUrl.value,\n\t\t\tlabel: t('appstore', 'View in store'),\n\t\t})\n\t}\n\tif (app.website) {\n\t\tresources.push({\n\t\t\tid: 'website',\n\t\t\thref: app.website,\n\t\t\tlabel: t('appstore', 'Visit website'),\n\t\t})\n\t}\n\tif (app.documentation) {\n\t\tif (app.documentation.user) {\n\t\t\tresources.push({\n\t\t\t\tid: 'doc-user',\n\t\t\t\thref: app.documentation.user,\n\t\t\t\tlabel: t('appstore', 'Usage documentation'),\n\t\t\t})\n\t\t}\n\t\tif (app.documentation.admin) {\n\t\t\tresources.push({\n\t\t\t\tid: 'doc-admin',\n\t\t\t\thref: app.documentation.admin,\n\t\t\t\tlabel: t('appstore', 'Admin documentation'),\n\t\t\t})\n\t\t}\n\t\tif (app.documentation.developer) {\n\t\t\tresources.push({\n\t\t\t\tid: 'doc-developer',\n\t\t\t\thref: app.documentation.developer,\n\t\t\t\tlabel: t('appstore', 'Developer documentation'),\n\t\t\t})\n\t\t}\n\t}\n\treturn resources\n})\n\nconst appCategories = computed(() => {\n\treturn [app.category].flat()\n\t\t.map((id) => store.getCategoryById(id)?.displayName ?? id)\n\t\t.join(', ')\n})\n\nconst cannotLimitToGroups = computed(() => {\n\treturn app.active && !canLimitToGroups(app)\n})\n\n/**\n * Get the author name from the XML node\n *\n * @param xmlNode - The XML node to get the author name from\n */\nfunction authorName(xmlNode): string {\n\tif (xmlNode['@value']) {\n\t\t// Complex node (with email or homepage attribute)\n\t\treturn xmlNode['@value']\n\t}\n\t// Simple text node\n\treturn xmlNode\n}\n</script>\n\n<template>\n\t<NcAppSidebarTab\n\t\tid=\"details\"\n\t\t:name=\"t('appstore', 'Details')\"\n\t\t:order=\"1\">\n\t\t<template #icon>\n\t\t\t<NcIconSvgWrapper :path=\"mdiTextBoxOutline\" />\n\t\t</template>\n\t\t<div class=\"app-details\">\n\t\t\t<!-- Featured/Supported badges -->\n\t\t\t<div :class=\"$style.appstoreDetailsTab__badges\">\n\t\t\t\t<BadgeAppLevel :level=\"app.level\" />\n\t\t\t\t<BadgeAppDaemon v-if=\"app.app_api && app.daemon\" :daemon=\"app.daemon\" />\n\t\t\t\t<BadgeAppScore :app />\n\t\t\t</div>\n\n\t\t\t<NcNoteCard v-if=\"!app.isCompatible && app.missingDependencies && app.missingDependencies.length\" type=\"error\">\n\t\t\t\t{{ t('appstore', 'This app cannot be installed because the following dependencies are not fulfilled:') }}\n\t\t\t\t<ul :aria-label=\"t('appstore', 'Missing dependencies')\" :class=\"$style.appstoreDetailsTab__missingDependencies\">\n\t\t\t\t\t<li v-for=\"(dep, index) in app.missingDependencies\" :key=\"index\">\n\t\t\t\t\t\t{{ dep }}\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</NcNoteCard>\n\n\t\t\t<NcNoteCard v-if=\"cannotLimitToGroups\" type=\"info\">\n\t\t\t\t{{ t('appstore', 'This app cannot be limited to groups because it provides functionality that is executed before group membership is determined.') }}\n\t\t\t</NcNoteCard>\n\n\t\t\t<div v-if=\"groupsAppIsLimitedTo.length\" :class=\"$style.appstoreDetailsTab__section\">\n\t\t\t\t<h4 :id=\"idLimitedToGroups\">\n\t\t\t\t\t{{ t('appstore', 'Limited to groups') }}\n\t\t\t\t</h4>\n\t\t\t\t<ul :aria-labelledby=\"idLimitedToGroups\" :class=\"$style.appstoreDetailsTab__sectionDetails\">\n\t\t\t\t\t<li\n\t\t\t\t\t\tv-for=\"group of groupsAppIsLimitedTo\"\n\t\t\t\t\t\t:key=\"group.id\"\n\t\t\t\t\t\t:title=\"group.id\">\n\t\t\t\t\t\t{{ group.displayName }}\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\n\t\t\t<div v-if=\"lastModified && !app.shipped\" :class=\"$style.appstoreDetailsTab__section\">\n\t\t\t\t<h4>\n\t\t\t\t\t{{ t('appstore', 'Latest updated') }}\n\t\t\t\t</h4>\n\t\t\t\t<NcDateTime :class=\"$style.appstoreDetailsTab__sectionDetails\" :timestamp=\"lastModified\" />\n\t\t\t</div>\n\n\t\t\t<div :class=\"$style.appstoreDetailsTab__section\">\n\t\t\t\t<h4>\n\t\t\t\t\t{{ t('appstore', 'Author') }}\n\t\t\t\t</h4>\n\t\t\t\t<p :class=\"$style.appstoreDetailsTab__sectionDetails\">\n\t\t\t\t\t{{ appAuthors }}\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div :class=\"$style.appstoreDetailsTab__section\">\n\t\t\t\t<h4>\n\t\t\t\t\t{{ t('appstore', 'Categories') }}\n\t\t\t\t</h4>\n\t\t\t\t<p :class=\"$style.appstoreDetailsTab__sectionDetails\">\n\t\t\t\t\t{{ appCategories }}\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<div v-if=\"externalResources.length > 0\" :class=\"$style.appstoreDetailsTab__section\">\n\t\t\t\t<h4>{{ t('appstore', 'Resources') }}</h4>\n\t\t\t\t<ul\n\t\t\t\t\t:class=\"$style.appstoreDetailsTab__resources\"\n\t\t\t\t\t:aria-label=\"t('appstore', 'Documentation resources')\">\n\t\t\t\t\t<li\n\t\t\t\t\t\tv-for=\"resource of externalResources\"\n\t\t\t\t\t\t:key=\"resource.id\"\n\t\t\t\t\t\t:class=\"$style.appstoreDetailsTab__resourcesItem\">\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t:class=\"$style.appstoreDetailsTab__resourcesLink\"\n\t\t\t\t\t\t\t:href=\"resource.href\"\n\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\trel=\"noreferrer noopener\">\n\t\t\t\t\t\t\t{{ resource.label }} ↗\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t</NcAppSidebarTab>\n</template>\n\n<style module>\n.appstoreDetailsTab__badges {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: 12px;\n}\n\n.appstoreDetailsTab__section {\n\tmargin-top: 15px;\n\n\th4 {\n\t\tfont-size: 16px;\n\t\tfont-weight: bold;\n\t\tmargin-block-end: 5px;\n\t}\n}\n\n.appstoreDetailsTab__sectionDetails {\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.appstoreDetailsTab__missingDependencies {\n\tlist-style: disc;\n\tpadding-block: 0.5lh 0;\n\tpadding-inline: 1em 0;\n}\n\n.appstoreDetailsTab__resourcesLink {\n\ttext-decoration: underline;\n}\n\n.appstoreDetailsTab__resourcesItem {\n\tpadding-inline-start: 20px;\n\n\t&::before {\n\t\twidth: 5px;\n\t\theight: 5px;\n\t\tborder-radius: 100%;\n\t\tbackground-color: var(--color-main-text);\n\t\tcontent: \"\";\n\t\tfloat: inline-start;\n\t\tmargin-inline-start: -13px;\n\t\tposition: relative;\n\t\ttop: 10px;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { IAppstoreApp, IAppstoreAppRelease, IAppstoreExApp } from '../../apps.d.ts'\n\nimport { mdiClockFast } from '@mdi/js'\nimport { getLanguage, t } from '@nextcloud/l10n'\nimport { computed } from 'vue'\nimport NcAppSidebarTab from '@nextcloud/vue/components/NcAppSidebarTab'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport MarkdownPreview from '../MarkdownPreview.vue'\n\nconst props = defineProps<{ app: IAppstoreApp | IAppstoreExApp }>()\n\nconst releases = computed(() => (props.app.releases ?? [])\n\t.filter((release) => {\n\t\tconst values = Object.values(release.translations ?? {})\n\t\treturn values.length > 0 && values.some(({ changelog }) => !!changelog)\n\t}))\n\n/**\n * Create a changelog text from a release\n *\n * @param release - The release to create the changelog from\n */\nfunction createChangelogFromRelease(release: IAppstoreAppRelease) {\n\tconst localizedEntry = release.translations[getLanguage()]\n\treturn localizedEntry?.changelog ?? release.translations.en?.changelog ?? ''\n}\n</script>\n\n<template>\n\t<NcAppSidebarTab\n\t\tv-if=\"releases.length > 0\"\n\t\tid=\"changelog\"\n\t\t:name=\"t('appstore', 'Changelog')\"\n\t\t:order=\"2\">\n\t\t<template #icon>\n\t\t\t<NcIconSvgWrapper :path=\"mdiClockFast\" :size=\"24\" />\n\t\t</template>\n\t\t<div v-for=\"release in releases\" :key=\"release.version\" :class=\"$style.appReleasesTab\">\n\t\t\t<h3 :class=\"$style.appReleasesTab__heading\">\n\t\t\t\t{{ release.version }}\n\t\t\t</h3>\n\t\t\t<MarkdownPreview\n\t\t\t\t:class=\"$style.appReleasesTab__text\"\n\t\t\t\t:minHeadingLevel=\"3\"\n\t\t\t\t:text=\"createChangelogFromRelease(release)\" />\n\t\t</div>\n\t</NcAppSidebarTab>\n</template>\n\n<style module>\n.appReleasesTab__heading {\n\tborder-bottom: 1px solid var(--color-border);\n\tfont-size: 20px;\n}\n\n.appReleasesTab__text {\n\t/* Overwrite changelog heading styles */\n\th4 {\n\t\tfont-size: 19px;\n\t}\n\n\th5 {\n\t\tfont-size: 17px;\n\t}\n}\n</style>\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiClose } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canDisable } from '../utils/appStatus.ts'\n\nexport const actionDisable: AppAction = {\n\tid: 'disable',\n\ticon: mdiClose,\n\torder: 10,\n\tenabled: canDisable,\n\tlabel: () => t('appstore', 'Disable'),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.disableApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiCheck } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canEnable, canInstall } from '../utils/appStatus.ts'\n\nexport const actionEnable: AppAction = {\n\tid: 'enable',\n\ticon: mdiCheck,\n\torder: 1,\n\tvariant: 'primary',\n\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\treturn !canInstall(app) && canEnable(app)\n\t},\n\tlabel: () => t('appstore', 'Enable'),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiAlertCircleCheckOutline } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canForceEnable, canInstall, needForceEnable } from '../utils/appStatus.ts'\n\nexport const actionForceEnable: AppAction = {\n\tid: 'force-enable',\n\ticon: mdiAlertCircleCheckOutline,\n\torder: 3,\n\tinline: false,\n\tvariant: 'warning',\n\tlabel: () => t('appstore', 'Force enable'),\n\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\treturn !canInstall(app) && canForceEnable(app) && needForceEnable(app)\n\t},\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id, true)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiDownload } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canInstall, needForceEnable } from '../utils/appStatus.ts'\n\nexport const actionInstall: AppAction = {\n\tid: 'install',\n\ticon: mdiDownload,\n\torder: 5,\n\tenabled(app) {\n\t\treturn canInstall(app) && !needForceEnable(app)\n\t},\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => {\n\t\tif (app.app_api) {\n\t\t\treturn t('appstore', 'Deploy and enable')\n\t\t}\n\t\tif (app.needsDownload) {\n\t\t\treturn t('appstore', 'Download and enable')\n\t\t}\n\t\treturn t('appstore', 'Install and enable')\n\t},\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiDownload } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canInstall, needForceEnable } from '../utils/appStatus.ts'\n\nexport const actionInstallForced: AppAction = {\n\tid: 'install-forced',\n\ticon: mdiDownload,\n\torder: 5,\n\tinline: false,\n\tenabled(app) {\n\t\treturn canInstall(app) && needForceEnable(app)\n\t},\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => {\n\t\tif (app.app_api) {\n\t\t\treturn t('appstore', 'Deploy and force enable')\n\t\t}\n\t\tif (app.needsDownload) {\n\t\t\treturn t('appstore', 'Download and force enable')\n\t\t}\n\t\treturn t('appstore', 'Install and force enable')\n\t},\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.enableApp(app.id, true)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiBugOutline, mdiForumOutline, mdiStarOutline, mdiWeb } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\n\nexport const actionsInteract: AppAction[] = [\n\t{\n\t\tid: 'rate',\n\t\ticon: mdiStarOutline,\n\t\torder: 30,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Rate the app'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !app.shipped\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn `https://apps.nextcloud.com/apps/${encodeURIComponent(app.id)}#comments`\n\t\t},\n\t},\n\t{\n\t\tid: 'report-bug',\n\t\ticon: mdiBugOutline,\n\t\torder: 32,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Report a bug'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !!app.bugs\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn app.bugs!\n\t\t},\n\t},\n\t{\n\t\tid: 'discussion',\n\t\ticon: mdiForumOutline,\n\t\torder: 35,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Ask questions or discuss the app'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !!app.discussion\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn app.discussion!\n\t\t},\n\t},\n\t{\n\t\tid: 'website',\n\t\ticon: mdiWeb,\n\t\torder: 38,\n\t\tinline: false,\n\t\tlabel: () => t('appstore', 'Visit the website'),\n\t\tenabled(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn !!app.website\n\t\t},\n\t\thref(app: IAppstoreApp | IAppstoreExApp) {\n\t\t\treturn app.website!\n\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\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiAccountGroup } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { spawnDialog } from '@nextcloud/vue'\nimport { defineAsyncComponent } from 'vue'\nimport { canLimitToGroups } from '../utils/appStatus.ts'\n\nconst LimitToGroupDialog = defineAsyncComponent(() => import('../components/LimitToGroupDialog.vue'))\n\nexport const actionLimitToGroup: AppAction = {\n\tid: 'limit-to-group',\n\ticon: mdiAccountGroup,\n\torder: 16,\n\tinline: false,\n\tlabel: () => t('appstore', 'Limit to groups'),\n\tenabled: canLimitToGroups,\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tawait spawnDialog(LimitToGroupDialog, { app })\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiTrashCanOutline } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canUninstall } from '../utils/appStatus.ts'\n\nexport const actionRemove: AppAction = {\n\tid: 'remove',\n\torder: 20,\n\ticon: mdiTrashCanOutline,\n\tvariant: 'error',\n\tinline: false,\n\tenabled: canUninstall,\n\tlabel: () => t('appstore', 'Remove'),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useAppsStore()\n\t\tawait store.uninstallApp(app.id)\n\t},\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\nimport type { AppAction } from './index.ts'\n\nimport { mdiUpdate } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { useExAppsStore } from '../store/exApps.ts'\nimport { useUpdatesStore } from '../store/updates.ts'\nimport { canUpdate } from '../utils/appStatus.ts'\n\nexport const actionUpdate: AppAction = {\n\tid: 'update',\n\ticon: mdiUpdate,\n\tvariant: 'primary',\n\torder: 0,\n\tenabled(app) {\n\t\tif (!canUpdate(app)) {\n\t\t\treturn false\n\t\t}\n\t\tif (app.app_api) {\n\t\t\tif (app.daemon && app.daemon?.accepts_deploy_id === 'manual-install') {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tconst exAppsStore = useExAppsStore()\n\t\t\treturn exAppsStore.daemonAccessible\n\t\t}\n\t\treturn true\n\t},\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => t('appstore', 'Update to {version}', { version: app.update! }),\n\tasync callback(app: IAppstoreApp | IAppstoreExApp) {\n\t\tconst store = useUpdatesStore()\n\t\tawait store.updateApp(app.id)\n\t},\n}\n","/*\n * SPDX-License-Identifier: AGPL-3.0-or-later\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n */\n\nimport type { RouteLocationRaw } from 'vue-router'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { actionDisable } from './actionDisable.ts'\nimport { actionEnable } from './actionEnable.ts'\nimport { actionForceEnable } from './actionForceEnable.ts'\nimport { actionInstall } from './actionInstall.ts'\nimport { actionInstallForced } from './actionInstallForced.ts'\nimport { actionsInteract } from './actionInteract.ts'\nimport { actionLimitToGroup } from './actionLimitToGroup.ts'\nimport { actionRemove } from './actionRemove.ts'\nimport { actionUpdate } from './actionUpdate.ts'\n\ninterface AppActionBase {\n\tenabled: (app: IAppstoreApp | IAppstoreExApp) => boolean\n\n\tid: string\n\ticon: string\n\torder: number\n\tlabel: (app: IAppstoreApp | IAppstoreExApp) => string\n\tvariant?: 'primary' | 'error' | 'warning'\n\tinline?: boolean\n}\n\ninterface AppActionWithCallback extends AppActionBase {\n\tcallback: (app: IAppstoreApp | IAppstoreExApp) => Promise<void>\n}\n\ninterface AppActionWithHref extends AppActionBase {\n\thref: (app: IAppstoreApp | IAppstoreExApp) => string\n}\n\ninterface AppActionWithRoute extends AppActionBase {\n\tto: (app: IAppstoreApp | IAppstoreExApp) => RouteLocationRaw\n}\n\nexport type AppAction = AppActionWithCallback | AppActionWithHref | AppActionWithRoute\n\nexport const actions = [\n\tactionUpdate,\n\tactionEnable,\n\tactionDisable,\n\tactionForceEnable,\n\tactionInstall,\n\tactionInstallForced,\n\tactionRemove,\n\tactionLimitToGroup,\n\t...actionsInteract,\n].sort((a, b) => a.order - b.order)\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { computed, toValue } from 'vue'\nimport { actions } from '../actions/index.ts'\n\n/**\n * Get the available actions for an app\n *\n * @param app - The app to get the actions for\n */\nexport function useActions(app: MaybeRefOrGetter<IAppstoreApp | IAppstoreExApp | null>) {\n\treturn computed(() => toValue(app) ? actions.filter((action) => action.enabled(toValue(app)!)) : [])\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Ref } from 'vue'\nimport type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { mdiCog, mdiCogOutline } from '@mdi/js'\nimport { computed, ref, watchEffect } from 'vue'\nimport { APPSTORE_CATEGORY_ICONS } from '../constants.ts'\nimport logger from '../utils/logger.ts'\n\n/**\n * Get the app icon raw SVG for use with `NcIconSvgWrapper` (do never use without sanitizing)\n * It has a fallback to the categroy icon.\n *\n * @param app The app to get the icon for\n */\nexport function useAppIcon(app: Ref<IAppstoreApp | IAppstoreExApp | null>) {\n\tconst appIcon = ref<string | null>(null)\n\n\t/**\n\t * Fallback value if no app icon available\n\t */\n\tconst categoryIcon = computed(() => {\n\t\tlet path: string\n\t\tif (app.value?.app_api) {\n\t\t\t// Use different default icon for ExApps (AppAPI)\n\t\t\tpath = mdiCogOutline\n\t\t} else {\n\t\t\tpath = [app.value?.category ?? []].flat()\n\t\t\t\t.map((name) => APPSTORE_CATEGORY_ICONS[name])\n\t\t\t\t.filter((icon) => !!icon)\n\t\t\t\t.at(0)\n\t\t\t\t?? (!app.value?.app_api ? mdiCog : mdiCogOutline)\n\t\t}\n\t\treturn path ? `<svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"${path}\" /></svg>` : null\n\t})\n\n\twatchEffect(async () => {\n\t\t// Note: Only variables until the first `await` will be watched!\n\t\tif (!app.value?.icon) {\n\t\t\tappIcon.value = categoryIcon.value\n\t\t} else {\n\t\t\tappIcon.value = null\n\t\t\t// Now try to load the real app icon\n\t\t\ttry {\n\t\t\t\tconst response = await window.fetch(app.value.icon)\n\t\t\t\tconst blob = await response.blob()\n\t\t\t\tconst rawSvg = await blob.text()\n\t\t\t\tappIcon.value = rawSvg.replaceAll(/fill=\"#(fff|ffffff)([a-z0-9]{1,2})?\"/ig, 'fill=\"currentColor\"')\n\t\t\t} catch (error) {\n\t\t\t\tappIcon.value = categoryIcon.value\n\t\t\t\tlogger.error('Could not load app icon', { error })\n\t\t\t}\n\t\t}\n\t})\n\n\treturn {\n\t\tappIcon,\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2018 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 { computed, onMounted, ref, watch } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\nimport NcAppSidebar from '@nextcloud/vue/components/NcAppSidebar'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport AppActions from '../components/AppActions.vue'\nimport AppDeployDaemonTab from '../components/AppstoreSidebar/AppDeployDaemonTab.vue'\nimport AppDescriptionTab from '../components/AppstoreSidebar/AppDescriptionTab.vue'\nimport AppDetailsTab from '../components/AppstoreSidebar/AppDetailsTab.vue'\nimport AppReleasesTab from '../components/AppstoreSidebar/AppReleasesTab.vue'\nimport { useActions } from '../composables/useActions.ts'\nimport { useAppIcon } from '../composables/useAppIcon.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 appId = computed<string>(() => [route.params.id].flat()[0]!)\nconst app = computed(() => store.getAppById(appId.value) ?? null)\nconst { appIcon } = useAppIcon(app)\n\n/**\n * The second text line shown on the sidebar\n */\nconst licenseText = computed(() => {\n\tif (!app.value) {\n\t\treturn ''\n\t}\n\n\tif (app.value.license) {\n\t\treturn t('appstore', 'Version {version}, {license}-licensed', { version: app.value.version, license: String(app.value.license).toUpperCase() })\n\t}\n\treturn t('appstore', 'Version {version}', { version: app.value.version })\n})\n\nconst activeTab = ref('details')\nwatch([app], () => {\n\tactiveTab.value = 'details'\n})\n\n/**\n * Hide the details sidebar by pushing a new route\n */\nfunction hideAppDetails() {\n\trouter.replace({\n\t\tname: route.name!,\n\t\tparams: {\n\t\t\t...route.params,\n\t\t\tid: undefined,\n\t\t},\n\t\tquery: userSettings.getQuery(),\n\t})\n}\n\n/**\n * Whether the app screenshot is loaded\n */\nconst screenshotLoaded = ref(false)\nconst hasScreenshot = computed(() => app.value?.screenshot && screenshotLoaded.value)\n/**\n * Preload the app screenshot\n */\nfunction loadScreenshot() {\n\tif (app.value?.releases && app.value?.screenshot) {\n\t\tconst image = new Image()\n\t\timage.onload = () => {\n\t\t\tscreenshotLoaded.value = true\n\t\t}\n\t\timage.src = app.value.screenshot\n\t}\n}\n// Watch app and set screenshot loaded when\nwatch([app], loadScreenshot)\nonMounted(loadScreenshot)\n\nconst actions = useActions(() => app.value)\n</script>\n\n<template>\n\t<!-- Selected app details -->\n\t<NcAppSidebar\n\t\tv-model:active=\"activeTab\"\n\t\t:class=\"[$style.appstoreSidebar, { [$style.appstoreSidebar_withScreenshot]: hasScreenshot }]\"\n\t\t:background=\"hasScreenshot ? app!.screenshot : undefined\"\n\t\t:compact=\"!hasScreenshot\"\n\t\t:name=\"app?.name ?? appId\"\n\t\t:title=\"app?.name ?? appId\"\n\t\t:subname=\"licenseText\"\n\t\t:subtitle=\"licenseText\"\n\t\t@close=\"hideAppDetails\">\n\t\t<!-- Fallback icon in case no app icon is available -->\n\t\t<template v-if=\"!hasScreenshot\" #header>\n\t\t\t<NcIconSvgWrapper\n\t\t\t\t:class=\"$style.appstoreSidebar__fallbackIcon\"\n\t\t\t\t:svg=\"appIcon ?? ''\"\n\t\t\t\t:size=\"64\" />\n\t\t</template>\n\n\t\t<template v-if=\"app\" #description>\n\t\t\t<AppActions\n\t\t\t\t:app\n\t\t\t\t:actions\n\t\t\t\ticonOnly\n\t\t\t\t:maxInlineActions=\"6\" />\n\t\t</template>\n\n\t\t<!-- Tab content -->\n\t\t<NcEmptyContent v-if=\"!app\" name=\"No such app\" />\n\t\t<template v-else>\n\t\t\t<AppDescriptionTab :app />\n\t\t\t<AppReleasesTab :app />\n\t\t\t<AppDetailsTab :app />\n\t\t\t<AppDeployDaemonTab v-if=\"app.app_api\" :app />\n\t\t</template>\n\t</NcAppSidebar>\n</template>\n\n<style module>\n/* If a screenshot is available it should cover the whole figure */\n.appstoreSidebar_withScreenshot {\n\t:global(.app-sidebar-header__figure) {\n\t\tbackground-size: cover;\n\t}\n}\n\n.appstoreSidebar__fallbackIcon {\n\twidth: 100%;\n\theight: 100%;\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 { t } from '@nextcloud/l10n'\nimport { computed } from 'vue'\nimport { useRoute } from 'vue-router'\nimport NcAppContent from '@nextcloud/vue/components/NcAppContent'\nimport NcContent from '@nextcloud/vue/components/NcContent'\nimport AppstoreNavigation from './views/AppstoreNavigation.vue'\nimport AppstoreSidebar from './views/AppstoreSidebar.vue'\nimport { APPSTORE_CATEGORY_NAMES } from './constants.ts'\nimport { useAppsStore } from './store/apps.ts'\n\nconst route = useRoute()\nconst store = useAppsStore()\n\nconst currentCategory = computed(() => {\n\tif (route.params.category) {\n\t\treturn [route.params.category].flat()[0]!\n\t}\n\tif (route.name === 'apps-bundles') {\n\t\treturn 'bundles'\n\t} else if (route.name === 'apps-search') {\n\t\treturn 'search'\n\t}\n\treturn 'discover'\n})\n\nconst heading = computed(() => {\n\tif (currentCategory.value in APPSTORE_CATEGORY_NAMES) {\n\t\treturn APPSTORE_CATEGORY_NAMES[currentCategory.value]\n\t}\n\treturn store.getCategoryById(currentCategory.value)?.displayName ?? currentCategory.value\n})\nconst pageTitle = computed(() => `${heading.value} - ${t('appstore', 'App store')}`)\n\nconst showSidebar = computed(() => !!route.params.id)\n</script>\n\n<template>\n\t<NcContent appName=\"appstore\">\n\t\t<AppstoreNavigation />\n\t\t<NcAppContent\n\t\t\t:class=\"$style.appstoreApp__content\"\n\t\t\t:pageHeading=\"t('appstore', 'App store')\"\n\t\t\t:pageTitle>\n\t\t\t<h2 v-if=\"heading\" :class=\"$style.appstoreApp__heading\">\n\t\t\t\t{{ heading }}\n\t\t\t</h2>\n\t\t\t<router-view />\n\t\t</NcAppContent>\n\t\t<AppstoreSidebar v-if=\"showSidebar\" />\n\t</NcContent>\n</template>\n\n<style module>\n.appstoreApp__content {\n\tpadding-inline-end: var(--body-container-margin);\n\tposition: relative;\n}\n\n.appstoreApp__heading {\n\tmargin-block-start: var(--app-navigation-padding);\n\tmargin-inline-start: calc(var(--default-clickable-area) + var(--app-navigation-padding) * 2);\n\tmin-height: var(--default-clickable-area);\n\tline-height: var(--default-clickable-area);\n\tvertical-align: center;\n}\n</style>\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { RouteRecordRaw } from 'vue-router'\n\nimport { loadState } from '@nextcloud/initial-state'\n\nconst appstoreEnabled = loadState<boolean>('appstore', 'appstoreEnabled', true)\n\n// Dynamic loading\nconst AppstoreDiscover = () => import('../views/AppstoreDiscover.vue')\nconst AppstoreManage = () => import('../views/AppstoreManage.vue')\nconst AppstoreBundles = () => import('../views/AppstoreBundles.vue')\nconst AppstoreBrowse = () => import('../views/AppstoreBrowse.vue')\nconst AppstoreSearch = () => import('../views/AppstoreSearch.vue')\n\nconst routes: RouteRecordRaw[] = [\n\t{\n\t\tpath: '/:index(index.php/)?settings/apps',\n\t\tname: 'apps',\n\t\tredirect: appstoreEnabled\n\t\t\t? {\n\t\t\t\t\tname: 'apps-discover',\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tname: 'apps-manage',\n\t\t\t\t\tparams: { category: 'installed' },\n\t\t\t\t},\n\t\tchildren: [\n\t\t\t{\n\t\t\t\tpath: 'discover/:id?',\n\t\t\t\tname: 'apps-discover',\n\t\t\t\tcomponent: AppstoreDiscover,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'bundles/:id?',\n\t\t\t\tname: 'apps-bundles',\n\t\t\t\tcomponent: AppstoreBundles,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: ':category(installed|enabled|disabled|updates)/:id?',\n\t\t\t\tname: 'apps-manage',\n\t\t\t\tcomponent: AppstoreManage,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: ':category/:id?',\n\t\t\t\tname: 'apps-category',\n\t\t\t\tcomponent: AppstoreBrowse,\n\t\t\t},\n\t\t\t{\n\t\t\t\tpath: 'search/:id?',\n\t\t\t\tname: 'apps-search',\n\t\t\t\tcomponent: AppstoreSearch,\n\t\t\t},\n\t\t],\n\t},\n]\n\nexport default routes\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport routes from './routes.ts'\n\nconst router = createRouter({\n\thistory: createWebHistory(generateUrl('')),\n\tlinkActiveClass: 'active',\n\troutes,\n})\n\nexport default router\n","/**\n * SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createPinia } from 'pinia'\nimport { createApp } from 'vue'\nimport AppstoreApp from './AppstoreApp.vue'\nimport router from './router/index.ts'\n\nimport 'vite/modulepreload-polyfill'\n\nconst pinia = createPinia()\nconst app = createApp(AppstoreApp)\napp.config.idPrefix = 'appstore'\napp.use(pinia)\napp.use(router)\napp.mount('#content')\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 { t } from '@nextcloud/l10n'\nimport { NcLoadingIcon } from '@nextcloud/vue'\nimport { useDebounceFn } from '@vueuse/core'\nimport { computed, ref, watch } from 'vue'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcDialog from '@nextcloud/vue/components/NcDialog'\nimport NcSelectUsers, { type NcSelectUsersModel } from '@nextcloud/vue/components/NcSelectUsers'\nimport { useAppsStore } from '../store/apps.ts'\nimport { useGroupsStore } from '../store/groups.ts'\n\nconst { app } = defineProps<{ app: IAppstoreApp | IAppstoreExApp }>()\nconst emit = defineEmits<{ close: [] }>()\n\nconst store = useAppsStore()\nconst groupsStore = useGroupsStore()\n\nconst loading = ref(false)\nconst groups = ref<NcSelectUsersModel[]>([])\nwatch(() => app, () => {\n\tgroups.value = (app.groups ?? [])\n\t\t.map((g) => {\n\t\t\tconst group = groupsStore.getGroupById(g)\n\t\t\tif (!group) {\n\t\t\t\tgroupsStore.searchGroups(g)\n\t\t\t}\n\t\t\treturn group ?? { id: g, displayName: g, isNoUser: true }\n\t\t})\n}, { immediate: true })\n\nconst availableGroups = computed(() => groupsStore.groups.filter((group) => !groups.value.includes(group)))\nconst onSearch = useDebounceFn(groupsStore.searchGroups, 400)\n\n/**\n * Save the limitation of this app\n */\nasync function onSave() {\n\ttry {\n\t\tloading.value = true\n\t\tawait store.limitAppToGroups(app.id, groups.value.map((g) => g.id))\n\t\temit('close')\n\t} finally {\n\t\tloading.value = false\n\t}\n}\n\n/**\n * Handle reset\n */\nasync function onReset() {\n\ttry {\n\t\tloading.value = true\n\t\tawait store.limitAppToGroups(app.id, [])\n\t\temit('close')\n\t} finally {\n\t\tloading.value = false\n\t}\n}\n</script>\n\n<template>\n\t<NcDialog\n\t\tisForm\n\t\t:name=\"t('appstore', 'Limit to groups')\"\n\t\t@submit=\"onSave\"\n\t\t@reset=\"onReset\">\n\t\t<p>{{ t('appstore', 'Restrict the usage of {app} to members of the following groups.', { app: app.name }) }}</p>\n\t\t<NcSelectUsers\n\t\t\tv-model=\"groups\"\n\t\t\t:class=\"$style.limitToGroupDialog__input\"\n\t\t\tkeepOpen\n\t\t\tlabelOutside\n\t\t\tmultiple\n\t\t\t:options=\"availableGroups\"\n\t\t\t@search=\"onSearch\" />\n\n\t\t<template #actions>\n\t\t\t<NcButton :disabled=\"loading\" type=\"reset\">\n\t\t\t\t{{ t('appstore', 'Reset limitation') }}\n\t\t\t</NcButton>\n\t\t\t<NcButton :disabled=\"loading\" type=\"submit\" variant=\"primary\">\n\t\t\t\t<template v-if=\"loading\" #icon>\n\t\t\t\t\t<NcLoadingIcon />\n\t\t\t\t</template>\n\n\t\t\t\t{{ t('appstore', 'Save') }}\n\t\t\t</NcButton>\n\t\t</template>\n\t</NcDialog>\n</template>\n\n<style module>\n.limitToGroupDialog__input {\n\twidth: 100%;\n\tpadding-block: 1lh calc(2 * var(--default-clickable-area) + 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 type { IAppstoreApp, IAppstoreExApp } from '../apps.d.ts'\n\nimport { mdiCogOutline } from '@mdi/js'\nimport { computed, ref, watch } from 'vue'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\n\nconst { app, noFallback, size = 20 } = defineProps<{\n\tapp: IAppstoreApp | IAppstoreExApp\n\tnoFallback?: boolean\n\tsize?: number\n}>()\n\nconst isSvg = computed(() => app.icon?.endsWith('.svg'))\nconst svgIcon = ref<string>('')\nwatch(() => app.icon, async () => {\n\tsvgIcon.value = ''\n\tif (app.icon?.endsWith('.svg')) {\n\t\tconst response = await fetch(app.icon)\n\t\tif (response.ok) {\n\t\t\tsvgIcon.value = await response.text()\n\t\t}\n\t}\n}, { immediate: true })\n</script>\n\n<template>\n\t<span :class=\"$style.appIcon\">\n\t\t<NcIconSvgWrapper\n\t\t\tv-if=\"svgIcon\"\n\t\t\t:size\n\t\t\t:svg=\"svgIcon\" />\n\t\t<img\n\t\t\tv-else-if=\"app.icon && !isSvg\"\n\t\t\t:class=\"$style.appIcon__image\"\n\t\t\talt=\"\"\n\t\t\t:src=\"app.icon\"\n\t\t\t:height=\"size\"\n\t\t\t:width=\"size\">\n\t\t<NcIconSvgWrapper\n\t\t\tv-else-if=\"!noFallback\"\n\t\t\t:path=\"mdiCogOutline\"\n\t\t\t:size />\n\t</span>\n</template>\n\n<style module>\n.appIcon {\n\tdisplay: inline-flex;\n\tjustify-content: center;\n}\n\n.appIcon__image {\n\tfilter: var(--invert-if-dark);\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 { AppAction } from '../../actions/index.ts'\nimport type { IAppstoreApp, IAppstoreExApp } from '../../apps.d.ts'\n\nimport { mdiInformationOutline } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { computed } from 'vue'\nimport { useRoute } from 'vue-router'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcChip from '@nextcloud/vue/components/NcChip'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport AppActions from '../AppActions.vue'\nimport AppIcon from '../AppIcon.vue'\nimport BadgeAppDaemon from '../BadgeAppDaemon.vue'\nimport BadgeAppLevel from '../BadgeAppLevel.vue'\nimport { useActions } from '../../composables/useActions.ts'\nimport { useLimitedGroups } from '../../composables/useLimitedGroups.ts'\n\nconst { app, isNarrow } = defineProps<{\n\tapp: IAppstoreApp | IAppstoreExApp\n\tisNarrow?: boolean\n\tisWide?: boolean\n}>()\n\nconst route = useRoute()\nconst detailsRoute = computed(() => ({\n\t...route,\n\tparams: {\n\t\t...route.params,\n\t\tid: app.id,\n\t},\n\tquery: {\n\t\t...route.query,\n\t},\n}))\n\nconst detailsAction = computed<AppAction>(() => ({\n\tid: 'details',\n\torder: 99,\n\tenabled: () => true,\n\tlabel: () => t('appstore', 'Show details'),\n\ticon: mdiInformationOutline,\n\tto: () => detailsRoute.value,\n\tinline: false,\n}))\n\nconst groupsAppIsLimitedTo = useLimitedGroups(() => app)\nconst rawActions = useActions(() => app)\nconst actions = computed(() => [\n\t...rawActions.value,\n\tdetailsAction.value,\n])\n</script>\n\n<template>\n\t<tr :class=\"$style.appTableRow\">\n\t\t<td :class=\"$style.appTableRow__nameCell\">\n\t\t\t<NcButton\n\t\t\t\talignment=\"start\"\n\t\t\t\t:title=\"t('appstore', 'Show details')\"\n\t\t\t\t:to=\"detailsRoute\"\n\t\t\t\tvariant=\"tertiary-no-background\"\n\t\t\t\twide>\n\t\t\t\t<template #icon>\n\t\t\t\t\t<NcLoadingIcon v-if=\"app.loading\" :size=\"24\" />\n\t\t\t\t\t<AppIcon v-else :app :size=\"24\" />\n\t\t\t\t</template>\n\t\t\t\t{{ app.name }}\n\t\t\t\t<span v-if=\"app.loading\" class=\"hidden-visually\">({{ t('appstore', 'is loading…') }})</span>\n\t\t\t\t<span class=\"hidden-visually\">({{ t('appstore', 'Show details') }})</span>\n\t\t\t</NcButton>\n\t\t</td>\n\t\t<td>\n\t\t\t<span :class=\"$style.appTableRow__versionCell\">{{ app.version }}</span>\n\t\t</td>\n\t\t<td v-if=\"!isNarrow\">\n\t\t\t<div :class=\"$style.appTableRow__levelCell\">\n\t\t\t\t<BadgeAppLevel v-if=\"app.level\" :level=\"app.level\" />\n\t\t\t\t<BadgeAppDaemon v-if=\"'daemon' in app && app.daemon\" :daemon=\"app.daemon\" />\n\t\t\t</div>\n\t\t</td>\n\t\t<td v-if=\"isWide\">\n\t\t\t<ul\n\t\t\t\tv-if=\"groupsAppIsLimitedTo.length > 0\"\n\t\t\t\t:class=\"$style.appTableRow__groupsCell\"\n\t\t\t\t:title=\"groupsAppIsLimitedTo.map((group) => group.displayName).join(', ')\">\n\t\t\t\t<template v-for=\"group, index in groupsAppIsLimitedTo\" :key=\"group.id\">\n\t\t\t\t\t<li v-if=\"index === 3\" aria-hidden=\"true\">\n\t\t\t\t\t\t…\n\t\t\t\t\t</li>\n\t\t\t\t\t<li :class=\"{ 'hidden-visually': index > 2 }\">\n\t\t\t\t\t\t<NcChip :text=\"group.displayName\" noClose />\n\t\t\t\t\t</li>\n\t\t\t\t</template>\n\t\t\t</ul>\n\t\t</td>\n\t\t<td>\n\t\t\t<div :class=\"$style.appTableRow__actionsCell\">\n\t\t\t\t<AppActions\n\t\t\t\t\t:class=\"$style.appTableRow__actionsCellActions\"\n\t\t\t\t\t:app\n\t\t\t\t\t:actions\n\t\t\t\t\t:iconOnly=\"isNarrow\" />\n\t\t\t</div>\n\t\t</td>\n\t</tr>\n</template>\n\n<style module>\n.appTableRow {\n\theight: calc(var(--default-clickable-area) + var(--default-grid-baseline));\n}\n\n.appTableRow td {\n\tpadding-block: var(--default-grid-baseline);\n\tvertical-align: middle;\n}\n\n.appTableRow__nameCell {\n\t/* Padding is needed to have proper focus-visible */\n\tpadding-inline: var(--default-grid-baseline);\n}\n\n.appTableRow__levelCell {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--default-grid-baseline)\n}\n\n.appTableRow__versionCell {\n\tcolor: var(--color-text-maxcontrast);\n}\n\n.appTableRow__groupsCell {\n\tdisplay: flex;\n\tgap: var(--default-grid-baseline);\n}\n\n.appTableRow__actionsCell {\n\tdisplay: flex;\n\tgap: var(--default-grid-baseline);\n\tjustify-content: end;\n}\n\n.appTableRow__actionsCellActions {\n\twidth: 100%;\n\tjustify-content: end;\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 { t } from '@nextcloud/l10n'\nimport { useElementSize } from '@vueuse/core'\nimport { computed, useTemplateRef } from 'vue'\nimport AppTableRow from './AppTableRow.vue'\n\ndefineProps<{\n\tapps: (IAppstoreApp | IAppstoreExApp)[]\n}>()\n\nconst tableElement = useTemplateRef('table')\nconst { width: tableWidth } = useElementSize(tableElement)\n\nconst isNarrow = computed(() => tableWidth.value < 768)\nconst isWide = computed(() => tableWidth.value >= 1280)\n</script>\n\n<template>\n\t<table\n\t\tref=\"table\"\n\t\t:class=\"[$style.appTable, {\n\t\t\t[$style.appTable_narrow]: isNarrow,\n\t\t\t[$style.appTable_wide]: isWide,\n\t\t}]\">\n\t\t<colgroup>\n\t\t\t<col :class=\"$style.appTable__colName\">\n\t\t\t<col :class=\"$style.appTable__colVersion\">\n\t\t\t<col v-if=\"!isNarrow\" :class=\"$style.appTable__colSupport\">\n\t\t\t<col v-if=\"isWide\" :class=\"$style.appTable__colGroups\">\n\t\t\t<col :class=\"$style.appTable__colActions\">\n\t\t</colgroup>\n\t\t<thead hidden>\n\t\t\t<tr>\n\t\t\t\t<th>{{ t('appstore', 'App name') }}</th>\n\t\t\t\t<th>{{ t('appstore', 'Version') }}</th>\n\t\t\t\t<th v-if=\"!isNarrow\">\n\t\t\t\t\t{{ t('appstore', 'Support level') }}\n\t\t\t\t</th>\n\t\t\t\t<th v-if=\"isWide\">\n\t\t\t\t\t{{ t('appstore', 'Groups') }}\n\t\t\t\t</th>\n\t\t\t\t<th>{{ t('appstore', 'Actions') }}</th>\n\t\t\t</tr>\n\t\t</thead>\n\t\t<tbody>\n\t\t\t<AppTableRow\n\t\t\t\tv-for=\"app in apps\"\n\t\t\t\t:key=\"app.id\"\n\t\t\t\t:app\n\t\t\t\t:isNarrow\n\t\t\t\t:isWide />\n\t\t</tbody>\n\t</table>\n</template>\n\n<style module>\n.appTable {\n\ttable-layout: fixed;\n\twidth: 100%;\n}\n\n.appTable__colName {\n\twidth: 45%;\n}\n\n.appTable_narrow .appTable__colName {\n\twidth: 60%;\n}\n\n.appTable_wide .appTable__colName {\n\twidth: 37%;\n}\n\n.appTable__colSupport {\n\twidth: 15%;\n}\n\n.appTable_wide .appTable__colSupport {\n\twidth: 12%;\n}\n\n.appTable__colActions {\n\twidth: 25%;\n}\n\n.appTable_wide .appTable__colActions {\n\twidth: 20%;\n}\n\n.appTable_narrow .appTable__colActions {\n\twidth: calc(3 * var(--default-grid-baseline) + 2 * var(--default-clickable-area));\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 { IAppBundle, IAppstoreApp } from '../apps.d.ts'\n\nimport { mdiDownloadMultiple } from '@mdi/js'\nimport { t } from '@nextcloud/l10n'\nimport { computed } from 'vue'\nimport NcButton from '@nextcloud/vue/components/NcButton'\nimport NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent'\nimport NcIconSvgWrapper from '@nextcloud/vue/components/NcIconSvgWrapper'\nimport NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon'\nimport AppTable from '../components/AppTable/AppTable.vue'\nimport { useAppsStore } from '../store/apps.ts'\nimport { canEnable } from '../utils/appStatus.ts'\n\nconst store = useAppsStore()\n\nconst appBundles = computed(() => store.bundles.map((bundle) => ({\n\t...bundle,\n\tapps: bundle.appIdentifiers\n\t\t.map((id) => store.apps.find((app) => app.id === id))\n\t\t.filter(Boolean) as IAppstoreApp[],\n\tisEnabling: false,\n})))\n\n/**\n * Check if a bundle can be enabled\n *\n * @param bundle - The bundle to check\n */\nfunction canEnableBundle(bundle: IAppBundle): boolean {\n\treturn bundle.appIdentifiers.every((id) => {\n\t\tconst app = store.apps.find((app) => app.id === id)\n\t\treturn app && (app.active || canEnable(app))\n\t})\n}\n\n/**\n * Check if a bundle is enabled\n *\n * @param bundle - The bundle to check\n */\nfunction isBundleEnabled(bundle: IAppBundle): boolean {\n\treturn bundle.appIdentifiers.every((id) => {\n\t\tconst app = store.apps.find((app) => app.id === id)\n\t\treturn app && app.active\n\t})\n}\n\n/**\n * Enable all apps in a bundle\n *\n * @param bundle - The bundle to enable all apps\n */\nasync function enableAll(bundle: typeof appBundles.value[number]) {\n\tbundle.isEnabling = true\n\tawait store.enableBundle(bundle.id)\n\tbundle.isEnabling = false\n}\n</script>\n\n<template>\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<template v-else>\n\t\t<section v-for=\"bundle of appBundles\" :key=\"bundle.id\">\n\t\t\t<div :class=\"$style.appstoreBundles__header\">\n\t\t\t\t<h3>{{ bundle.name }}</h3>\n\t\t\t\t<NcButton\n\t\t\t\t\tv-if=\"!isBundleEnabled(bundle)\"\n\t\t\t\t\t:disabled=\"!canEnableBundle(bundle)\"\n\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t@click=\"enableAll(bundle)\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<NcIconSvgWrapper :path=\"mdiDownloadMultiple\" />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('appstore', 'Download and enable all') }}\n\t\t\t\t</NcButton>\n\t\t\t</div>\n\n\t\t\t<AppTable\n\t\t\t\t:class=\"$style.appstoreBundles__appTable\"\n\t\t\t\t:apps=\"bundle.apps\" />\n\t\t</section>\n\t</template>\n</template>\n\n<style module>\n.appstoreBundles__header {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: baseline;\n\tjustify-content: space-between;\n\tgap: var(--default-clickable-area);\n\tpadding-inline: var(--default-grid-baseline);\n}\n\n.appstoreBundles__appTable:last-of-type {\n\tmargin-bottom: var(--body-container-margin);\n}\n</style>\n"],"file":"appstore-main.mjs"}