${V(e,!0)}`}br(e){return"An error occurred:
"+V(a.message+"",!0)+"";return t?Promise.resolve(s):s}if(t)return Promise.reject(a);throw a}}},ne=new Bs;function C(e,t){return ne.parse(e,t)}C.options=C.setOptions=function(e){return ne.setOptions(e),C.defaults=ne.defaults,rt(C.defaults),C},C.getDefaults=Ve,C.defaults=re,C.use=function(...e){return ne.use(...e),C.defaults=ne.defaults,rt(C.defaults),C},C.walkTokens=function(e,t){return ne.walkTokens(e,t)},C.parseInline=ne.parseInline,C.Parser=Q,C.parser=Q.parse,C.Renderer=Ie,C.TextRenderer=at,C.Lexer=F,C.lexer=F.lex,C.Tokenizer=ze,C.Hooks=fe,C.parse=C,C.options,C.setOptions,C.use,C.walkTokens,C.parseInline,Q.parse,F.lex;function Ps(e,t){const a=new C.Renderer;return a.blockquote=Ms,a.link=qs,a.image=Ns,$(()=>{const s=t?.minHeadingLevel??1;a.heading=Os(s);const n=be(e).trim();return la.sanitize(C(n,{async:!1,renderer:a,gfm:!1,breaks:!1,pedantic:!1}),{ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","strong","p","a","ul","ol","li","em","del","blockquote"]})})}function qs({href:e,title:t,text:a}){let s;try{s=new URL(e)}catch{return""}if(s.protocol!=="http:"&&s.protocol!=="https:")return"";let n='"+a.replaceAll(/(?",n}function Ns({title:e,text:t}){return t||(e??"")}function Ms({text:e}){return`
${e}`}function Os(e){return({text:t,depth:a})=>(a=Math.min(6,a+(e-1)),`
An error occurred:
"+V(a.message+"",!0)+"";return t?Promise.resolve(s):s}if(t)return Promise.reject(a);throw a}}},ne=new Bs;function C(e,t){return ne.parse(e,t)}C.options=C.setOptions=function(e){return ne.setOptions(e),C.defaults=ne.defaults,rt(C.defaults),C},C.getDefaults=Ve,C.defaults=re,C.use=function(...e){return ne.use(...e),C.defaults=ne.defaults,rt(C.defaults),C},C.walkTokens=function(e,t){return ne.walkTokens(e,t)},C.parseInline=ne.parseInline,C.Parser=Q,C.parser=Q.parse,C.Renderer=Ie,C.TextRenderer=at,C.Lexer=F,C.lexer=F.lex,C.Tokenizer=ze,C.Hooks=fe,C.parse=C,C.options,C.setOptions,C.use,C.walkTokens,C.parseInline,Q.parse,F.lex;function Ps(e,t){const a=new C.Renderer;return a.blockquote=Ms,a.link=qs,a.image=Ns,$(()=>{const s=t?.minHeadingLevel??1;a.heading=Os(s);const n=be(e).trim();return la.sanitize(C(n,{async:!1,renderer:a,gfm:!1,breaks:!1,pedantic:!1}),{ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","strong","p","a","ul","ol","li","em","del","blockquote"]})})}function qs({href:e,title:t,text:a}){let s;try{s=new URL(e)}catch{return""}if(s.protocol!=="http:"&&s.protocol!=="https:")return"";let n='"+a.replaceAll(/(?",n}function Ns({title:e,text:t}){return t||(e??"")}function Ms({text:e}){return`
${e}`}function Os(e){return({text:t,depth:a})=>(a=Math.min(6,a+(e-1)),`
{{ t('appstore', 'Type') }}: {{ app?.daemon.accepts_deploy_id }}
\n\t\t\t{{ t('appstore', 'Name') }}: {{ app?.daemon.name }}
\n\t\t\t{{ t('appstore', 'Display Name') }}: {{ app?.daemon.display_name }}
\n\t\t\t{{ t('appstore', 'GPUs support') }}: {{ gpuSupport }}
\n\t\t\t{{ t('appstore', 'Compute device') }}: {{ app?.daemon?.deploy_config?.computeDevice?.label }}
\n\t\t'+(n?r:O(r,!0))+`\n`:\"\"+(n?r:O(r,!0))+`\n`}blockquote({tokens:e}){return`\n${this.parser.parse(e)}\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`
${this.parser.parseInline(e)}
\n`}table(e){let t=\"\",n=\"\";for(let r=0;r${O(e,!0)}`}br(e){return\"An error occurred:
\"+O(n.message+\"\",!0)+\"\";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}};var z=new q;function g(l,e){return z.parse(l,e)}g.options=g.setOptions=function(l){return z.setOptions(l),g.defaults=z.defaults,N(g.defaults),g};g.getDefaults=M;g.defaults=T;g.use=function(...l){return z.use(...l),g.defaults=z.defaults,N(g.defaults),g};g.walkTokens=function(l,e){return z.walkTokens(l,e)};g.parseInline=z.parseInline;g.Parser=b;g.parser=b.parse;g.Renderer=y;g.TextRenderer=L;g.Lexer=x;g.lexer=x.lex;g.Tokenizer=w;g.Hooks=P;g.parse=g;var Ft=g.options,Ut=g.setOptions,Kt=g.use,Wt=g.walkTokens,Xt=g.parseInline,Jt=g,Vt=b.parse,Yt=x.lex;export{P as Hooks,x as Lexer,q as Marked,b as Parser,y as Renderer,L as TextRenderer,w as Tokenizer,T as defaults,M as getDefaults,Yt as lexer,g as marked,Ft as options,Jt as parse,Xt as parseInline,Vt as parser,Ut as setOptions,Kt as use,Wt as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Tokens } from 'marked'\nimport type { MaybeRefOrGetter } from 'vue'\n\nimport dompurify from 'dompurify'\nimport { marked } from 'marked'\nimport { computed, toValue } from 'vue'\n\nexport interface MarkdownOptions {\n\tminHeadingLevel?: number\n}\n\n/**\n * Render Markdown to HTML\n *\n * @param text - The Markdown source\n * @param options - Markdown options\n */\nexport function useMarkdown(text: MaybeRefOrGetter
${text}`\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 `
\n\t\t\t\t\t{{ appAuthors }}\n\t\t\t\t
\n\t\t\t\n\t\t\t\t\t{{ appCategories }}\n\t\t\t\t
\n\t\t\t{{ t('appstore', 'Restrict the usage of {app} to members of the following groups.', { app: app.name }) }}
\n\t\t| {{ t('appstore', 'App name') }} | \n\t\t\t\t{{ t('appstore', 'Version') }} | \n\t\t\t\t\n\t\t\t\t\t{{ t('appstore', 'Support level') }}\n\t\t\t\t | \n\t\t\t\t\n\t\t\t\t\t{{ t('appstore', 'Groups') }}\n\t\t\t\t | \n\t\t\t\t{{ t('appstore', 'Actions') }} | \n\t\t\t
|---|
{{ t('appstore', 'Type') }}: {{ app?.daemon.accepts_deploy_id }}
\n\t\t\t{{ t('appstore', 'Name') }}: {{ app?.daemon.name }}
\n\t\t\t{{ t('appstore', 'Display Name') }}: {{ app?.daemon.display_name }}
\n\t\t\t{{ t('appstore', 'GPUs support') }}: {{ gpuSupport }}
\n\t\t\t{{ t('appstore', 'Compute device') }}: {{ app?.daemon?.deploy_config?.computeDevice?.label }}
\n\t\t'+(n?r:O(r,!0))+`\n`:\"\"+(n?r:O(r,!0))+`\n`}blockquote({tokens:e}){return`\n${this.parser.parse(e)}\n`}html({text:e}){return e}def(e){return\"\"}heading({tokens:e,depth:t}){return`
${this.parser.parseInline(e)}
\n`}table(e){let t=\"\",n=\"\";for(let r=0;r${O(e,!0)}`}br(e){return\"An error occurred:
\"+O(n.message+\"\",!0)+\"\";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}};var z=new q;function g(l,e){return z.parse(l,e)}g.options=g.setOptions=function(l){return z.setOptions(l),g.defaults=z.defaults,N(g.defaults),g};g.getDefaults=M;g.defaults=T;g.use=function(...l){return z.use(...l),g.defaults=z.defaults,N(g.defaults),g};g.walkTokens=function(l,e){return z.walkTokens(l,e)};g.parseInline=z.parseInline;g.Parser=b;g.parser=b.parse;g.Renderer=y;g.TextRenderer=L;g.Lexer=x;g.lexer=x.lex;g.Tokenizer=w;g.Hooks=P;g.parse=g;var Ft=g.options,Ut=g.setOptions,Kt=g.use,Wt=g.walkTokens,Xt=g.parseInline,Jt=g,Vt=b.parse,Yt=x.lex;export{P as Hooks,x as Lexer,q as Marked,b as Parser,y as Renderer,L as TextRenderer,w as Tokenizer,T as defaults,M as getDefaults,Yt as lexer,g as marked,Ft as options,Jt as parse,Xt as parseInline,Vt as parser,Ut as setOptions,Kt as use,Wt as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { Tokens } from 'marked'\nimport type { MaybeRefOrGetter } from 'vue'\n\nimport dompurify from 'dompurify'\nimport { marked } from 'marked'\nimport { computed, toValue } from 'vue'\n\nexport interface MarkdownOptions {\n\tminHeadingLevel?: number\n}\n\n/**\n * Render Markdown to HTML\n *\n * @param text - The Markdown source\n * @param options - Markdown options\n */\nexport function useMarkdown(text: MaybeRefOrGetter
${text}`\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 `
\n\t\t\t\t\t{{ appAuthors }}\n\t\t\t\t
\n\t\t\t\n\t\t\t\t\t{{ appCategories }}\n\t\t\t\t
\n\t\t\t{{ t('appstore', 'Restrict the usage of {app} to members of the following groups.', { app: app.name }) }}
\n\t\t| {{ t('appstore', 'App name') }} | \n\t\t\t\t{{ t('appstore', 'Version') }} | \n\t\t\t\t\n\t\t\t\t\t{{ t('appstore', 'Support level') }}\n\t\t\t\t | \n\t\t\t\t\n\t\t\t\t\t{{ t('appstore', 'Groups') }}\n\t\t\t\t | \n\t\t\t\t{{ t('appstore', 'Actions') }} | \n\t\t\t
|---|