mirror of
https://github.com/nextcloud/server.git
synced 2026-05-25 02:34:12 -04:00
1 line
No EOL
245 KiB
Text
1 line
No EOL
245 KiB
Text
{"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","O","G","u","_","k","n","r","i","s","m","be","Re","Oe","Te","C","we","Q","se","ie","ye","j","Pe","F","Se","$e","v","U","_e","oe","Le","K","ne","Me","ze","Ee","Ie","ae","Ae","z","H","W","Ce","le","Be","De","qe","ue","ve","He","pe","Ze","Ge","Ne","Qe","je","Fe","Ue","Ke","We","Xe","q","Je","ce","he","Ve","re","X","Ye","N","et","B","E","tt","ke","T","J","V","a","o","l","I","de","ge","fe","nt","w","p","c","d","h","R","f","S","ee","te","me","xe","Z","A","x","y","$","P","D","L","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","productName","getCapabilities","idLimitedToGroups","useId","lastModified","release","date","appAuthors","authorName","groupsAppIsLimitedto","group","appstoreUrl","externalResources","resources","appCategories","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","useGroupsStore","searchGroups","getGroupById","groupId","groupsStore","loading","availableGroups","onSearch","useDebounceFn","onSave","onReset","NcSelectUsers","isSvg","svgIcon","response","detailsRoute","detailsAction","mdiInformationOutline","rawActions","AppIcon","tableElement","tableWidth","useElementSize","isNarrow","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/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/store/groups.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\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 v17.0.6 - 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 O=M();function G(u){O=u}var _={exec:()=>null};function k(u,e=\"\"){let t=typeof u==\"string\"?u:u.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var be=(()=>{try{return!!new RegExp(\"(?<=1)(?<!1)\")}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:u=>new RegExp(`^( {0,3}${u})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}#`),htmlBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}<(?:[a-z].*>|!--)`,\"i\"),blockquoteBeginRegex:u=>new RegExp(`^ {0,${Math.min(3,u-1)}}>`)},Re=/^(?:[ \\t]*(?:\\n|$))+/,Oe=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Te=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,C=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,we=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,Q=/ {0,3}(?:[*+-]|\\d{1,9}[.)])/,se=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,ie=k(se).replace(/bull/g,Q).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(),ye=k(se).replace(/bull/g,Q).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(),j=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,Pe=/^[^\\n]+/,F=/(?!\\s*\\])(?:\\\\[\\s\\S]|[^\\[\\]\\\\])+/,Se=k(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",F).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),$e=k(/^(bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,Q).getRegex(),v=\"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\",U=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,_e=k(\"^ {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\",U).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),oe=k(j).replace(\"hr\",C).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]\").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),Le=k(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",oe).getRegex(),K={blockquote:Le,code:Oe,def:Se,fences:Te,heading:we,hr:C,html:_e,lheading:ie,list:$e,newline:Re,paragraph:oe,table:_,text:Pe},ne=k(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",C).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\",v).getRegex(),Me={...K,lheading:ye,table:ne,paragraph:k(j).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",ne).replace(\"blockquote\",\" {0,3}>\").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\",v).getRegex()},ze={...K,html:k(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",U).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:k(j).replace(\"hr\",C).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",ie).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Ee=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,Ie=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,ae=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,z=/[\\p{P}\\p{S}]/u,H=/[\\s\\p{P}\\p{S}]/u,W=/[^\\s\\p{P}\\p{S}]/u,Ce=k(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,H).getRegex(),le=/(?!~)[\\p{P}\\p{S}]/u,Be=/(?!~)[\\s\\p{P}\\p{S}]/u,De=/(?:[^\\s\\p{P}\\p{S}]|~)/u,qe=k(/link|precode-code|html/,\"g\").replace(\"link\",/\\[(?:[^\\[\\]`]|(?<a>`+)[^`]+\\k<a>(?!`))*?\\]\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)]|\\((?:\\\\[\\s\\S]|[^\\\\\\(\\)])*\\))*\\)/).replace(\"precode-\",be?\"(?<!`)()\":\"(^^|[^`])\").replace(\"code\",/(?<b>`+)[^`]+\\k<b>(?!`)/).replace(\"html\",/<(?! )[^<>]*?>/).getRegex(),ue=/^(?:\\*+(?:((?!\\*)punct)|([^\\s*]))?)|^_+(?:((?!_)punct)|([^\\s_]))?/,ve=k(ue,\"u\").replace(/punct/g,z).getRegex(),He=k(ue,\"u\").replace(/punct/g,le).getRegex(),pe=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",Ze=k(pe,\"gu\").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Ge=k(pe,\"gu\").replace(/notPunctSpace/g,De).replace(/punctSpace/g,Be).replace(/punct/g,le).getRegex(),Ne=k(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Qe=k(/^~~?(?:((?!~)punct)|[^\\s~])/,\"u\").replace(/punct/g,z).getRegex(),je=\"^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)\",Fe=k(je,\"gu\").replace(/notPunctSpace/g,W).replace(/punctSpace/g,H).replace(/punct/g,z).getRegex(),Ue=k(/\\\\(punct)/,\"gu\").replace(/punct/g,z).getRegex(),Ke=k(/^<(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(),We=k(U).replace(\"(?:-->|$)\",\"-->\").getRegex(),Xe=k(\"^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\",We).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\[\\s\\S]|[^\\[\\]\\\\])*\\]|\\\\[\\s\\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\\])|[^\\[\\]\\\\`])*?/,Je=k(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]+(?:\\n[ \\t]*)?|\\n[ \\t]*)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),ce=k(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",F).getRegex(),he=k(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",F).getRegex(),Ve=k(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",ce).replace(\"nolink\",he).getRegex(),re=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,X={_backpedal:_,anyPunctuation:Ue,autolink:Ke,blockSkip:qe,br:ae,code:Ie,del:_,delLDelim:_,delRDelim:_,emStrongLDelim:ve,emStrongRDelimAst:Ze,emStrongRDelimUnd:Ne,escape:Ee,link:Je,nolink:he,punctuation:Ce,reflink:ce,reflinkSearch:Ve,tag:Xe,text:Ae,url:_},Ye={...X,link:k(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:k(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},N={...X,emStrongRDelimAst:Ge,emStrongLDelim:He,delLDelim:Qe,delRDelim:Fe,url:k(/^((?:protocol):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/).replace(\"protocol\",re).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:k(/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|protocol:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/).replace(\"protocol\",re).getRegex()},et={...N,br:k(ae).replace(\"{2,}\",\"*\").getRegex(),text:k(N.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},B={normal:K,gfm:Me,pedantic:ze},E={normal:X,gfm:N,breaks:et,pedantic:Ye};var tt={\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"},ke=u=>tt[u];function T(u,e){if(e){if(m.escapeTest.test(u))return u.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(u))return u.replace(m.escapeReplaceNoEncode,ke);return u}function J(u){try{u=encodeURI(u).replace(m.percentDecode,\"%\")}catch{return null}return u}function V(u,e){let t=u.replace(m.findPipe,(i,s,a)=>{let o=!1,l=s;for(;--l>=0&&a[l]===\"\\\\\";)o=!o;return o?\"|\":\" |\"}),n=t.split(m.splitPipe),r=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(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function I(u,e,t){let n=u.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=u.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return u.slice(0,n-r)}function de(u,e){if(u.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<u.length;n++)if(u[n]===\"\\\\\")n++;else if(u[n]===e[0])t++;else if(u[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function ge(u,e=0){let t=e,n=\"\";for(let r of u)if(r===\"\t\"){let i=4-t%4;n+=\" \".repeat(i),t+=i}else n+=r,t++;return n}function fe(u,e,t,n,r){let i=e.href,s=e.title||null,a=u[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let o={type:u[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:a,tokens:n.inlineTokens(a)};return n.state.inLink=!1,o}function nt(u,e,t){let n=u.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[a]=s;return a.length>=r.length?i.slice(r.length):i}).join(`\n`)}var w=class{options;rules;lexer;constructor(e){this.options=e||O}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=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:I(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=nt(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:r}}}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 r=I(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],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:I(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=I(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let a=!1,o=[],l;for(l=0;l<n.length;l++)if(this.rules.other.blockquoteStart.test(n[l]))o.push(n[l]),a=!0;else if(!a)o.push(n[l]);else break;n=n.slice(l);let p=o.join(`\n`),c=p.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${p}`:p,i=i?`${i}\n${c}`:c;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=d,n.length===0)break;let h=s.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);s[s.length-1]=S,r=r.substring(0,r.length-R.raw.length)+S.raw,i=i.substring(0,i.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);s[s.length-1]=S,r=r.substring(0,r.length-h.raw.length)+S.raw,i=i.substring(0,i.length-R.raw.length)+S.raw,n=f.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),a=!1;for(;e;){let l=!1,p=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let d=ge(t[2].split(`\n`,1)[0],t[1].length),h=e.split(`\n`,1)[0],R=!d.trim(),f=0;if(this.options.pedantic?(f=2,c=d.trimStart()):R?f=t[1].length+1:(f=d.search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=d.slice(f),f+=t[1].length),R&&this.rules.other.blankLine.test(h)&&(p+=h+`\n`,e=e.substring(h.length+1),l=!0),!l){let S=this.rules.other.nextBulletRegex(f),Y=this.rules.other.hrRegex(f),ee=this.rules.other.fencesBeginRegex(f),te=this.rules.other.headingBeginRegex(f),me=this.rules.other.htmlBeginRegex(f),xe=this.rules.other.blockquoteBeginRegex(f);for(;e;){let Z=e.split(`\n`,1)[0],A;if(h=Z,this.options.pedantic?(h=h.replace(this.rules.other.listReplaceNesting,\" \"),A=h):A=h.replace(this.rules.other.tabCharGlobal,\" \"),ee.test(h)||te.test(h)||me.test(h)||xe.test(h)||S.test(h)||Y.test(h))break;if(A.search(this.rules.other.nonSpaceChar)>=f||!h.trim())c+=`\n`+A.slice(f);else{if(R||d.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||ee.test(d)||te.test(d)||Y.test(d))break;c+=`\n`+h}R=!h.trim(),p+=Z+`\n`,e=e.substring(Z.length+1),d=A.slice(f)}}i.loose||(a?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(a=!0)),i.items.push({type:\"list_item\",raw:p,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),i.raw+=p}let o=i.items.at(-1);if(o)o.raw=o.raw.trimEnd(),o.text=o.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let l of i.items){if(this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]),l.task){if(l.text=l.text.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0]?.type===\"text\"||l.tokens[0]?.type===\"paragraph\"){l.tokens[0].raw=l.tokens[0].raw.replace(this.rules.other.listReplaceTask,\"\"),l.tokens[0].text=l.tokens[0].text.replace(this.rules.other.listReplaceTask,\"\");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,\"\");break}}let p=this.rules.other.listTaskCheckbox.exec(l.raw);if(p){let c={type:\"checkbox\",raw:p[0]+\" \",checked:p[0]!==\"[ ]\"};l.checked=c.checked,i.loose?l.tokens[0]&&[\"paragraph\",\"text\"].includes(l.tokens[0].type)&&\"tokens\"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=c.raw+l.tokens[0].raw,l.tokens[0].text=c.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(c)):l.tokens.unshift({type:\"paragraph\",raw:c.raw,text:c.raw,tokens:[c]}):l.tokens.unshift(c)}}if(!i.loose){let p=l.tokens.filter(d=>d.type===\"space\"),c=p.length>0&&p.some(d=>this.rules.other.anyLine.test(d.raw));i.loose=c}}if(i.loose)for(let l of i.items){l.loose=!0;for(let p of l.tokens)p.type===\"text\"&&(p.type=\"paragraph\")}return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=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],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let a of r)this.rules.other.tableAlignRight.test(a)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(a)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(a)?s.align.push(\"left\"):s.align.push(null);for(let a=0;a<n.length;a++)s.header.push({text:n[a],tokens:this.lexer.inline(n[a]),header:!0,align:s.align[a]});for(let a of i)s.rows.push(V(a,s.header.length).map((o,l)=>({text:o,tokens:this.lexer.inline(o),header:!1,align:s.align[l]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:\"heading\",raw:t[0],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 s=I(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=de(t[2],\"()\");if(s===-2)return;if(s>-1){let o=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),fe(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.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 r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return fe(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[3]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a)continue;if(o=[...a].length,r[3]||r[4]){l+=o;continue}else if((r[5]||r[6])&&s%3&&!((s+o)%3)){p+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l+p);let d=[...r[0]][0].length,h=e.slice(0,s+r.index+d+o);if(Math.min(s,o)%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,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(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 r=this.rules.inline.delLDelim.exec(e);if(!r)return;if(!(r[1]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,a,o,l=s,p=this.rules.inline.delRDelim;for(p.lastIndex=0,t=t.slice(-1*e.length+s);(r=p.exec(t))!==null;){if(a=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!a||(o=[...a].length,o!==s))continue;if(r[3]||r[4]){l+=o;continue}if(l-=o,l>0)continue;o=Math.min(o,o+l);let c=[...r[0]][0].length,d=e.slice(0,s+r.index+c+o),h=d.slice(s,-s);return{type:\"del\",raw:d,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,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 u{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||O,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:B.normal,inline:E.normal};this.options.pedantic?(t.block=B.pedantic,t.inline=E.pedantic):this.options.gfm&&(t.block=B.gfm,this.options.breaks?t.inline=E.breaks:t.inline=E.gfm),this.tokenizer.rules=t}static get rules(){return{block:B,inline:E}}static lex(e,t){return new u(t).lex(e)}static lexInline(e,t){return new u(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){for(this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.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 s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.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 s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.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 s=1/0,a=e.slice(1),o;this.options.extensions.startBlock.forEach(l=>{o=l.call({lexer:this},a),typeof o==\"number\"&&o>=0&&(s=Math.min(s,o))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.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 s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}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,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!==null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!==null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!==null;)i=r[2]?r[2].length:0,n=n.slice(0,r.index+i)+\"[\"+\"a\".repeat(r[0].length-i-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);n=this.options.hooks?.emStrongMask?.call({lexer:this},n)??n;let s=!1,a=\"\";for(;e;){s||(a=\"\"),s=!1;let o;if(this.options.extensions?.inline?.some(p=>(o=p.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let p=t.at(-1);o.type===\"text\"&&p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e,n,a)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let l=e;if(this.options.extensions?.startInline){let p=1/0,c=e.slice(1),d;this.options.extensions.startInline.forEach(h=>{d=h.call({lexer:this},c),typeof d==\"number\"&&d>=0&&(p=Math.min(p,d))}),p<1/0&&p>=0&&(l=e.substring(0,p+1))}if(o=this.tokenizer.inlineText(l)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(a=o.raw.slice(-1)),s=!0;let p=t.at(-1);p?.type===\"text\"?(p.raw+=o.raw,p.text+=o.text):t.push(o);continue}if(e){let p=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return t}};var y=class{options;parser;constructor(e){this.options=e||O}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+T(r)+'\">'+(n?i:T(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:T(i,!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,r=\"\";for(let a=0;a<e.items.length;a++){let o=e.items[a];r+=this.listitem(o)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\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 i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let a=0;a<s.length;a++)n+=this.tablecell(s[a]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</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>${T(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 r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+T(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return T(n);e=i;let s=`<img src=\"${e}\" alt=\"${T(n)}\"`;return t&&(s+=` title=\"${T(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:T(e.text)}};var $=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 u{options;renderer;textRenderer;constructor(e){this.options=e||O,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 $}static parse(e,t){return new u(t).parse(e)}static parseInline(e,t){return new u(t).parseInline(e)}parse(e){this.renderer.parser=this;let t=\"\";for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let s=r,a=this.options.extensions.renderers[s.type].call({parser:this},s);if(a!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"def\",\"paragraph\",\"text\"].includes(s.type)){t+=a||\"\";continue}}let i=r;switch(i.type){case\"space\":{t+=this.renderer.space(i);break}case\"hr\":{t+=this.renderer.hr(i);break}case\"heading\":{t+=this.renderer.heading(i);break}case\"code\":{t+=this.renderer.code(i);break}case\"table\":{t+=this.renderer.table(i);break}case\"blockquote\":{t+=this.renderer.blockquote(i);break}case\"list\":{t+=this.renderer.list(i);break}case\"checkbox\":{t+=this.renderer.checkbox(i);break}case\"html\":{t+=this.renderer.html(i);break}case\"def\":{t+=this.renderer.def(i);break}case\"paragraph\":{t+=this.renderer.paragraph(i);break}case\"text\":{t+=this.renderer.text(i);break}default:{let s='Token with \"'+i.type+'\" type was not found.';if(this.options.silent)return console.error(s),\"\";throw new Error(s)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"checkbox\":{n+=t.checkbox(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let a='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(a),\"\";throw new Error(a)}}}return n}};var P=class{options;block;constructor(e){this.options=e||O}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 D=class{defaults=M();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=b;Renderer=y;TextRenderer=$;Lexer=x;Tokenizer=w;Hooks=P;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let a of s)n=n.concat(this.walkTokens(a.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let a=i[s].flat(1/0);n=n.concat(this.walkTokens(a,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...a){let o=i.renderer.apply(this,a);return o===!1&&(o=s.apply(this,a)),o}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new y(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let a=s,o=n.renderer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new w(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let a=s,o=n.tokenizer[a],l=i[a];i[a]=(...p)=>{let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new P;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let a=s,o=n.hooks[a],l=i[a];P.passThroughHooks.has(s)?i[a]=p=>{if(this.defaults.async&&P.passThroughHooksRespectAsync.has(s))return(async()=>{let d=await o.call(i,p);return l.call(i,d)})();let c=o.call(i,p);return l.call(i,c)}:i[a]=(...p)=>{if(this.defaults.async)return(async()=>{let d=await o.apply(i,p);return d===!1&&(d=await l.apply(i,p)),d})();let c=o.apply(i,p);return c===!1&&(c=l.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(a){let o=[];return o.push(s.call(this,a)),i&&(o=o.concat(i.call(this,a))),o}}this.defaults={...this.defaults,...r}}),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,r)=>{let i={...r},s={...this.defaults,...i},a=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return a(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 a(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return a(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=e),s.async)return(async()=>{let o=s.hooks?await s.hooks.preprocess(n):n,p=await(s.hooks?await s.hooks.provideLexer(e):e?x.lex:x.lexInline)(o,s),c=s.hooks?await s.hooks.processAllTokens(p):p;s.walkTokens&&await Promise.all(this.walkTokens(c,s.walkTokens));let h=await(s.hooks?await s.hooks.provideParser(e):e?b.parse:b.parseInline)(c,s);return s.hooks?await s.hooks.postprocess(h):h})().catch(a);try{s.hooks&&(n=s.hooks.preprocess(n));let l=(s.hooks?s.hooks.provideLexer(e):e?x.lex:x.lexInline)(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let c=(s.hooks?s.hooks.provideParser(e):e?b.parse:b.parseInline)(l,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(o){return a(o)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+T(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var L=new D;function g(u,e){return L.parse(u,e)}g.options=g.setOptions=function(u){return L.setOptions(u),g.defaults=L.defaults,G(g.defaults),g};g.getDefaults=M;g.defaults=O;g.use=function(...u){return L.use(...u),g.defaults=L.defaults,G(g.defaults),g};g.walkTokens=function(u,e){return L.walkTokens(u,e)};g.parseInline=L.parseInline;g.Parser=b;g.parser=b.parse;g.Renderer=y;g.TextRenderer=$;g.Lexer=x;g.lexer=x.lex;g.Tokenizer=w;g.Hooks=P;g.parse=g;var Qt=g.options,jt=g.setOptions,Ft=g.use,Ut=g.walkTokens,Kt=g.parseInline,Wt=g,Xt=b.parse,Jt=x.lex;export{P as Hooks,x as Lexer,D as Marked,b as Parser,y as Renderer,$ as TextRenderer,w as Tokenizer,O as defaults,M as getDefaults,Jt as lexer,g as marked,Qt as options,Wt as parse,Kt as parseInline,Xt as parser,jt as setOptions,Ft as use,Ut 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.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-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 { getCapabilities } from '@nextcloud/capabilities'\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 { useAppsStore } from '../../store/apps.ts'\n\nconst { app } = defineProps<{ app: IAppstoreApp | IAppstoreExApp }>()\n\nconst store = useAppsStore()\n\n// @ts-expect-error - missing types\nconst productName = getCapabilities().theming.productName as string\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 groupsAppIsLimitedto = computed(() => {\n\tif (!app.groups) {\n\t\treturn []\n\t}\n\n\treturn app.groups.map((group) => ({ id: group, name: group }))\n})\n\nconst appstoreUrl = computed(() => `https://apps.nextcloud.com/apps/${app.id}`)\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\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.missingMinNextcloudVersion || app.missingMaxNextcloudVersion\" type=\"warning\">\n\t\t\t\t<template v-if=\"app.missingMinNextcloudVersion\">\n\t\t\t\t\t{{ t('appstore', 'This app has no minimum {productName} version assigned. This will be an error in the future.', { productName }) }}\n\t\t\t\t</template>\n\t\t\t\t<template v-if=\"app.missingMaxNextcloudVersion\">\n\t\t\t\t\t{{ t('appstore', 'This app has no maximum {productName} version assigned. This will be an error in the future.', { productName }) }}\n\t\t\t\t</template>\n\t\t\t</NcNoteCard>\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<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.name }}\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.forceEnableApp(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 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.fromAppStore\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-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 { defineStore } from 'pinia'\nimport { computed, ref } from 'vue'\nimport logger from '../utils/logger.ts'\n\nexport const useGroupsStore = defineStore('groups', () => {\n\tconst groups = ref(new Map<string, NcSelectUsersModel>())\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}\n})\n","<!--\n - SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport 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 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'\n\nconst { app, isNarrow } = defineProps<{\n\tapp: IAppstoreApp | IAppstoreExApp\n\tisNarrow?: 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 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>\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__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)\n</script>\n\n<template>\n\t<table ref=\"table\" :class=\"[$style.appTable, { [$style.appTable_narrow]: isNarrow }]\">\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 :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>{{ 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</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__colSupport {\n\twidth: 15%;\n}\n\n.appTable__colActions {\n\twidth: 25%;\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"} |