'+(n?a:F(a,!0))+`
-`:""+(n?a:F(a,!0))+`
+`+a.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(a);continue}if(t){let l="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(l);break}else throw new Error(l)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){this.tokenizer.lexer=this;let s=t,a=null;if(this.tokens.links){let i=Object.keys(this.tokens.links);if(i.length>0)for(;(a=this.tokenizer.rules.inline.reflinkSearch.exec(s))!==null;)i.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,a.index)+"["+"a".repeat(a[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(a=this.tokenizer.rules.inline.anyPunctuation.exec(s))!==null;)s=s.slice(0,a.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let r;for(;(a=this.tokenizer.rules.inline.blockSkip.exec(s))!==null;)r=a[2]?a[2].length:0,s=s.slice(0,a.index+r)+"["+"a".repeat(a[0].length-r-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);s=this.options.hooks?.emStrongMask?.call({lexer:this},s)??s;let l=!1,c="";for(;t;){l||(c=""),l=!1;let i;if(this.options.extensions?.inline?.some(p=>(i=p.call({lexer:this},t,n))?(t=t.substring(i.raw.length),n.push(i),!0):!1))continue;if(i=this.tokenizer.escape(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.tag(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.link(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(i.raw.length);let p=n.at(-1);i.type==="text"&&p?.type==="text"?(p.raw+=i.raw,p.text+=i.text):n.push(i);continue}if(i=this.tokenizer.emStrong(t,s,c)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.codespan(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.br(t)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.del(t,s,c)){t=t.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.autolink(t)){t=t.substring(i.raw.length),n.push(i);continue}if(!this.state.inLink&&(i=this.tokenizer.url(t))){t=t.substring(i.raw.length),n.push(i);continue}let h=t;if(this.options.extensions?.startInline){let p=1/0,b=t.slice(1),f;this.options.extensions.startInline.forEach(z=>{f=z.call({lexer:this},b),typeof f=="number"&&f>=0&&(p=Math.min(p,f))}),p<1/0&&p>=0&&(h=t.substring(0,p+1))}if(i=this.tokenizer.inlineText(h)){t=t.substring(i.raw.length),i.raw.slice(-1)!=="_"&&(c=i.raw.slice(-1)),l=!0;let p=n.at(-1);p?.type==="text"?(p.raw+=i.raw,p.text+=i.text):n.push(i);continue}if(t){let p="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(p);break}else throw new Error(p)}}return n}},De=class{options;parser;constructor(e){this.options=e||le}space(e){return""}code({text:e,lang:t,escaped:n}){let s=(t||"").match(O.notSpaceStart)?.[0],a=e.replace(O.endingNewline,"")+`
+`;return s?''+(n?a:V(a,!0))+`
+`:""+(n?a:V(a,!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)}
@@ -56,6 +56,6 @@ ${this.parser.parse(e)} `}tablerow({text:e}){return`${F(e,!0)}`}br(e){return"An error occurred:
"+F(n.message+"",!0)+"";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}},ae=new Is;function I(e,t){return ae.parse(e,t)}I.options=I.setOptions=function(e){return ae.setOptions(e),I.defaults=ae.defaults,st(I.defaults),I},I.getDefaults=Qe,I.defaults=le,I.use=function(...e){return ae.use(...e),I.defaults=ae.defaults,st(I.defaults),I},I.walkTokens=function(e,t){return ae.walkTokens(e,t)},I.parseInline=ae.parseInline,I.Parser=U,I.parser=U.parse,I.Renderer=De,I.TextRenderer=et,I.Lexer=Q,I.lexer=Q.lex,I.Tokenizer=Re,I.Hooks=ge,I.parse=I,I.options,I.setOptions,I.use,I.walkTokens,I.parseInline,U.parse,Q.lex;function Cs(e,t){const n=new I.Renderer;return n.blockquote=Bs,n.link=Ls,n.image=Es,v(()=>{const s=t?.minHeadingLevel??1;n.heading=Ps(s);const a=Be(e).trim();return ea.sanitize(I(a,{async:!1,renderer:n,gfm:!1,breaks:!1,pedantic:!1}),{ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","strong","p","a","ul","ol","li","em","del","blockquote"]})})}function Ls({href:e,title:t,text:n}){let s;try{s=new URL(e)}catch{return""}if(s.protocol!=="http:"&&s.protocol!=="https:")return"";let a='"+n.replaceAll(/(?",a}function Es({title:e,text:t}){return t||(e??"")}function Bs({text:e}){return`
${e}`}function Ps(e){return({text:t,depth:n})=>(n=Math.min(6,n+(e-1)),`
${V(e,!0)}`}br(e){return"An error occurred:
"+V(n.message+"",!0)+"";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}},ae=new zs;function I(e,t){return ae.parse(e,t)}I.options=I.setOptions=function(e){return ae.setOptions(e),I.defaults=ae.defaults,nt(I.defaults),I},I.getDefaults=Ue,I.defaults=le,I.use=function(...e){return ae.use(...e),I.defaults=ae.defaults,nt(I.defaults),I},I.walkTokens=function(e,t){return ae.walkTokens(e,t)},I.parseInline=ae.parseInline,I.Parser=F,I.parser=F.parse,I.Renderer=De,I.TextRenderer=et,I.Lexer=U,I.lexer=U.lex,I.Tokenizer=Re,I.Hooks=ge,I.parse=I,I.options,I.setOptions,I.use,I.walkTokens,I.parseInline,F.parse,U.lex;function Is(e,t){const n=new I.Renderer;return n.blockquote=Es,n.link=Cs,n.image=Ls,w(()=>{const s=t?.minHeadingLevel??1;n.heading=Bs(s);const a=Be(e).trim();return Kt.sanitize(I(a,{async:!1,renderer:n,gfm:!1,breaks:!1,pedantic:!1}),{ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","strong","p","a","ul","ol","li","em","del","blockquote"]})})}function Cs({href:e,title:t,text:n}){let s;try{s=new URL(e)}catch{return""}if(s.protocol!=="http:"&&s.protocol!=="https:")return"";let a='"+n.replaceAll(/(?",a}function Ls({title:e,text:t}){return t||(e??"")}function Es({text:e}){return`
${e}`}function Bs(e){return({text:t,depth:n})=>(n=Math.min(6,n+(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?i:T(i,!0))+`\n`:\"\"+(n?i:T(i,!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 i=0;i${T(e,!0)}`}br(e){return\"An error occurred:
\"+T(n.message+\"\",!0)+\"\";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
${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{{ 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?i:T(i,!0))+`\n`:\"\"+(n?i:T(i,!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 i=0;i${T(e,!0)}`}br(e){return\"An error occurred:
\"+T(n.message+\"\",!0)+\"\";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
${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{{ t('appstore', 'Actions') }} | \n\t\t\t
|---|