UNPKG

vuepress-plugin-md-enhance

Version:
27 lines (25 loc) 27.5 kB
import{encodeData as k,entries as h,Logger as te,ensureEndingSlash as se,isModuleAvailable as ae,isDef as re,isPlainObject as $,keys as C,endsWith as x,deepAssign as E,fromEntries as j,addViteSsrNoExternal as le,addViteOptimizeDepsInclude as O,addViteOptimizeDepsNeedsInterop as ie,addViteSsrExternal as I,chainWebpack as pe}from"@vuepress/helper";import{useSassPalettePlugin as me}from"@vuepress/plugin-sass-palette";import{hash as ue,path as ce,getDirname as de,colors as _}from"vuepress/utils";import{createConverter as ge}from"vuepress-shared/node";import{container as U}from"@mdit/plugin-container";import{demo as ye}from"@mdit/plugin-demo";const N={useBabel:!1,jsLib:[],cssLib:[],codepenLayout:"left",codepenEditors:"101",babel:"https://unpkg.com/@babel/standalone/babel.min.js",vue:"https://unpkg.com/vue/dist/vue.global.prod.js",react:"https://unpkg.com/react/umd/react.production.min.js",reactDOM:"https://unpkg.com/react-dom/umd/react-dom.production.min.js"},D=n=>e=>{U(e,{name:n,openRender:(s,r)=>{const t=s[r].info.trimStart().slice(n.length).trim();let o="";const a={};for(let i=r;i<s.length;i++){const{type:l,content:y,info:g}=s[i],u=g?/^([^ :[{]+)/.exec(e.utils.unescapeAll(g).trim())?.[1]??"text":"";if(l===`container_${n}_close`)break;y&&l==="fence"&&(u==="json"?o=k(y):a[u]=y)}return`<CodeDemo id="code-demo-${r}" type="${n.split("-")[0]}"${t?` title="${encodeURIComponent(t)}"`:""}${o?` config="${o}"`:""} code="${k(JSON.stringify(a))}"> `},closeRender:()=>`</CodeDemo> `})},T=D("normal-demo"),A=D("vue-demo"),z=D("react-demo"),M=n=>n.replace(/&/gu,"&amp;").replace(/</gu,"&lt;").replace(/>/gu,"&gt;").replace(/"/gu,"&quot;").replace(/'/gu,"&#39;"),J="@",fe=["file","import","setting"],be=n=>(e,s,r,t)=>{let o=e.bMarks[s]+e.tShift[s],a=e.eMarks[s];if(e.src[o]!==":")return!1;let i=o+1;for(;i<=a&&e.src[i]===":";)i+=1;const l=i-o;if(l<3)return!1;const y=e.src.slice(o,i),g=e.src.slice(i,a),u=g.trimStart().split(" ",2)[0],f=g.trimStart().slice(n.length).trim();if(u.trim()!==n)return!1;if(t)return!0;let m=s,c=!1;for(;m<r&&(m+=1,o=e.bMarks[m]+e.tShift[m],a=e.eMarks[m],!(o<a&&e.sCount[m]<e.blkIndent));)if(e.src[o]===":"&&e.sCount[m]-e.blkIndent<4){for(i=o+1;i<=a&&e.src[i]===":";i++);if(i-o>=l&&(i=e.skipSpaces(i),i>=a)){c=!0;break}}const p=e.parentType,d=e.lineMax;e.parentType=n,e.lineMax=m-(c?1:0);const b=e.push(`${n}_open`,"template",1);b.markup=y,b.block=!0,b.info=f,b.map=[s,m-(c?1:0)],e.md.block.tokenize(e,s+1,m-(c?1:0));const S=e.push(`${n}_close`,"template",-1);return S.markup=e.src.slice(o,i),S.block=!0,e.parentType=p,e.lineMax=d,e.line=m+(c?1:0),!0},ke=n=>(e,s,r,t)=>{let o=e.bMarks[s]+e.tShift[s],a=e.eMarks[s];const i=`${J}${n}`;if(e.src.charAt(o)!=="@")return!1;let l;for(l=0;l<i.length;l++)if(i[l]!==e.src[o+l])return!1;const y=e.src.slice(o,o+l),g=e.src.slice(o+l,a);if(t)return!0;let u=s,f=!1;for(;u<r&&(u+=1,o=e.bMarks[u]+e.tShift[u],a=e.eMarks[u],!(o<a&&e.sCount[u]<e.blkIndent));)if(e.src[o]===J&&e.sCount[u]<=e.sCount[s]){let b=!0;for(l=0;l<i.length;l++)if(i[l]!==e.src[o+l]){b=!1;break}if(b){f=!0,u-=1;break}}const m=e.parentType,c=e.lineMax;e.parentType=n,e.lineMax=u;const p=e.push(`${n}_open`,"template",1);p.block=!0,p.markup=y,p.info=g.trim(),p.map=[s,u],e.md.block.tokenize(e,s+1,u);const d=e.push(`${n}_close`,"template",-1);return d.block=!0,d.markup="",e.parentType=m,e.lineMax=c,e.line=u+(f?1:0),!0},L=n=>({key:n.key,title:n.title??"",files:encodeURIComponent(JSON.stringify(n.files)),settings:encodeURIComponent(JSON.stringify(n.settings))}),P=(n,{name:e="playground",component:s="Playground",propsGetter:r=L}={name:"playground",component:"Playground",propsGetter:L})=>{n.block.ruler.before("fence",e,be(e),{alt:["paragraph","reference","blockquote","list"]}),fe.forEach(t=>{n.block.ruler.__rules__.find(({name:o})=>o===`at-${t}`)||n.block.ruler.before("fence",`at-${t}`,ke(t),{alt:["paragraph","reference","blockquote","list"]})}),n.renderer.rules[`${e}_open`]=(t,o)=>{const{info:a}=t[o],i={key:ue(`playground${o}-${a}`),title:encodeURIComponent(a),settings:{},files:{}};let l=null,y=!1;for(let u=o;u<t.length;u++){const{block:f,type:m,info:c,content:p}=t[u];if(f){if(m===`${e}_close`)break;if(m===`${e}_open`)continue;if(m==="file_open"){if(!c)continue;l=c}else if(m==="import_open")i.importMap=l=c||"import-map.json";else if(m==="setting_open")y=!0;else if(m==="file_close"||m==="import_close"||m==="setting_close"||!p){t[u].type=`${e}_empty`,t[u].hidden=!0,m==="setting_close"&&(y=!1);continue}y?m==="fence"&&c==="json"&&(i.settings=JSON.parse(p.trim())):m==="fence"&&l&&(i.files[l]={ext:c,content:p}),t[u].type=`${e}_empty`,t[u].hidden=!0}}const g=r(i);return`<${s} ${h(g).map(([u,f])=>`${u}="${M(f)}"`).join(" ")}> `},n.renderer.rules[`${e}_close`]=()=>`</${s}> `},he="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",ve=(n,e,s)=>{let r,t,o,a={},i={},l="",y="",g="",u=2,f=3,m=2,c=[],p=0,d=0;for(o=0;o<n.length;o+=1)if(l=n.charAt(o),Object.prototype.hasOwnProperty.call(a,l)||(a[l]=f++,i[l]=!0),y=g+l,Object.prototype.hasOwnProperty.call(a,y))g=y;else{if(Object.prototype.hasOwnProperty.call(i,g)){if(g.charCodeAt(0)<256){for(r=0;r<m;r++)p<<=1,d==e-1?(d=0,c.push(s(p)),p=0):d++;for(t=g.charCodeAt(0),r=0;r<8;r++)p=p<<1|1&t,d==e-1?(d=0,c.push(s(p)),p=0):d++,t>>=1}else{for(t=1,r=0;r<m;r++)p=p<<1|t,d==e-1?(d=0,c.push(s(p)),p=0):d++,t=0;for(t=y.charCodeAt(0),r=0;r<16;r++)p=p<<1|1&t,d==e-1?(d=0,c.push(s(p)),p=0):d++,t>>=1}--u==0&&(u=Math.pow(2,m),m++),delete i[g]}else for(t=a[g],r=0;r<m;r++)p=p<<1|1&t,d==e-1?(d=0,c.push(s(p)),p=0):d++,t>>=1;--u==0&&(u=Math.pow(2,m),m++),a[y]=f++,g=String(l)}if(g!==""){if(Object.prototype.hasOwnProperty.call(i,g)){if(g.charCodeAt(0)<256){for(r=0;r<m;r++)p<<=1,d==e-1?(d=0,c.push(s(p)),p=0):d++;for(t=g.charCodeAt(0),r=0;r<8;r++)p=p<<1|1&t,d==e-1?(d=0,c.push(s(p)),p=0):d++,t>>=1}else{for(t=1,r=0;r<m;r++)p=p<<1|t,d==e-1?(d=0,c.push(s(p)),p=0):d++,t=0;for(t=g.charCodeAt(0),r=0;r<16;r++)p=p<<1|1&t,d==e-1?(d=0,c.push(s(p)),p=0):d++,t>>=1}--u==0&&(u=Math.pow(2,m),m++),delete i[g]}else for(t=a[g],r=0;r<m;r++)p=p<<1|1&t,d==e-1?(d=0,c.push(s(p)),p=0):d++,t>>=1;--u==0&&(u=Math.pow(2,m),m++)}for(t=2,r=0;r<m;r++)p=p<<1|1&t,d==e-1?(d=0,c.push(s(p)),p=0):d++,t>>=1;for(;;){if(p<<=1,d==e-1){c.push(s(p));break}d++}return c.join("")},F=n=>ve(n,6,e=>he.charAt(e)),Pe=[{name:"help",type:"boolean"},{name:"help",type:"boolean"},{name:"watch",type:"boolean"},{name:"preserveWatchOutput",type:"boolean"},{name:"listFiles",type:"boolean"},{name:"explainFiles",type:"boolean"},{name:"listEmittedFiles",type:"boolean"},{name:"pretty",type:"boolean"},{name:"traceResolution",type:"boolean"},{name:"diagnostics",type:"boolean"},{name:"extendedDiagnostics",type:"boolean"},{name:"generateCpuProfile",type:"string"},{name:"generateTrace",type:"string"},{name:"incremental",type:"boolean"},{name:"declaration",type:"boolean"},{name:"declarationMap",type:"boolean"},{name:"emitDeclarationOnly",type:"boolean"},{name:"sourceMap",type:"boolean"},{name:"inlineSourceMap",type:"boolean"},{name:"noCheck",type:"boolean"},{name:"noEmit",type:"boolean"},{name:"assumeChangesOnlyAffectDirectDependencies",type:"boolean"},{name:"locale",type:"string"},{name:"all",type:"boolean"},{name:"version",type:"boolean"},{name:"init",type:"boolean"},{name:"project",type:"string"},{name:"showConfig",type:"boolean"},{name:"listFilesOnly",type:"boolean"},{name:"target",type:{es3:0,es5:1,es6:2,es2015:2,es2016:3,es2017:4,es2018:5,es2019:6,es2020:7,es2021:8,es2022:9,es2023:10,es2024:11,esnext:99}},{name:"module",type:{none:0,commonjs:1,amd:2,system:4,umd:3,es6:5,es2015:5,es2020:6,es2022:7,esnext:99,node16:100,node18:101,nodenext:199,preserve:200}},{name:"lib",type:"list"},{name:"allowJs",type:"boolean"},{name:"checkJs",type:"boolean"},{name:"jsx",type:{preserve:1,"react-native":3,react:2,"react-jsx":4,"react-jsxdev":5}},{name:"outFile",type:"string"},{name:"outDir",type:"string"},{name:"rootDir",type:"string"},{name:"composite",type:"boolean"},{name:"tsBuildInfoFile",type:"string"},{name:"removeComments",type:"boolean"},{name:"importHelpers",type:"boolean"},{name:"importsNotUsedAsValues",type:{remove:0,preserve:1,error:2}},{name:"downlevelIteration",type:"boolean"},{name:"isolatedModules",type:"boolean"},{name:"verbatimModuleSyntax",type:"boolean"},{name:"isolatedDeclarations",type:"boolean"},{name:"erasableSyntaxOnly",type:"boolean"},{name:"libReplacement",type:"boolean"},{name:"strict",type:"boolean"},{name:"noImplicitAny",type:"boolean"},{name:"strictNullChecks",type:"boolean"},{name:"strictFunctionTypes",type:"boolean"},{name:"strictBindCallApply",type:"boolean"},{name:"strictPropertyInitialization",type:"boolean"},{name:"strictBuiltinIteratorReturn",type:"boolean"},{name:"noImplicitThis",type:"boolean"},{name:"useUnknownInCatchVariables",type:"boolean"},{name:"alwaysStrict",type:"boolean"},{name:"noUnusedLocals",type:"boolean"},{name:"noUnusedParameters",type:"boolean"},{name:"exactOptionalPropertyTypes",type:"boolean"},{name:"noImplicitReturns",type:"boolean"},{name:"noFallthroughCasesInSwitch",type:"boolean"},{name:"noUncheckedIndexedAccess",type:"boolean"},{name:"noImplicitOverride",type:"boolean"},{name:"noPropertyAccessFromIndexSignature",type:"boolean"},{name:"moduleResolution",type:{node10:2,node:2,classic:1,node16:3,nodenext:99,bundler:100}},{name:"baseUrl",type:"string"},{name:"paths",type:"object"},{name:"rootDirs",type:"list"},{name:"typeRoots",type:"list"},{name:"types",type:"list"},{name:"allowSyntheticDefaultImports",type:"boolean"},{name:"esModuleInterop",type:"boolean"},{name:"preserveSymlinks",type:"boolean"},{name:"allowUmdGlobalAccess",type:"boolean"},{name:"moduleSuffixes",type:"list"},{name:"allowImportingTsExtensions",type:"boolean"},{name:"rewriteRelativeImportExtensions",type:"boolean"},{name:"resolvePackageJsonExports",type:"boolean"},{name:"resolvePackageJsonImports",type:"boolean"},{name:"customConditions",type:"list"},{name:"noUncheckedSideEffectImports",type:"boolean"},{name:"sourceRoot",type:"string"},{name:"mapRoot",type:"string"},{name:"inlineSources",type:"boolean"},{name:"experimentalDecorators",type:"boolean"},{name:"emitDecoratorMetadata",type:"boolean"},{name:"jsxFactory",type:"string"},{name:"jsxFragmentFactory",type:"string"},{name:"jsxImportSource",type:"string"},{name:"resolveJsonModule",type:"boolean"},{name:"allowArbitraryExtensions",type:"boolean"},{name:"out",type:"string"},{name:"reactNamespace",type:"string"},{name:"skipDefaultLibCheck",type:"boolean"},{name:"charset",type:"string"},{name:"emitBOM",type:"boolean"},{name:"newLine",type:{crlf:0,lf:1}},{name:"noErrorTruncation",type:"boolean"},{name:"noLib",type:"boolean"},{name:"noResolve",type:"boolean"},{name:"stripInternal",type:"boolean"},{name:"disableSizeLimit",type:"boolean"},{name:"disableSourceOfProjectReferenceRedirect",type:"boolean"},{name:"disableSolutionSearching",type:"boolean"},{name:"disableReferencedProjectLoad",type:"boolean"},{name:"noImplicitUseStrict",type:"boolean"},{name:"noEmitHelpers",type:"boolean"},{name:"noEmitOnError",type:"boolean"},{name:"preserveConstEnums",type:"boolean"},{name:"declarationDir",type:"string"},{name:"skipLibCheck",type:"boolean"},{name:"allowUnusedLabels",type:"boolean"},{name:"allowUnreachableCode",type:"boolean"},{name:"suppressExcessPropertyErrors",type:"boolean"},{name:"suppressImplicitAnyIndexErrors",type:"boolean"},{name:"forceConsistentCasingInFileNames",type:"boolean"},{name:"maxNodeModuleJsDepth",type:"number"},{name:"noStrictGenericChecks",type:"boolean"},{name:"useDefineForClassFields",type:"boolean"},{name:"preserveValueImports",type:"boolean"},{name:"keyofStringsOnly",type:"boolean"},{name:"plugins",type:"list"},{name:"moduleDetection",type:{auto:2,legacy:1,force:3}},{name:"ignoreDeprecations",type:"string"}],$e=de(import.meta.url),V="vuepress-plugin-md-enhance",v=new te(V),w=se(ce.resolve($e,"../client")),we=(n,e=!0)=>{const s=ae(n,import.meta);return e&&!s&&v.error(`Package ${n} is not installed, please install it manually!`),s},G=(n,e={})=>{const s=`#code/${F(n)}`,r=h(e).map(([t,o])=>{const a=Pe.find(l=>l.name===t);if(!a||o===null||!re(o))return"";const{type:i}=a;return $(i)?i[o]?.toString()??"":`${t}=${encodeURIComponent(o)}`}).filter(t=>t.length).join("&");return`${r?`?${r}`:""}${s}`},B=({service:n="https://www.typescriptlang.org/play",...e}={})=>({name:"playground#ts",propsGetter:({title:s="",files:r,settings:t})=>{const o=C(r).filter(i=>x(i,".ts"));o.length!==1&&v.error("TS playground only support 1 ts file");const a=`${n}${G(r[o[0]].content,E({},t,e))}`;return{title:s,link:encodeURIComponent(a)}}}),Se=["html","js","ts","vue","jsx","tsx","json"],q="https://sfc.vuejs.org/vue.runtime.esm-browser.js",K="https://sfc.vuejs.org/server-renderer.esm-browser.js",W=(n={})=>({name:"playground#vue",propsGetter:e=>{const{title:s="",files:r,settings:t}=e,o={service:"https://sfc.vuejs.org/",dev:!1,ssr:!1,...n,...t},a=j(h(r).filter(([,{ext:i}])=>Se.includes(i)).map(([i,{content:l}])=>{if(i==="import-map.json"){const y=JSON.parse(l);return[i,JSON.stringify(E({imports:{vue:q,...o.ssr?{"vue/server-renderer":K}:{}}},y),null,2)]}return[i,l]}));return o.ssr&&!a["import-map.json"]&&(a["import-map.json"]=JSON.stringify({imports:{vue:q,"vue/server-renderer":K}},null,2)),{title:s,link:encodeURIComponent(`${o.service}#${o.dev?"__DEV__":""}${o.ssr?"__SSR__":""}${Buffer.from(JSON.stringify(a)).toString("base64")}`)}}}),R=(n,e,s="&")=>e?`${s}${n}=${F(e)}`:"",H=(n,e,s,r)=>{const t=`/${R("html",e,"?")}${R("config",r)}${R("css",s)}`;return`${n}${t}`},Y=({service:n="https://unocss.dev/play"}={})=>({name:"playground#unocss",propsGetter:({title:e="",files:s})=>{const r=C(s).filter(l=>x(l,".html")),t=C(s).filter(l=>x(l,".css")),o=C(s).filter(l=>x(l,".js")||x(l,".ts"));(r.length>1||t.length>1||o.length>1)&&v.error("UnoCSS playground only support 1 html/css/config file");const a=l=>l.length===1?s[l[0]].content:"",i=H(n,a(r),a(t),a(o));return{title:e,link:encodeURIComponent(i)}}}),Q=n=>{n.use(P,{name:"kotlin-playground",component:"KotlinPlayground",propsGetter:({title:e="",key:s,files:r,settings:t})=>({title:e,key:s,settings:encodeURIComponent(JSON.stringify(t)),files:k(JSON.stringify(h(r).map(([,{content:o}])=>o)))})})},Ce=["html","js","ts","vue","jsx","tsx","json"],xe=n=>Buffer.from(JSON.stringify(j(h(n).filter(([,{ext:e}])=>Ce.includes(e)).map(([e,{content:s}])=>[e,s])))).toString("base64"),X=n=>{n.use(P,{name:"vue-playground",component:"VuePlayground",propsGetter:({title:e="",key:s,files:r,settings:t})=>({title:e,key:s,settings:encodeURIComponent(JSON.stringify(t)),files:encodeURIComponent(xe(r))})})},_e=n=>JSON.stringify(j(h(n).map(([e,s])=>[e,typeof s=="string"||s.active||s.hidden||s.readOnly?s:s.code]))),Z=n=>{const e=/.*(?<!\\)\[([^}]*)\].*/.exec(n);if(e?.[1]){const s=e[1].split(" ");return j(s.filter(r=>r.trim().length>0).map(r=>{const[t,o=""]=r.trim().split("=",2);return[t,o]}))}return{}},ee="@",je=["file","options","setup"],Me=n=>({title:n.title??"",template:n.template??"",files:k(_e(n.files)),options:k(JSON.stringify(n.options??{})),customSetup:k(JSON.stringify(n.customSetup??{}))}),ne=n=>new Function(`return ${n};`)(),Oe=(n,e,s,r)=>{let t=n.bMarks[e]+n.tShift[e],o=n.eMarks[e];if(n.src[t]!==":")return!1;let a=t+1;for(;a<=o&&n.src[a]===":";)a+=1;const i=a-t;if(i<3)return!1;const l=n.src.slice(t,a),y=n.src.slice(a,o).trim(),g=y.indexOf(" ");let u="",f="";if(g>0?(u=y.substring(0,g),f=y.substring(g+1).replace(/(?<!\\)\[([^}]*)\]/g,"")):u=y,!u.startsWith("sandpack"))return!1;if(r)return!0;let m=e,c=!1;for(;m<s&&(m+=1,t=n.bMarks[m]+n.tShift[m],o=n.eMarks[m],!(t<o&&n.sCount[m]<n.blkIndent));)if(n.src[t]===":"&&n.sCount[m]-n.blkIndent<4){for(a=t+1;a<=o&&n.src[a]===":";a++);if(a-t>=i&&(a=n.skipSpaces(a),a>=o)){c=!0;break}}const p=n.parentType,d=n.lineMax;n.parentType="sandpack",n.lineMax=m-(c?1:0);const b=n.push("sandpack_open","template",1);b.markup=l,b.content=y,b.block=!0,b.info=f,b.map=[e,m-(c?1:0)],n.md.block.tokenize(n,e+1,m-(c?1:0));const S=n.push("sandpack_close","template",-1);return S.markup=n.src.slice(t,a),S.block=!0,n.parentType=p,n.lineMax=d,n.line=m+(c?1:0),!0},Ie=n=>(e,s,r,t)=>{let o=e.bMarks[s]+e.tShift[s],a=e.eMarks[s];const i=`${ee}${n}`;if(e.src.charAt(o)!=="@")return!1;let l;for(l=0;l<i.length;l++)if(i[l]!==e.src[o+l])return!1;const y=e.src.slice(o,o+l),g=e.src.slice(o+l,a);if(t)return!0;let u=s,f=!1;for(;u<r&&(u+=1,o=e.bMarks[u]+e.tShift[u],a=e.eMarks[u],!(o<a&&e.sCount[u]<e.blkIndent));)if(e.src[o]===ee&&e.sCount[u]<=e.sCount[s]){let b=!0;for(l=0;l<i.length;l++)if(i[l]!==e.src[o+l]){b=!1;break}if(b){f=!0,u-=1;break}}const m=e.parentType,c=e.lineMax;e.parentType=n,e.lineMax=u;const p=e.push(`${n}_open`,"template",1);p.block=!0,p.markup=y,p.info=g.trim(),p.map=[s,u],e.md.block.tokenize(e,s+1,u);const d=e.push(`${n}_close`,"template",-1);return d.block=!0,d.markup="",e.parentType=m,e.lineMax=c,e.line=u+(f?1:0),!0},oe=n=>{n.block.ruler.before("fence","sandpack",Oe,{alt:["paragraph","reference","blockquote","list"]}),je.forEach(e=>{n.block.ruler.__rules__.find(({name:s})=>s===`at-${e}`)||n.block.ruler.before("fence",`at-${e}`,Ie(e),{alt:["paragraph","reference","blockquote","list"]})}),n.renderer.rules.sandpack_open=(e,s)=>{const{content:r,info:t}=e[s],o=Z(r),a={title:encodeURIComponent(t),files:{},options:{},customSetup:{}},i=r.split(" ",2)[0].trim().split("#");i.length>1&&(a.template=i[1]);let l=null,y=!1,g=!1;for(let f=s;f<e.length;f++){const{block:m,type:c,info:p,content:d}=e[f];if(m){if(c==="sandpack_close")break;if(c==="sandpack_open")continue;if(c==="file_open"){if(!p)continue;l=p.trim().split(" ")[0];const b=Z(p);a.files[l]={code:"",active:"active"in b,hidden:"hidden"in b,readOnly:"readOnly"in b}}else(c==="file_close"||c==="setup_open"||c==="options_open")&&(l=null);if(c==="setup_open"?g=!0:c==="setup_close"?g=!1:c==="options_open"?y=!0:c==="options_close"&&(y=!1),c==="file_close"||c==="setup_close"||c==="options_close"||!d){e[f].type="sandpack_empty",e[f].hidden=!0;continue}y&&(c==="fence"&&(p==="js"||p==="javascript")&&(a.options=ne(d.trim())),y=!1),g&&(c==="fence"&&(p==="js"||p==="javascript")&&(a.customSetup=ne(d.trim())),g=!1),c==="fence"&&l&&(a.files[l].code=d),e[f].type="sandpack_empty",e[f].hidden=!0}}const u=Me(a);return`<SandPack ${C(o).length?`${h(o).map(([f,m])=>m?`${f}="${M(m)}"`:f).join(" ")} `:""}${h(u).map(([f,m])=>m?`${f}="${M(m)}"`:null).filter(Boolean).join(" ")}> `},n.renderer.rules.sandpack_close=()=>`</SandPack> `},De=n=>{const{droppedLogger:e}=ge("md-enhance");e({options:n,old:"enableAll",msg:"Please manually enable the features you need."}),e({options:n,old:"imageFix",msg:"This option is no longer needed."}),e({options:n,old:"lineNumbers",msg:"Please use lineNumbers option in @vuepress/plugin-prismjs or @vuepress/plugin-shiki !"}),e({options:n,old:"alert",msg:"Please use alert option in @vuepress/plugin-markdown-hint instead."}),e({options:n,old:"container",msg:"Please use hint option in @vuepress/plugin-markdown-hint instead."}),e({options:n,old:"hint",msg:"Please use hint option in @vuepress/plugin-markdown-hint instead."}),e({options:n,old:"mdImport",msg:"Please use @vuepress/plugin-markdown-include instead."}),e({options:n,old:"include",msg:"Please use @vuepress/plugin-markdown-include instead."}),e({options:n,old:"imageTitle",msg:"Please use figure option in @vuepress/plugin-markdown-image instead."}),e({options:n,old:"figure",msg:"Please use figure option in @vuepress/plugin-markdown-image instead."}),e({options:n,old:"imageMark",msg:"Please use mark option in @vuepress/plugin-markdown-image instead."}),e({options:n,old:"imgMark",msg:"Please use mark option in @vuepress/plugin-markdown-image instead."}),e({options:n,old:"imgSize",msg:"Please use size option in @vuepress/plugin-markdown-image instead."}),e({options:n,old:"imageSize",msg:"Please use size option in @vuepress/plugin-markdown-image instead."}),e({options:n,old:"lazyload",msg:"Please use lazyload option in @vuepress/plugin-markdown-image instead."}),e({options:n,old:"imageLazyload",msg:"Please use lazyload option in @vuepress/plugin-markdown-image instead."}),e({options:n,old:"imgLazyload",msg:"Please use lazyload option in @vuepress/plugin-markdown-image instead."}),e({options:n,old:"obsidianImgSize",msg:"Please use obsidianSize option in @vuepress/plugin-markdown-image instead."}),e({options:n,old:"linkCheck",msg:"Please use @vuepress/plugin-links-check instead."}),e({options:n,old:"checkLinks",msg:"Please use @vuepress/plugin-links-check instead."}),e({options:n,old:"tex",msg:"Please use @vuepress/plugin-markdown-math instead."}),e({options:n,old:"katex",msg:"Please use @vuepress/plugin-markdown-math instead."}),e({options:n,old:"mathjax",msg:"Please use @vuepress/plugin-markdown-math instead."}),e({options:n,old:"revealjs",msg:"Please use @vuepress/plugin-revealjs instead."}),e({options:n,old:"revealJs",msg:"Please use @vuepress/plugin-revealjs instead."}),e({options:n,old:"presentation",msg:"Please use @vuepress/plugin-revealjs instead."}),e({options:n,old:"codegroup",msg:"Please use codeTabs option in @vuepress/plugin-markdown-tab instead."}),e({options:n,old:"codetabs",msg:"Please use codeTabs option in @vuepress/plugin-markdown-tab instead."}),e({options:n,old:"tabs",msg:"Please use tabs option in @vuepress/plugin-markdown-tab instead."}),e({options:n,old:"vpre",msg:"Please use vPre option in @vuepress/plugin-markdown-ext instead."}),e({options:n,old:"vPre",msg:"Please use vPre option in @vuepress/plugin-markdown-ext instead."}),e({options:n,old:"breaks",msg:"Please use breaks option in @vuepress/plugin-markdown-ext instead."}),e({options:n,old:"linkify",msg:"Please use linkify option in @vuepress/plugin-markdown-ext instead."}),e({options:n,old:"gfm",msg:"Please use gfm option in @vuepress/plugin-markdown-ext instead."}),e({options:n,old:"footnote",msg:"Please use footnote option in @vuepress/plugin-markdown-ext instead."}),e({options:n,old:"tasklist",msg:"Please use tasklist option in @vuepress/plugin-markdown-ext instead."}),e({options:n,old:"component",msg:"Please use component option in @vuepress/plugin-markdown-ext instead."}),e({options:n,old:"align",msg:"Please use align option in @vuepress/plugin-markdown-stylize instead."}),e({options:n,old:"attrs",msg:"Please use attrs option in @vuepress/plugin-markdown-stylize instead."}),e({options:n,old:"mark",msg:"Please use mark option in @vuepress/plugin-markdown-stylize instead."}),e({options:n,old:"spoiler",msg:"Please use spoiler option in @vuepress/plugin-markdown-stylize instead."}),e({options:n,old:"sub",msg:"Please use sub option in @vuepress/plugin-markdown-stylize instead."}),e({options:n,old:"sup",msg:"Please use sup option in @vuepress/plugin-markdown-stylize instead."}),e({options:n,old:"stylize",msg:"Please use custom option in @vuepress/plugin-markdown-stylize instead."}),n.card&&v.error(`${_.magenta("card")} is deprecated, please import ${_.magenta("VPCard")} from "vuepress-plugin-components" and use it instead.`),e({options:n,old:"chart",msg:"Please use @vuepress/plugin-markdown-chart instead."}),e({options:n,old:"chartjs",msg:"Please use @vuepress/plugin-markdown-chart instead."}),e({options:n,old:"echarts",msg:"Please use @vuepress/plugin-markdown-chart instead."}),e({options:n,old:"flowchart",msg:"Please use @vuepress/plugin-markdown-chart instead."}),e({options:n,old:"markmap",msg:"Please use @vuepress/plugin-markdown-chart instead."}),e({options:n,old:"mermaid",msg:"Please use @vuepress/plugin-markdown-chart instead."}),e({options:n,old:"plantuml",msg:"Please use @vuepress/plugin-markdown-chart instead."}),$(n.vuePlayground)&&(v.error(`Customizing @vue/repl with option ${_.magenta("vuePlayground")} is no longer supported, please import and use ${_.magenta("defineVuePlaygroundConfig")} from ${_.magenta("vuepress-plugin-md-enhance/client")} instead.`),n.vuePlayground=!0)},Re=n=>{n.use(U,{name:"demo",openRender:(e,s)=>{v.warn("demo container is deprecated, you should use normal-demo, react-demo and vue-demo container instead.");const{info:r}=e[s],t=/\[(.*)\]/u.exec(r),o=/^ demo\s*(?:\[.*?\])?\s*(.*)\s*$/u.exec(r);let a="";const i={};for(let l=s;l<e.length;l++){const{type:y,content:g,info:u}=e[l],f=u?/^([^ :[{]+)/.exec(n.utils.unescapeAll(u).trim())?.[1]??"text":"";if(y==="container_demo_close")break;g&&y==="fence"&&(f==="json"?a=k(g):i[f]=g)}return` <CodeDemo id="code-demo-${s}" type="${t?.[1]??"normal"}"${o?` title="${encodeURIComponent(o[1])}"`:""}${a?` config="${a}"`:""} code="${k(JSON.stringify(i))}"> `},closeRender:()=>"</CodeDemo>"})},Ee=n=>{n.use(ye,{name:"md-demo",openRender:(e,s)=>(v.warn("md-demo container is deprecated, you should use preview container instead."),`<MdDemo title="${M(e[s].info)}" id="md-demo-${s}"> `),codeRender:(e,s,r,t,o)=>`<template #code> ${o.rules.fence(e,s,r,t,o)}</template> `,contentOpenRender:()=>`<template #default> `,contentCloseRender:()=>`</template> `,closeRender:()=>`</MdDemo> `})},Ue=async(n,e,s,r=!1)=>{const t=new Set,o=new Set;return e.demo&&(t.add(`import CodeDemo from "${w}components/CodeDemo.js";`),o.add('app.component("CodeDemo", CodeDemo);'),r&&(t.add(`import MdDemo from "${w}components/MdDemo.js";`),o.add('app.component("MdDemo", MdDemo);'))),s.kotlinPlayground&&(t.add(`import KotlinPlayground from "${w}components/KotlinPlayground.js";`),o.add('app.component("KotlinPlayground", KotlinPlayground);')),e.playground&&(t.add(`import Playground from "${w}components/Playground.js";`),o.add('app.component("Playground", Playground);')),s.sandpack&&(t.add(`import SandPack from "${w}components/SandPack.js";`),o.add('app.component("SandPack", SandPack);')),s.vuePlayground&&(t.add(`import VuePlayground from "${w}components/VuePlayground.js";`),o.add('app.component("VuePlayground", VuePlayground);')),n.writeTemp("md-enhance/config.js",`${Array.from(t.values()).join(` `)} export default { enhance: ({ app }) => { ${Array.from(o.values()).map(a=>a.split(` `).map(i=>` ${i}`)).flat().join(` `)} }, }; `)},Ne=(n={},e=!0)=>s=>{e&&De(n),s.env.isDebug&&v.info("Options:",n);const r=(o,a=[])=>!!n[o]&&a.every(i=>we(i,!!n[o])),t={kotlinPlayground:r("kotlinPlayground",["kotlin-playground"]),sandpack:r("sandpack",["sandpack-vue3"]),vuePlayground:r("vuePlayground",["@vue/repl"])};return me(s,{id:"hope"}),{name:V,define:()=>({CODE_DEMO_OPTIONS:{...N,...$(n.demo)?n.demo:{}},VUE_PLAYGROUND_MONACO:$(n.vuePlayground)&&n.vuePlayground.editor==="monaco"}),extendsBundlerOptions:(o,a)=>{le(o,a,["@vuepress/helper","fflate","vuepress-shared"]),t.kotlinPlayground&&(O(o,a,"kotlin-playground"),ie(o,a,"kotlin-playground"),I(o,a,"kotlin-playground")),t.sandpack&&(O(o,a,"sandpack-vue3"),I(o,a,"sandpack-vue3")),t.vuePlayground&&(O(o,a,"@vue/repl"),I(o,a,"@vue/repl"),pe(o,a,i=>{i.resolve.set("conditionNames",["browser","import","module"]),i.module.set("exprContextCritical",!1),i.module.set("unknownContextCritical",!1)}))},extendsMarkdown:o=>{if(n.demo&&(o.use(T),o.use(A),o.use(z),e&&(o.use(Re),o.use(Ee))),$(n.playground)){const{presets:a=[],config:i={}}=n.playground;a.forEach(l=>{l==="ts"?o.use(P,B(i.ts??{})):l==="vue"?o.use(P,W(i.vue??{})):l==="unocss"?o.use(P,Y(i.unocss??{})):$(l)&&o.use(P,l)})}t.kotlinPlayground&&o.use(Q),t.vuePlayground&&o.use(X),t.sandpack&&o.use(oe)},clientConfigFile:o=>Ue(o,n,t,e)}};export{N as CODE_DEMO_DEFAULT_SETTING,H as generateUnoURL,B as getTSPlaygroundPreset,G as getURL,Y as getUnoPlaygroundPreset,W as getVuePlaygroundPreset,Q as kotlinPlayground,Ne as mdEnhancePlugin,T as normalDemo,P as playground,z as reactDemo,oe as sandpack,A as vueDemo,X as vuePlayground}; //# sourceMappingURL=index.js.map