'+(a?n:V(n,!0))+`
+`)+s.raw,i.text+=`
+`+s.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=i.text):a.push(s);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,a}inline(t,a=[]){return this.inlineQueue.push({src:t,tokens:a}),a}inlineTokens(t,a=[]){this.tokenizer.lexer=this;let l=t;if(this.tokens.links){let i=Object.keys(this.tokens.links);i.length>0&&(l=l.replace(this.tokenizer.rules.inline.reflinkSearch,p=>i.includes(p.slice(p.lastIndexOf("[")+1,-1))?"["+"a".repeat(p.length-2)+"]":p))}l=l.replace(this.tokenizer.rules.inline.anyPunctuation,"++"),l=l.replace(this.tokenizer.rules.inline.blockSkip,(i,p,c)=>{let f=c?c.length:0;return i.slice(0,f)+"["+"a".repeat(i.length-f-2)+"]"}),l=this.options.hooks?.emStrongMask?.call({lexer:this},l)??l;let n=!1,s="",r=1/0;for(;t;){if(t.length'+(a?n:V(n,!0))+`
`:""+(a?n:V(n,!0))+`
`}blockquote({tokens:e}){return`${this.parser.parse(e)}`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`
${this.parser.parseInline(e)}
-`}table(e){let t="",a="";for(let n=0;n${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 qs;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 Ns(e,t){const a=new C.Renderer;return a.blockquote=Gs,a.link=Ms,a.image=Os,$(()=>{const s=t?.minHeadingLevel??1;a.heading=js(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 Ms({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 Os({title:e,text:t}){return t||(e??"")}function Gs({text:e}){return`
${e}`}function js(e){return({text:t,depth:a})=>(a=Math.min(6,a+(e-1)),`
${V(e,!0)}`}br(e){return"An error occurred:
"+V(a.message+"",!0)+"";return t?Promise.resolve(l):l}if(t)return Promise.reject(a);throw a}}},ne=new qs;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 Ns(e,t){const a=new C.Renderer;return a.blockquote=Gs,a.link=Ms,a.image=Os,$(()=>{const l=t?.minHeadingLevel??1;a.heading=js(l);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 Ms({href:e,title:t,text:a}){let l;try{l=new URL(e)}catch{return""}if(l.protocol!=="http:"&&l.protocol!=="https:")return"";let n='"+a.replaceAll(/(?",n}function Os({title:e,text:t}){return t||(e??"")}function Gs({text:e}){return`
${e}`}function js(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 D;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 Kt=g.options,Wt=g.setOptions,Xt=g.use,Jt=g.walkTokens,Vt=g.parseInline,Yt=g,en=b.parse,tn=x.lex;export{P as Hooks,x as Lexer,D as Marked,b as Parser,y as Renderer,L as TextRenderer,w as Tokenizer,T as defaults,M as getDefaults,tn as lexer,g as marked,Kt as options,Yt as parse,Vt as parseInline,en as parser,Wt as setOptions,Xt as use,Jt 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 M=new D;function g(l,e){return M.parse(l,e)}g.options=g.setOptions=function(l){return M.setOptions(l),g.defaults=M.defaults,N(g.defaults),g};g.getDefaults=z;g.defaults=T;g.use=function(...l){return M.use(...l),g.defaults=M.defaults,N(g.defaults),g};g.walkTokens=function(l,e){return M.walkTokens(l,e)};g.parseInline=M.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 Kt=g.options,Wt=g.setOptions,Xt=g.use,Jt=g.walkTokens,Vt=g.parseInline,Yt=g,en=b.parse,tn=x.lex;export{P as Hooks,x as Lexer,D as Marked,b as Parser,y as Renderer,L as TextRenderer,w as Tokenizer,T as defaults,z as getDefaults,tn as lexer,g as marked,Kt as options,Yt as parse,Vt as parseInline,en as parser,Wt as setOptions,Xt as use,Jt 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
|---|