@neosjs/vitepress-theme
Version:
NeosJS VitePress theme
6 lines (5 loc) • 4.95 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});const o=require("markdown-it-footnote"),u$1=require("markdown-it-container"),s$1=require("node:fs"),p$1=require("node:path"),a$1=require("markdown-it"),path=require("path");function _interopDefaultCompat(c){return c&&typeof c=="object"&&"default"in c?c.default:c}const o__default=_interopDefaultCompat(o),u__default=_interopDefaultCompat(u$1),s__default=_interopDefaultCompat(s$1),p__default=_interopDefaultCompat(p$1),a__default=_interopDefaultCompat(a$1),f$1=c=>({success:"<i-ne-icons:check-circle />",danger:"<i-ne-icons:danger />",info:"<i-ne-icons:info />",warning:"<i-ne-icons:warning />",tip:"<i-ne-icons:info />"})[c],r=(c,g,h)=>[u__default,c,{render($,k,b,v){const _=$[k],w=_.info.trim().slice(c.length).trim(),y=h.renderer.renderAttrs(_);if(_.nesting===1){const x=h.renderInline(w||g,{references:v.references});return`<div class="${c} custom-block"${y}>
${f$1(c)}
<p class="custom-block-title">${x}</p>
`}else return`</div>
`}}],i=(c,g,h)=>{c.use(...r("success",h?.successLabel||"SUCCESS",c)).use(...r("danger",h?.dangerLabel||"DANGER",c)).use(...r("info",h?.infoLabel||"INFO",c)).use(...r("warning",h?.warningLabel||"WARNING",c)).use(...r("tip",h?.tipLabel||"TIP",c))},projRoot=path.resolve(__dirname,"..",".."),pkgRoot=path.resolve(projRoot,"packages");path.resolve(pkgRoot,"components");const docsDirName="./src",docRoot=path.resolve(projRoot,docsDirName);path.resolve(projRoot,".vitepress"),path.resolve(projRoot,"./dist");const examplesRoot=path.resolve(docRoot,"./examples"),f=a__default({}),m=async c=>{c.use(u__default,"demo",{validate(g){return!!g.trim().match(/^demo\s*(.*)$/)},render(g,h){const $=g[h].info.trim().match(/^demo\s*(.*)$/);if(g[h].nesting===1){const k=$&&$.length>1?$[1]:"",b=g[h+2];let v=g[h+1].type==="fence"?g[h+1].content:"";const _=b.children?.[0].content??"";if(!v&&_&&b.type==="inline"&&(v=s__default.readFileSync(p__default.resolve(examplesRoot,`${_}.vue`),"utf-8")),!v)throw new Error(`Incorrect source file: ${_}`);return`<Demo :demos="demos" source="${encodeURIComponent(c.options.highlight(v,"vue",""))}" path="${_}" raw-source="${encodeURIComponent(v)}" description="${encodeURIComponent(f.render(k))}">`}else return"</Demo>"}})},e=c=>{const g=(b,v,_,w,y)=>y.renderToken(b,v,_),h=c.renderer.rules.link_open||g,$=c.renderer.rules.link_close||g;let k=!1;c.renderer.rules.link_open=(b,v,_,w,y)=>{const x=b[v],q=x.attrGet("href");return q&&(x.attrJoin("class","ne-link"),/^(?:ht|f)tps?:\/\/?/.test(q)&&(k=!0)),h(b,v,_,w,y)},c.renderer.rules.link_close=(b,v,_,w,y)=>k?(k=!1,`<i-ri-external-link-line class="ne-link-icon" />${y.renderToken(b,v,_)}`):$(b,v,_,w,y)},d=c=>{for(const g of c)g.title.endsWith("*")&&(g.title.endsWith("**")?g.compositionOnly=!0:g.optionsOnly=!0,g.title=g.title.replace(/\s*\*+$/,"")),g.children&&d(g.children)},t=c=>{c.renderer.rules.heading_open=(h,$,k,b,v)=>{for(const _ of h[$+1].children)_.type==="text"&&_.content.endsWith("*")&&(_.content=_.content.replace(/\s*\*+$/,""));return v.renderToken(h,$,k)};const g=c.render;c.render=(h,$)=>{const k=g(h,$);return $&&$.headers&&d($.headers),k}},a=["guide/introduction.md","guide/quick-start.md","guide/essentials/computed.md","guide/essentials/conditional.md","guide/essentials/list.md","guide/essentials/event-handling.md","guide/essentials/forms.md","guide/components/registration.md","guide/components/props.md","guide/components/events.md","guide/components/slots.md","guide/built-ins/teleport.md","about/faq.md","about/team.md","about/releases.md","about/community-guide.md","about/coc.md","sponsor/index.md","translations/index.md"],u=c=>{c.renderer.rules.heading_close=(g,h,$,k,b)=>{const v=k.relativePath,_=b.renderToken(g,h,$);return a.includes(v)?_:_.replace(/<\/h1>/,"</h1><VueJobs/>")}},n=async c=>{c.renderer.rules.table_open=()=>'<div class="ne-table"><table>',c.renderer.rules.table_close=()=>"</table></div>"},l=c=>{c.renderer.rules.tooltip=(g,h)=>{const $=g[h];return`<api-typing type="${$.content}" details="${$.info}" />`},c.inline.ruler.before("emphasis","tooltip",(g,h)=>{const $=/^\^\[([^\]]*)\](`[^`]*`)?/,k=g.src.slice(g.pos,g.posMax);if(!$.test(k))return!1;if(h)return!0;const b=k.match($);if(!b)return!1;const v=g.push("tooltip","tooltip",0);return v.content=b[1].replace(/\\\|/g,"|"),v.info=(b[2]||"").replace(/^`(.*)`$/,"$1"),v.level=g.level,g.pos+=b[0].length,!0})},p=c=>{c.renderer.rules.tag=(g,h)=>{const $=g[h].content;return`<span class="vp-tag ${["beta","deprecated","required"].includes($)?$:""}">${$}</span>`},c.inline.ruler.before("emphasis","tag",(g,h)=>{const $=/^\^\(([^)]*)\)/,k=g.src.slice(g.pos,g.posMax);if(!$.test(k))return!1;if(h)return!0;const b=k.match($);if(!b)return!1;const v=g.push("tag","tag",0);return v.content=b[1].trim(),v.level=g.level,g.pos+=b[0].length,!0})},s=async c=>{c.use(n).use(t).use(u).use(i).use(m).use(l).use(e).use(p).use(o__default)};exports.default=s;