neko-ui 2.8.9 → 2.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/md/index.js CHANGED
@@ -1,2 +1,2 @@
1
- function e(e,t,r,o,n,i,l){try{var a=e[i](l),s=a.value}catch(e){r(e);return}a.done?t(s):Promise.resolve(s).then(o,n)}function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}import{use as r}from"solid-js/web";import{template as o}from"solid-js/web";import{insert as n}from"solid-js/web";import{effect as i}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{className as a}from"solid-js/web";let s=o("<style> "),c=o("<style>"),d=o('<article class="n-md-box" part="box"><div class="n-md-body" part="body">'),u=o('<article part="box">');import{For as m,Match as f,Show as h,Switch as p,createEffect as v,mergeProps as b,onCleanup as g}from"solid-js";import w from"@moneko/common/lib/frameCallback";import{css as x,cx as y}from"@moneko/css";import{customElement as k}from"solid-element";import"../code";import"../img";import C from"../md-style";import L from"../theme";function $(o){let k,$;let{baseStyle:E}=L,P=b({webWorker:!1,pictureViewer:!0,lazyPicture:!0,text:"",tools:["copy"],getAnchorContainer:()=>window},o);function j(){return new Worker(new URL("./worker.ts",import.meta.url),{name:"workers/marked-completed"})}let A=P.webWorker?j():void 0;function O(e){$&&($.innerHTML=e.data)}function z(){var r;return r=function*(e){let{text:r,pictureViewer:o,lazyPicture:n,langToolbar:i}=e,l=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)t.indexOf(r=i[o])>=0||(n[r]=e[r]);return n}(e,["text","pictureViewer","lazyPicture","langToolbar"]),a=(yield import("marked-completed")).default;k||((k=new a.Renderer).katexBlock=e=>`<n-katex display-mode="true">${e}</n-katex>`,k.katexInline=e=>`<n-katex>${e}</n-katex>`),k.image=(e,t,r)=>`<n-img lazy="${n}" disabled="${!o}" role="img" src="${e}" alt="${r}" ${t?`title="${t}"`:""}></n-img>`;let s=!!(null==i?void 0:i.length);k.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${s}" language="${t}" ${l.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},O({data:a.parse(r,t({renderer:k,langToolbar:i,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0},l))})},(z=function(){var t=this,o=arguments;return new Promise(function(n,i){var l=r.apply(t,o);function a(t){e(l,n,i,a,s,"next",t)}function s(t){e(l,n,i,a,s,"throw",t)}a(void 0)})}).apply(this,arguments)}v(()=>{P.webWorker&&(A||(A=j()),A.addEventListener("message",O))}),v(()=>{A?A.postMessage(JSON.stringify({text:P.text,langLineNumber:P.lineNumber,langToolbar:P.tools,pictureViewer:P.pictureViewer,lazyPicture:P.lazyPicture})):w(()=>(function(e){return z.apply(this,arguments)})({text:P.text,langLineNumber:P.lineNumber,langToolbar:P.tools,pictureViewer:P.pictureViewer,lazyPicture:P.lazyPicture}))}),g(()=>{A&&(A.removeEventListener("message",O),A.terminate())});let N=[],T=[],V=[];function I(e){e.preventDefault(),e.stopPropagation();let t=e.target;if(t.hash){var r;null==$||null==(r=$.querySelector(decodeURIComponent(t.hash)))||r.scrollIntoView({behavior:"smooth",block:"nearest"}),N.forEach(e=>e.classList.remove("active")),t.classList.add("active")}else window.open(t.href)}function R(e){e.forEach(e=>{let t;let r=e.target.getAttribute("id"),o=e.target.querySelectorAll("a");if(N.forEach(e=>{e.hash===`#${r}`?t=e:e.hash||o.forEach(r=>{r.href===e.href&&(t=e)})}),t){let r=V.indexOf(t);if(V.forEach(e=>{e.classList.remove("active")}),e.isIntersecting?V.push(t):-1!==r&&V.splice(r,1),V[0]){var n;V[0].classList.add("active"),null==(n=V[0].offsetParent)||n.scrollTo({top:V[0].offsetTop})}}})}return v(()=>{var e;let t;$&&(null==(e=P.text)?void 0:e.startsWith("[TOC]"))&&(N=[...$.querySelectorAll(".n-md-toc a[href]")],T=[...$.querySelectorAll("h1, h2, h3, h4, h5, h6")],t=new IntersectionObserver(R,{rootMargin:"-50px 0px",threshold:.5}),T.forEach(e=>t.observe(e)),N.forEach(e=>{e.addEventListener("click",I)})),g(()=>{t&&(T.forEach(e=>t.unobserve(e)),t.disconnect()),N.forEach(e=>{e.removeEventListener("click",I)})})}),[(()=>{let e=s(),t=e.firstChild;return i(()=>t.data=E()),e})(),(()=>{let e=c();return e.textContent=C,e})(),l(h,{get when(){return P.css},get children(){let e=s(),t=e.firstChild;return i(()=>t.data=x(P.css)),e}}),l(p,{get children(){return[l(f,{get when(){var W;return null==(W=P.children)?void 0:W.length},get children(){let e=d();return n(e.firstChild,l(m,{get each(){return P.children},children:e=>e})),e}}),l(f,{get when(){return P.text},get children(){let e=u(),t=$;return"function"==typeof t?r(t,e):$=e,i(()=>a(e,y("n-md-box",P.class))),e}})]}})]}k("n-md",{class:void 0,pictureViewer:void 0,lazyPicture:void 0,lineNumber:!0,text:void 0,tools:void 0,getAnchorContainer:void 0,css:void 0,children:void 0,notRender:void 0,webWorker:void 0},(e,t)=>{let r=t.element,o=b({text:!e.notRender&&r.textContent||r.text,css:r.css,tools:r.tools,getAnchorContainer:r.getAnchorContainer},e);return v(()=>{r.removeAttribute("css"),r.replaceChildren()}),l($,o)});export default $;
1
+ function e(e,t,r,o,n,i,l){try{var a=e[i](l),s=a.value}catch(e){r(e);return}a.done?t(s):Promise.resolve(s).then(o,n)}function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}import{use as r}from"solid-js/web";import{template as o}from"solid-js/web";import{insert as n}from"solid-js/web";import{effect as i}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{className as a}from"solid-js/web";let s=o("<style> "),c=o("<style>"),d=o('<article class="n-md-box" part="box"><div class="n-md-body" part="body">'),u=o('<article part="box">');import{For as m,Match as f,Show as h,Switch as p,createEffect as v,mergeProps as b,onCleanup as g}from"solid-js";import w from"@moneko/common/lib/frameCallback";import{css as x,cx as y}from"@moneko/css";import{customElement as k}from"solid-element";import"../code";import"../img";import C from"../md-style";import L from"../theme";function $(o){let k,$;let{baseStyle:E}=L,P=b({webWorker:!1,pictureViewer:!0,lazyPicture:!0,text:"",tools:["copy"],getAnchorContainer:()=>window},o);function j(){return new Worker(new URL("./worker.ts",import.meta.url),{name:"workers/marked-completed"})}let A=P.webWorker?j():void 0;function O(e){$&&($.innerHTML=e.data)}function z(){var r;return r=function*(e){let{text:r,pictureViewer:o,lazyPicture:n,langToolbar:i}=e,l=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)t.indexOf(r=i[o])>=0||(n[r]=e[r]);return n}(e,["text","pictureViewer","lazyPicture","langToolbar"]),a=(yield import("marked-completed")).default;k||((k=new a.Renderer).katexBlock=e=>`<n-katex display-mode="true">${e}</n-katex>`,k.katexInline=e=>`<n-katex>${e}</n-katex>`),k.image=(e,t,r)=>`<n-img lazy="${n}" disabled="${!o}" role="img" src="${e}" alt="${r}" ${t?`title="${t}"`:""}></n-img>`;let s=!!(null==i?void 0:i.length);k.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${s}" language="${t}" ${l.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},O({data:a(r,t({renderer:k,langToolbar:i,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0},l))})},(z=function(){var t=this,o=arguments;return new Promise(function(n,i){var l=r.apply(t,o);function a(t){e(l,n,i,a,s,"next",t)}function s(t){e(l,n,i,a,s,"throw",t)}a(void 0)})}).apply(this,arguments)}v(()=>{P.webWorker&&(A||(A=j()),A.addEventListener("message",O))}),v(()=>{A?A.postMessage(JSON.stringify({text:P.text,langLineNumber:P.lineNumber,langToolbar:P.tools,pictureViewer:P.pictureViewer,lazyPicture:P.lazyPicture})):w(()=>(function(e){return z.apply(this,arguments)})({text:P.text,langLineNumber:P.lineNumber,langToolbar:P.tools,pictureViewer:P.pictureViewer,lazyPicture:P.lazyPicture}))}),g(()=>{A&&(A.removeEventListener("message",O),A.terminate())});let N=[],T=[],V=[];function I(e){e.preventDefault(),e.stopPropagation();let t=e.target;if(t.hash){var r;null==$||null==(r=$.querySelector(decodeURIComponent(t.hash)))||r.scrollIntoView({behavior:"smooth",block:"nearest"}),N.forEach(e=>e.classList.remove("active")),t.classList.add("active")}else window.open(t.href)}function R(e){e.forEach(e=>{let t;let r=e.target.getAttribute("id"),o=e.target.querySelectorAll("a");if(N.forEach(e=>{e.hash===`#${r}`?t=e:e.hash||o.forEach(r=>{r.href===e.href&&(t=e)})}),t){let r=V.indexOf(t);if(V.forEach(e=>{e.classList.remove("active")}),e.isIntersecting?V.push(t):-1!==r&&V.splice(r,1),V[0]){var n;V[0].classList.add("active"),null==(n=V[0].offsetParent)||n.scrollTo({top:V[0].offsetTop})}}})}return v(()=>{var e;let t;$&&(null==(e=P.text)?void 0:e.startsWith("[TOC]"))&&(N=[...$.querySelectorAll(".n-md-toc a[href]")],T=[...$.querySelectorAll("h1, h2, h3, h4, h5, h6")],t=new IntersectionObserver(R,{rootMargin:"-50px 0px",threshold:.5}),T.forEach(e=>t.observe(e)),N.forEach(e=>{e.addEventListener("click",I)})),g(()=>{t&&(T.forEach(e=>t.unobserve(e)),t.disconnect()),N.forEach(e=>{e.removeEventListener("click",I)})})}),[(()=>{let e=s(),t=e.firstChild;return i(()=>t.data=E()),e})(),(()=>{let e=c();return e.textContent=C,e})(),l(h,{get when(){return P.css},get children(){let e=s(),t=e.firstChild;return i(()=>t.data=x(P.css)),e}}),l(p,{get children(){return[l(f,{get when(){var W;return null==(W=P.children)?void 0:W.length},get children(){let e=d();return n(e.firstChild,l(m,{get each(){return P.children},children:e=>e})),e}}),l(f,{get when(){return P.text},get children(){let e=u(),t=$;return"function"==typeof t?r(t,e):$=e,i(()=>a(e,y("n-md-box",P.class))),e}})]}})]}k("n-md",{class:void 0,pictureViewer:void 0,lazyPicture:void 0,lineNumber:!0,text:void 0,tools:void 0,getAnchorContainer:void 0,css:void 0,children:void 0,notRender:void 0,webWorker:void 0},(e,t)=>{let r=t.element,o=b({text:!e.notRender&&r.textContent||r.text,css:r.css,tools:r.tools,getAnchorContainer:r.getAnchorContainer},e);return v(()=>{r.removeAttribute("css"),r.replaceChildren()}),l($,o)});export default $;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/md/index.tsx"],"sourcesContent":["import { For, Match, Show, Switch, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { frameCallback } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport '../code';\nimport '../img';\nimport mdStyle from '../md-style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nfunction MD(_props: MdProps) {\n let renderer: marked.Renderer | undefined;\n let ref: HTMLDivElement | undefined;\n const { baseStyle } = theme;\n const props = mergeProps(\n {\n webWorker: false,\n pictureViewer: true,\n lazyPicture: true,\n text: '',\n tools: ['copy'],\n getAnchorContainer: () => window as unknown as HTMLElement,\n },\n _props,\n );\n\n function initWorker() {\n return new Worker(new URL('./worker.ts', import.meta.url), {\n name: 'workers/marked-completed',\n });\n }\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function update(e: { data: string }) {\n if (ref) {\n ref.innerHTML = e.data;\n }\n }\n async function postMessage(opt: {\n text: string;\n pictureViewer?: boolean;\n lazyPicture?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n }) {\n const { text, pictureViewer, lazyPicture, langToolbar, ...options } = opt;\n const marked = (await import('marked-completed')).default;\n\n if (!renderer) {\n renderer = new marked.Renderer();\n\n renderer.katexBlock = (code: string) => {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n };\n renderer.katexInline = (code: string) => {\n return `<n-katex>${code}</n-katex>`;\n };\n }\n\n renderer.image = (src: string, title: string, alt: string) => {\n return `<n-img lazy=\"${lazyPicture}\" disabled=\"${!pictureViewer}\" role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n };\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" language=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n update({\n data: marked.parse(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n }),\n });\n }\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n }),\n );\n } else {\n const call = () =>\n postMessage({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n });\n\n frameCallback(call);\n }\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n });\n let list: HTMLAnchorElement[] = [];\n let heading: HTMLHeadingElement[] = [];\n const active: HTMLAnchorElement[] = [];\n\n function handleAnchor(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n const a = e.target as HTMLAnchorElement;\n\n if (a.hash) {\n ref?.querySelector(decodeURIComponent(a.hash))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n list.forEach((item) => item.classList.remove('active'));\n a.classList.add('active');\n } else {\n window.open(a.href);\n }\n }\n function observerEntry(entries: IntersectionObserverEntry[]) {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const all = entry.target.querySelectorAll('a');\n let a: HTMLAnchorElement | undefined;\n\n list.forEach((l) => {\n if (l.hash === `#${id}`) {\n a = l;\n } else if (!l.hash) {\n all.forEach((e) => {\n if (e.href === l.href) {\n a = l;\n }\n });\n }\n });\n if (a) {\n const idx = active.indexOf(a);\n\n active.forEach((e) => {\n e.classList.remove('active');\n });\n if (entry.isIntersecting) {\n active.push(a);\n } else if (idx !== -1) {\n active.splice(idx, 1);\n }\n if (active[0]) {\n active[0].classList.add('active');\n active[0].offsetParent?.scrollTo({\n top: active[0].offsetTop,\n });\n }\n }\n });\n }\n createEffect(() => {\n let observer: IntersectionObserver;\n\n if (ref && props.text?.startsWith('[TOC]')) {\n list = [...ref.querySelectorAll<HTMLAnchorElement>('.n-md-toc a[href]')];\n heading = [...ref.querySelectorAll<HTMLHeadingElement>('h1, h2, h3, h4, h5, h6')];\n observer = new IntersectionObserver(observerEntry, {\n rootMargin: '-50px 0px',\n threshold: 0.5,\n });\n heading.forEach((e) => observer.observe(e));\n list.forEach((e) => {\n e.addEventListener('click', handleAnchor);\n });\n }\n onCleanup(() => {\n if (observer) {\n heading.forEach((e) => observer.unobserve(e));\n observer.disconnect();\n }\n list.forEach((e) => {\n e.removeEventListener('click', handleAnchor);\n });\n });\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={mdStyle} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Switch>\n <Match when={(props.children as [])?.length}>\n <article class=\"n-md-box\" part=\"box\">\n <div class=\"n-md-body\" part=\"body\">\n <For each={props.children as []}>{(e) => e}</For>\n </div>\n </article>\n </Match>\n <Match when={props.text}>\n <article ref={ref} class={cx('n-md-box', props.class)} part=\"box\" />\n </Match>\n </Switch>\n </>\n );\n}\n\nexport interface MdProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** md内容 */\n text?: string;\n /** 开启图片查看器\n * @since 2.0.8\n * @default true\n */\n pictureViewer?: boolean;\n /** 开启图片懒加载\n * @since 2.8.3\n * @default true\n */\n lazyPicture?: boolean;\n /** 显示代码块行号\n * @default true\n */\n lineNumber?: boolean;\n /** 开启代码块工具条\n * @default ['copy']\n */\n tools?: 'copy'[];\n /** 指定滚动的容器\n * @default () => window\n */\n getAnchorContainer?: () => HTMLElement;\n /** 不进行解析\n * @default false\n */\n notRender?: boolean;\n children?: JSX.Element;\n /**\n * 使用 web worker\n */\n webWorker?: boolean;\n}\n\nexport type MdElement = CustomElement<MdProps>;\n\ncustomElement<MdProps>(\n 'n-md',\n {\n class: void 0,\n pictureViewer: void 0,\n lazyPicture: void 0,\n lineNumber: true,\n text: void 0,\n tools: void 0,\n getAnchorContainer: void 0,\n css: void 0,\n children: void 0,\n notRender: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: (!_.notRender && el.textContent) || el.text,\n css: el.css,\n tools: el.tools,\n getAnchorContainer: el.getAnchorContainer,\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.replaceChildren();\n });\n return <MD {...props} />;\n },\n);\nexport default MD;\n"],"names":["For","Match","Show","Switch","createEffect","mergeProps","onCleanup","frameCallback","css","cx","customElement","mdStyle","theme","MD","_props","renderer","ref","baseStyle","props","webWorker","pictureViewer","lazyPicture","text","tools","getAnchorContainer","window","initWorker","Worker","URL","url","name","worker","update","e","innerHTML","data","postMessage","opt","langToolbar","options","marked","default","Renderer","katexBlock","code","katexInline","image","src","title","alt","toolbar","length","lang","langLineNumber","encodeURIComponent","parse","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","addEventListener","JSON","stringify","lineNumber","removeEventListener","terminate","list","heading","active","handleAnchor","preventDefault","stopPropagation","a","target","hash","querySelector","decodeURIComponent","scrollIntoView","behavior","block","forEach","item","classList","remove","add","open","href","observerEntry","entries","entry","id","getAttribute","all","querySelectorAll","l","idx","indexOf","isIntersecting","push","splice","offsetParent","scrollTo","top","offsetTop","observer","startsWith","IntersectionObserver","rootMargin","threshold","observe","unobserve","disconnect","children","class","notRender","_","el","element","textContent","removeAttribute","replaceChildren"],"rangeMappings":"","mappings":"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"}
1
+ {"version":3,"sources":["../../components/md/index.tsx"],"sourcesContent":["import { For, Match, Show, Switch, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { frameCallback } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport '../code';\nimport '../img';\nimport mdStyle from '../md-style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nfunction MD(_props: MdProps) {\n let renderer: marked.Renderer | undefined;\n let ref: HTMLDivElement | undefined;\n const { baseStyle } = theme;\n const props = mergeProps(\n {\n webWorker: false,\n pictureViewer: true,\n lazyPicture: true,\n text: '',\n tools: ['copy'],\n getAnchorContainer: () => window as unknown as HTMLElement,\n },\n _props,\n );\n\n function initWorker() {\n return new Worker(new URL('./worker.ts', import.meta.url), {\n name: 'workers/marked-completed',\n });\n }\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function update(e: { data: string }) {\n if (ref) {\n ref.innerHTML = e.data;\n }\n }\n async function postMessage(opt: {\n text: string;\n pictureViewer?: boolean;\n lazyPicture?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n }) {\n const { text, pictureViewer, lazyPicture, langToolbar, ...options } = opt;\n const marked = (await import('marked-completed')).default;\n\n if (!renderer) {\n renderer = new marked.Renderer();\n\n renderer.katexBlock = (code: string) => {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n };\n renderer.katexInline = (code: string) => {\n return `<n-katex>${code}</n-katex>`;\n };\n }\n\n renderer.image = (src: string, title: string, alt: string) => {\n return `<n-img lazy=\"${lazyPicture}\" disabled=\"${!pictureViewer}\" role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n };\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" language=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n update({\n data: marked(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n }),\n });\n }\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n }),\n );\n } else {\n const call = () =>\n postMessage({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n });\n\n frameCallback(call);\n }\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n });\n let list: HTMLAnchorElement[] = [];\n let heading: HTMLHeadingElement[] = [];\n const active: HTMLAnchorElement[] = [];\n\n function handleAnchor(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n const a = e.target as HTMLAnchorElement;\n\n if (a.hash) {\n ref?.querySelector(decodeURIComponent(a.hash))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n list.forEach((item) => item.classList.remove('active'));\n a.classList.add('active');\n } else {\n window.open(a.href);\n }\n }\n function observerEntry(entries: IntersectionObserverEntry[]) {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const all = entry.target.querySelectorAll('a');\n let a: HTMLAnchorElement | undefined;\n\n list.forEach((l) => {\n if (l.hash === `#${id}`) {\n a = l;\n } else if (!l.hash) {\n all.forEach((e) => {\n if (e.href === l.href) {\n a = l;\n }\n });\n }\n });\n if (a) {\n const idx = active.indexOf(a);\n\n active.forEach((e) => {\n e.classList.remove('active');\n });\n if (entry.isIntersecting) {\n active.push(a);\n } else if (idx !== -1) {\n active.splice(idx, 1);\n }\n if (active[0]) {\n active[0].classList.add('active');\n active[0].offsetParent?.scrollTo({\n top: active[0].offsetTop,\n });\n }\n }\n });\n }\n createEffect(() => {\n let observer: IntersectionObserver;\n\n if (ref && props.text?.startsWith('[TOC]')) {\n list = [...ref.querySelectorAll<HTMLAnchorElement>('.n-md-toc a[href]')];\n heading = [...ref.querySelectorAll<HTMLHeadingElement>('h1, h2, h3, h4, h5, h6')];\n observer = new IntersectionObserver(observerEntry, {\n rootMargin: '-50px 0px',\n threshold: 0.5,\n });\n heading.forEach((e) => observer.observe(e));\n list.forEach((e) => {\n e.addEventListener('click', handleAnchor);\n });\n }\n onCleanup(() => {\n if (observer) {\n heading.forEach((e) => observer.unobserve(e));\n observer.disconnect();\n }\n list.forEach((e) => {\n e.removeEventListener('click', handleAnchor);\n });\n });\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={mdStyle} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Switch>\n <Match when={(props.children as [])?.length}>\n <article class=\"n-md-box\" part=\"box\">\n <div class=\"n-md-body\" part=\"body\">\n <For each={props.children as []}>{(e) => e}</For>\n </div>\n </article>\n </Match>\n <Match when={props.text}>\n <article ref={ref} class={cx('n-md-box', props.class)} part=\"box\" />\n </Match>\n </Switch>\n </>\n );\n}\n\nexport interface MdProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** md内容 */\n text?: string;\n /** 开启图片查看器\n * @since 2.0.8\n * @default true\n */\n pictureViewer?: boolean;\n /** 开启图片懒加载\n * @since 2.8.3\n * @default true\n */\n lazyPicture?: boolean;\n /** 显示代码块行号\n * @default true\n */\n lineNumber?: boolean;\n /** 开启代码块工具条\n * @default ['copy']\n */\n tools?: 'copy'[];\n /** 指定滚动的容器\n * @default () => window\n */\n getAnchorContainer?: () => HTMLElement;\n /** 不进行解析\n * @default false\n */\n notRender?: boolean;\n children?: JSX.Element;\n /**\n * 使用 web worker\n */\n webWorker?: boolean;\n}\n\nexport type MdElement = CustomElement<MdProps>;\n\ncustomElement<MdProps>(\n 'n-md',\n {\n class: void 0,\n pictureViewer: void 0,\n lazyPicture: void 0,\n lineNumber: true,\n text: void 0,\n tools: void 0,\n getAnchorContainer: void 0,\n css: void 0,\n children: void 0,\n notRender: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: (!_.notRender && el.textContent) || el.text,\n css: el.css,\n tools: el.tools,\n getAnchorContainer: el.getAnchorContainer,\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.replaceChildren();\n });\n return <MD {...props} />;\n },\n);\nexport default MD;\n"],"names":["For","Match","Show","Switch","createEffect","mergeProps","onCleanup","frameCallback","css","cx","customElement","mdStyle","theme","MD","_props","renderer","ref","baseStyle","props","webWorker","pictureViewer","lazyPicture","text","tools","getAnchorContainer","window","initWorker","Worker","URL","url","name","worker","update","e","innerHTML","data","postMessage","opt","langToolbar","options","marked","default","Renderer","katexBlock","code","katexInline","image","src","title","alt","toolbar","length","lang","langLineNumber","encodeURIComponent","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","addEventListener","JSON","stringify","lineNumber","removeEventListener","terminate","list","heading","active","handleAnchor","preventDefault","stopPropagation","a","target","hash","querySelector","decodeURIComponent","scrollIntoView","behavior","block","forEach","item","classList","remove","add","open","href","observerEntry","entries","entry","id","getAttribute","all","querySelectorAll","l","idx","indexOf","isIntersecting","push","splice","offsetParent","scrollTo","top","offsetTop","observer","startsWith","IntersectionObserver","rootMargin","threshold","observe","unobserve","disconnect","children","class","notRender","_","el","element","textContent","removeAttribute","replaceChildren"],"rangeMappings":"","mappings":"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"}
package/es/md/worker.js CHANGED
@@ -1,2 +1,2 @@
1
- function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}self.importScripts(new URL("marked-completed",import.meta.url).href),self.addEventListener("message",function(t){let r;try{let n=JSON.parse(t.data),{text:a,pictureViewer:l,lazyPicture:o,langToolbar:i}=n,s=function(e,t){if(null==e)return{};var r,n,a={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(n,["text","pictureViewer","lazyPicture","langToolbar"]),c=new self.marked.Renderer;c.katexBlock=function(e){return`<n-katex display-mode="true">${e}</n-katex>`},c.katexInline=function(e){return`<n-katex>${e}</n-katex>`},c.image=(e,t,r)=>`<n-img lazy="${o}" disabled="${!l}" role="img" src="${e}" alt="${r}" ${t?`title="${t}"`:""}></n-img>`;let u=!!(null==i?void 0:i.length);c.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${u}" language="${t}" ${s.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},r=self.marked.parse(a,e({renderer:c,langToolbar:i,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0},s))}catch(e){r=e}self.postMessage(r)},!1);export{};
1
+ function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}self.importScripts(new URL("marked-completed",import.meta.url).href),self.addEventListener("message",function(t){let n;try{let r=JSON.parse(t.data),{text:a,pictureViewer:l,lazyPicture:o,langToolbar:i}=r,s=function(e,t){if(null==e)return{};var n,r,a={},l=Object.keys(e);for(r=0;r<l.length;r++)n=l[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(r,["text","pictureViewer","lazyPicture","langToolbar"]),c=new self.marked.Renderer;c.katexBlock=function(e){return`<n-katex display-mode="true">${e}</n-katex>`},c.katexInline=function(e){return`<n-katex>${e}</n-katex>`},c.image=(e,t,n)=>`<n-img lazy="${o}" disabled="${!l}" role="img" src="${e}" alt="${n}" ${t?`title="${t}"`:""}></n-img>`;let u=!!(null==i?void 0:i.length);c.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${u}" language="${t}" ${s.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},n=self.marked(a,e({renderer:c,langToolbar:i,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0},s))}catch(e){n=e}self.postMessage(n)},!1);export{};
2
2
  //# sourceMappingURL=worker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/md/worker.ts"],"sourcesContent":["import type { MarkedOptions } from 'marked-completed';\n\nself.importScripts(new URL('marked-completed', import.meta.url).href);\n\nfunction onMessage(e: MessageEvent<string>) {\n let result;\n\n try {\n const { text, pictureViewer, lazyPicture, langToolbar, ...options } = JSON.parse(e.data) as {\n text: string;\n pictureViewer?: boolean;\n lazyPicture?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n } & MarkedOptions;\n const renderer = new self.marked.Renderer();\n\n renderer.katexBlock = function (code: string) {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n };\n renderer.katexInline = function (code: string) {\n return `<n-katex>${code}</n-katex>`;\n };\n renderer.image = (src: string, title: string, alt: string) => {\n return `<n-img lazy=\"${lazyPicture}\" disabled=\"${!pictureViewer}\" role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n };\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" language=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n result = self.marked.parse(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n });\n } catch (error) {\n result = error;\n }\n self.postMessage(result);\n}\n\nself.addEventListener('message', onMessage, false);\n"],"names":["self","importScripts","URL","url","href","addEventListener","e","result","JSON","parse","data","text","pictureViewer","lazyPicture","langToolbar","options","renderer","marked","Renderer","katexBlock","code","katexInline","image","src","title","alt","toolbar","length","lang","langLineNumber","encodeURIComponent","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","error","postMessage"],"rangeMappings":"","mappings":"+MAEAA,KAAKC,aAAa,CAAC,IAAIC,IAAI,mBAAoB,YAAYC,GAAG,EAAEC,IAAI,EAqDpEJ,KAAKK,gBAAgB,CAAC,UAnDtB,SAAmBC,CAAuB,EACxC,IAAIC,EAEJ,GAAI,CACF,IAAsEC,EAAAA,KAAKC,KAAK,CAACH,EAAEI,IAAI,EAAjF,CAAEC,KAAAA,CAAI,CAAEC,cAAAA,CAAa,CAAEC,YAAAA,CAAW,CAAEC,YAAAA,CAAW,CAAc,CAAGN,EAAZO,uIAAYP,GAA9DG,OAAMC,gBAAeC,cAAaC,gBAOpCE,EAAW,IAAIhB,KAAKiB,MAAM,CAACC,QAAQ,AAEzCF,CAAAA,EAASG,UAAU,CAAG,SAAUC,CAAY,EAC1C,MAAO,CAAC,6BAA6B,EAAEA,EAAK,UAAU,CAAC,AACzD,EACAJ,EAASK,WAAW,CAAG,SAAUD,CAAY,EAC3C,MAAO,CAAC,SAAS,EAAEA,EAAK,UAAU,CAAC,AACrC,EACAJ,EAASM,KAAK,CAAG,CAACC,EAAaC,EAAeC,IACrC,CAAC,aAAa,EAAEZ,EAAY,YAAY,EAAE,CAACD,EAAc,kBAAkB,EAAEW,EAAI,OAAO,EAAEE,EAAI,EAAE,EAAED,EAAQ,CAAC,OAAO,EAAEA,EAAM,CAAC,CAAC,CAAG,GAAG,SAAS,CAAC,CAErJ,IAAME,EAAU,CAAC,QAACZ,SAAAA,EAAaa,MAAM,CAErCX,CAAAA,EAASI,IAAI,CAAG,SAAUA,CAAY,CAAEQ,CAAY,QAClD,AAAIA,AAAS,aAATA,EACK,CAAC,cAAc,EAAER,EAAK,IAAI,CAAC,CAG7B,CAAC,gCAAgC,EAAEM,EAAQ,YAAY,EAAEE,EAAK,EAAE,EACrEb,EAAQc,cAAc,CAAG,qBAAuB,GACjD,CAAC,EAAEC,mBAAmBV,GAAM,SAAS,CAAC,AACzC,EAEAb,EAASP,KAAKiB,MAAM,CAACR,KAAK,CAACE,EAAM,GAC/BK,SAAUA,EACVF,YAAaA,EACbiB,aAAc,KACdC,OAAQ,CAAA,EACRC,SAAU,CAAA,EACVC,WAAY,CAAA,EACZC,YAAa,CAAA,EACbC,MAAO,CAAA,GACJrB,GAEP,CAAE,MAAOsB,EAAO,CACd9B,EAAS8B,CACX,CACArC,KAAKsC,WAAW,CAAC/B,EACnB,EAE4C,CAAA"}
1
+ {"version":3,"sources":["../../components/md/worker.ts"],"sourcesContent":["import type { MarkedOptions } from 'marked-completed';\n\nself.importScripts(new URL('marked-completed', import.meta.url).href);\n\nfunction onMessage(e: MessageEvent<string>) {\n let result;\n\n try {\n const { text, pictureViewer, lazyPicture, langToolbar, ...options } = JSON.parse(e.data) as {\n text: string;\n pictureViewer?: boolean;\n lazyPicture?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n } & MarkedOptions;\n const renderer = new self.marked.Renderer();\n\n renderer.katexBlock = function (code: string) {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n };\n renderer.katexInline = function (code: string) {\n return `<n-katex>${code}</n-katex>`;\n };\n renderer.image = (src: string, title: string, alt: string) => {\n return `<n-img lazy=\"${lazyPicture}\" disabled=\"${!pictureViewer}\" role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n };\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" language=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n result = self.marked(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n });\n } catch (error) {\n result = error;\n }\n self.postMessage(result);\n}\n\nself.addEventListener('message', onMessage, false);\n"],"names":["self","importScripts","URL","url","href","addEventListener","e","result","JSON","parse","data","text","pictureViewer","lazyPicture","langToolbar","options","renderer","marked","Renderer","katexBlock","code","katexInline","image","src","title","alt","toolbar","length","lang","langLineNumber","encodeURIComponent","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","error","postMessage"],"rangeMappings":"","mappings":"+MAEAA,KAAKC,aAAa,CAAC,IAAIC,IAAI,mBAAoB,YAAYC,GAAG,EAAEC,IAAI,EAqDpEJ,KAAKK,gBAAgB,CAAC,UAnDtB,SAAmBC,CAAuB,EACxC,IAAIC,EAEJ,GAAI,CACF,IAAsEC,EAAAA,KAAKC,KAAK,CAACH,EAAEI,IAAI,EAAjF,CAAEC,KAAAA,CAAI,CAAEC,cAAAA,CAAa,CAAEC,YAAAA,CAAW,CAAEC,YAAAA,CAAW,CAAc,CAAGN,EAAZO,uIAAYP,GAA9DG,OAAMC,gBAAeC,cAAaC,gBAOpCE,EAAW,IAAIhB,KAAKiB,MAAM,CAACC,QAAQ,AAEzCF,CAAAA,EAASG,UAAU,CAAG,SAAUC,CAAY,EAC1C,MAAO,CAAC,6BAA6B,EAAEA,EAAK,UAAU,CAAC,AACzD,EACAJ,EAASK,WAAW,CAAG,SAAUD,CAAY,EAC3C,MAAO,CAAC,SAAS,EAAEA,EAAK,UAAU,CAAC,AACrC,EACAJ,EAASM,KAAK,CAAG,CAACC,EAAaC,EAAeC,IACrC,CAAC,aAAa,EAAEZ,EAAY,YAAY,EAAE,CAACD,EAAc,kBAAkB,EAAEW,EAAI,OAAO,EAAEE,EAAI,EAAE,EAAED,EAAQ,CAAC,OAAO,EAAEA,EAAM,CAAC,CAAC,CAAG,GAAG,SAAS,CAAC,CAErJ,IAAME,EAAU,CAAC,QAACZ,SAAAA,EAAaa,MAAM,CAErCX,CAAAA,EAASI,IAAI,CAAG,SAAUA,CAAY,CAAEQ,CAAY,QAClD,AAAIA,AAAS,aAATA,EACK,CAAC,cAAc,EAAER,EAAK,IAAI,CAAC,CAG7B,CAAC,gCAAgC,EAAEM,EAAQ,YAAY,EAAEE,EAAK,EAAE,EACrEb,EAAQc,cAAc,CAAG,qBAAuB,GACjD,CAAC,EAAEC,mBAAmBV,GAAM,SAAS,CAAC,AACzC,EAEAb,EAASP,KAAKiB,MAAM,CAACN,EAAM,GACzBK,SAAUA,EACVF,YAAaA,EACbiB,aAAc,KACdC,OAAQ,CAAA,EACRC,SAAU,CAAA,EACVC,WAAY,CAAA,EACZC,YAAa,CAAA,EACbC,MAAO,CAAA,GACJrB,GAEP,CAAE,MAAOsB,EAAO,CACd9B,EAAS8B,CACX,CACArC,KAAKsC,WAAW,CAAC/B,EACnB,EAE4C,CAAA"}
package/lib/md/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return p}});const e=require("solid-js/web"),t=require("solid-js"),r=l(require("@moneko/common/lib/frameCallback")),n=require("@moneko/css"),o=require("solid-element");require("../code"),require("../img");const a=l(require("../md-style")),i=l(require("../theme"));function l(e){return e&&e.__esModule?e:{default:e}}function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(c=function(e){return e?r:t})(e)}const s=(0,e.template)("<style> "),u=(0,e.template)("<style>"),d=(0,e.template)('<article class="n-md-box" part="box"><div class="n-md-body" part="body">'),f=(0,e.template)('<article part="box">');function h(o){let l,h;let{baseStyle:p}=i.default,m=(0,t.mergeProps)({webWorker:!1,pictureViewer:!0,lazyPicture:!0,text:"",tools:["copy"],getAnchorContainer:()=>window},o);function g(){return new Worker(new URL("./worker.ts",require("url").pathToFileURL(__filename).toString()),{name:"workers/marked-completed"})}let b=m.webWorker?g():void 0;function v(e){h&&(h.innerHTML=e.data)}async function w(e){let{text:t,pictureViewer:r,lazyPicture:n,langToolbar:o,...a}=e,i=(await Promise.resolve().then(()=>(function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=c(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n})(require("marked-completed")))).default;l||((l=new i.Renderer).katexBlock=e=>`<n-katex display-mode="true">${e}</n-katex>`,l.katexInline=e=>`<n-katex>${e}</n-katex>`),l.image=(e,t,o)=>`<n-img lazy="${n}" disabled="${!r}" role="img" src="${e}" alt="${o}" ${t?`title="${t}"`:""}></n-img>`;let s=!!o?.length;l.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${s}" language="${t}" ${a.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},v({data:i.parse(t,{renderer:l,langToolbar:o,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0,...a})})}(0,t.createEffect)(()=>{m.webWorker&&(b||(b=g()),b.addEventListener("message",v))}),(0,t.createEffect)(()=>{b?b.postMessage(JSON.stringify({text:m.text,langLineNumber:m.lineNumber,langToolbar:m.tools,pictureViewer:m.pictureViewer,lazyPicture:m.lazyPicture})):(0,r.default)(()=>w({text:m.text,langLineNumber:m.lineNumber,langToolbar:m.tools,pictureViewer:m.pictureViewer,lazyPicture:m.lazyPicture}))}),(0,t.onCleanup)(()=>{b&&(b.removeEventListener("message",v),b.terminate())});let y=[],x=[],k=[];function C(e){e.preventDefault(),e.stopPropagation();let t=e.target;t.hash?(h?.querySelector(decodeURIComponent(t.hash))?.scrollIntoView({behavior:"smooth",block:"nearest"}),y.forEach(e=>e.classList.remove("active")),t.classList.add("active")):window.open(t.href)}function P(e){e.forEach(e=>{let t;let r=e.target.getAttribute("id"),n=e.target.querySelectorAll("a");if(y.forEach(e=>{e.hash===`#${r}`?t=e:e.hash||n.forEach(r=>{r.href===e.href&&(t=e)})}),t){let r=k.indexOf(t);k.forEach(e=>{e.classList.remove("active")}),e.isIntersecting?k.push(t):-1!==r&&k.splice(r,1),k[0]&&(k[0].classList.add("active"),k[0].offsetParent?.scrollTo({top:k[0].offsetTop}))}})}return(0,t.createEffect)(()=>{let e;h&&m.text?.startsWith("[TOC]")&&(y=[...h.querySelectorAll(".n-md-toc a[href]")],x=[...h.querySelectorAll("h1, h2, h3, h4, h5, h6")],e=new IntersectionObserver(P,{rootMargin:"-50px 0px",threshold:.5}),x.forEach(t=>e.observe(t)),y.forEach(e=>{e.addEventListener("click",C)})),(0,t.onCleanup)(()=>{e&&(x.forEach(t=>e.unobserve(t)),e.disconnect()),y.forEach(e=>{e.removeEventListener("click",C)})})}),[(()=>{let t=s(),r=t.firstChild;return(0,e.effect)(()=>r.data=p()),t})(),(()=>{let e=u();return e.textContent=a.default,e})(),(0,e.createComponent)(t.Show,{get when(){return m.css},get children(){let t=s(),r=t.firstChild;return(0,e.effect)(()=>r.data=(0,n.css)(m.css)),t}}),(0,e.createComponent)(t.Switch,{get children(){return[(0,e.createComponent)(t.Match,{get when(){return m.children?.length},get children(){let r=d(),n=r.firstChild;return(0,e.insert)(n,(0,e.createComponent)(t.For,{get each(){return m.children},children:e=>e})),r}}),(0,e.createComponent)(t.Match,{get when(){return m.text},get children(){let t=f(),r=h;return"function"==typeof r?(0,e.use)(r,t):h=t,(0,e.effect)(()=>(0,e.className)(t,(0,n.cx)("n-md-box",m.class))),t}})]}})]}(0,o.customElement)("n-md",{class:void 0,pictureViewer:void 0,lazyPicture:void 0,lineNumber:!0,text:void 0,tools:void 0,getAnchorContainer:void 0,css:void 0,children:void 0,notRender:void 0,webWorker:void 0},(r,n)=>{let o=n.element,a=(0,t.mergeProps)({text:!r.notRender&&o.textContent||o.text,css:o.css,tools:o.tools,getAnchorContainer:o.getAnchorContainer},r);return(0,t.createEffect)(()=>{o.removeAttribute("css"),o.replaceChildren()}),(0,e.createComponent)(h,a)});const p=h;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return p}});const e=require("solid-js/web"),t=require("solid-js"),r=l(require("@moneko/common/lib/frameCallback")),n=require("@moneko/css"),o=require("solid-element");require("../code"),require("../img");const a=l(require("../md-style")),i=l(require("../theme"));function l(e){return e&&e.__esModule?e:{default:e}}function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(c=function(e){return e?r:t})(e)}const s=(0,e.template)("<style> "),u=(0,e.template)("<style>"),d=(0,e.template)('<article class="n-md-box" part="box"><div class="n-md-body" part="body">'),f=(0,e.template)('<article part="box">');function h(o){let l,h;let{baseStyle:p}=i.default,m=(0,t.mergeProps)({webWorker:!1,pictureViewer:!0,lazyPicture:!0,text:"",tools:["copy"],getAnchorContainer:()=>window},o);function g(){return new Worker(new URL("./worker.ts",require("url").pathToFileURL(__filename).toString()),{name:"workers/marked-completed"})}let b=m.webWorker?g():void 0;function v(e){h&&(h.innerHTML=e.data)}async function w(e){let{text:t,pictureViewer:r,lazyPicture:n,langToolbar:o,...a}=e,i=(await Promise.resolve().then(()=>(function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=c(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n})(require("marked-completed")))).default;l||((l=new i.Renderer).katexBlock=e=>`<n-katex display-mode="true">${e}</n-katex>`,l.katexInline=e=>`<n-katex>${e}</n-katex>`),l.image=(e,t,o)=>`<n-img lazy="${n}" disabled="${!r}" role="img" src="${e}" alt="${o}" ${t?`title="${t}"`:""}></n-img>`;let s=!!o?.length;l.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${s}" language="${t}" ${a.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},v({data:i(t,{renderer:l,langToolbar:o,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0,...a})})}(0,t.createEffect)(()=>{m.webWorker&&(b||(b=g()),b.addEventListener("message",v))}),(0,t.createEffect)(()=>{b?b.postMessage(JSON.stringify({text:m.text,langLineNumber:m.lineNumber,langToolbar:m.tools,pictureViewer:m.pictureViewer,lazyPicture:m.lazyPicture})):(0,r.default)(()=>w({text:m.text,langLineNumber:m.lineNumber,langToolbar:m.tools,pictureViewer:m.pictureViewer,lazyPicture:m.lazyPicture}))}),(0,t.onCleanup)(()=>{b&&(b.removeEventListener("message",v),b.terminate())});let y=[],x=[],k=[];function C(e){e.preventDefault(),e.stopPropagation();let t=e.target;t.hash?(h?.querySelector(decodeURIComponent(t.hash))?.scrollIntoView({behavior:"smooth",block:"nearest"}),y.forEach(e=>e.classList.remove("active")),t.classList.add("active")):window.open(t.href)}function P(e){e.forEach(e=>{let t;let r=e.target.getAttribute("id"),n=e.target.querySelectorAll("a");if(y.forEach(e=>{e.hash===`#${r}`?t=e:e.hash||n.forEach(r=>{r.href===e.href&&(t=e)})}),t){let r=k.indexOf(t);k.forEach(e=>{e.classList.remove("active")}),e.isIntersecting?k.push(t):-1!==r&&k.splice(r,1),k[0]&&(k[0].classList.add("active"),k[0].offsetParent?.scrollTo({top:k[0].offsetTop}))}})}return(0,t.createEffect)(()=>{let e;h&&m.text?.startsWith("[TOC]")&&(y=[...h.querySelectorAll(".n-md-toc a[href]")],x=[...h.querySelectorAll("h1, h2, h3, h4, h5, h6")],e=new IntersectionObserver(P,{rootMargin:"-50px 0px",threshold:.5}),x.forEach(t=>e.observe(t)),y.forEach(e=>{e.addEventListener("click",C)})),(0,t.onCleanup)(()=>{e&&(x.forEach(t=>e.unobserve(t)),e.disconnect()),y.forEach(e=>{e.removeEventListener("click",C)})})}),[(()=>{let t=s(),r=t.firstChild;return(0,e.effect)(()=>r.data=p()),t})(),(()=>{let e=u();return e.textContent=a.default,e})(),(0,e.createComponent)(t.Show,{get when(){return m.css},get children(){let t=s(),r=t.firstChild;return(0,e.effect)(()=>r.data=(0,n.css)(m.css)),t}}),(0,e.createComponent)(t.Switch,{get children(){return[(0,e.createComponent)(t.Match,{get when(){return m.children?.length},get children(){let r=d(),n=r.firstChild;return(0,e.insert)(n,(0,e.createComponent)(t.For,{get each(){return m.children},children:e=>e})),r}}),(0,e.createComponent)(t.Match,{get when(){return m.text},get children(){let t=f(),r=h;return"function"==typeof r?(0,e.use)(r,t):h=t,(0,e.effect)(()=>(0,e.className)(t,(0,n.cx)("n-md-box",m.class))),t}})]}})]}(0,o.customElement)("n-md",{class:void 0,pictureViewer:void 0,lazyPicture:void 0,lineNumber:!0,text:void 0,tools:void 0,getAnchorContainer:void 0,css:void 0,children:void 0,notRender:void 0,webWorker:void 0},(r,n)=>{let o=n.element,a=(0,t.mergeProps)({text:!r.notRender&&o.textContent||o.text,css:o.css,tools:o.tools,getAnchorContainer:o.getAnchorContainer},r);return(0,t.createEffect)(()=>{o.removeAttribute("css"),o.replaceChildren()}),(0,e.createComponent)(h,a)});const p=h;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/md/index.tsx"],"sourcesContent":["import { For, Match, Show, Switch, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { frameCallback } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport '../code';\nimport '../img';\nimport mdStyle from '../md-style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nfunction MD(_props: MdProps) {\n let renderer: marked.Renderer | undefined;\n let ref: HTMLDivElement | undefined;\n const { baseStyle } = theme;\n const props = mergeProps(\n {\n webWorker: false,\n pictureViewer: true,\n lazyPicture: true,\n text: '',\n tools: ['copy'],\n getAnchorContainer: () => window as unknown as HTMLElement,\n },\n _props,\n );\n\n function initWorker() {\n return new Worker(new URL('./worker.ts', import.meta.url), {\n name: 'workers/marked-completed',\n });\n }\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function update(e: { data: string }) {\n if (ref) {\n ref.innerHTML = e.data;\n }\n }\n async function postMessage(opt: {\n text: string;\n pictureViewer?: boolean;\n lazyPicture?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n }) {\n const { text, pictureViewer, lazyPicture, langToolbar, ...options } = opt;\n const marked = (await import('marked-completed')).default;\n\n if (!renderer) {\n renderer = new marked.Renderer();\n\n renderer.katexBlock = (code: string) => {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n };\n renderer.katexInline = (code: string) => {\n return `<n-katex>${code}</n-katex>`;\n };\n }\n\n renderer.image = (src: string, title: string, alt: string) => {\n return `<n-img lazy=\"${lazyPicture}\" disabled=\"${!pictureViewer}\" role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n };\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" language=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n update({\n data: marked.parse(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n }),\n });\n }\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n }),\n );\n } else {\n const call = () =>\n postMessage({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n });\n\n frameCallback(call);\n }\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n });\n let list: HTMLAnchorElement[] = [];\n let heading: HTMLHeadingElement[] = [];\n const active: HTMLAnchorElement[] = [];\n\n function handleAnchor(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n const a = e.target as HTMLAnchorElement;\n\n if (a.hash) {\n ref?.querySelector(decodeURIComponent(a.hash))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n list.forEach((item) => item.classList.remove('active'));\n a.classList.add('active');\n } else {\n window.open(a.href);\n }\n }\n function observerEntry(entries: IntersectionObserverEntry[]) {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const all = entry.target.querySelectorAll('a');\n let a: HTMLAnchorElement | undefined;\n\n list.forEach((l) => {\n if (l.hash === `#${id}`) {\n a = l;\n } else if (!l.hash) {\n all.forEach((e) => {\n if (e.href === l.href) {\n a = l;\n }\n });\n }\n });\n if (a) {\n const idx = active.indexOf(a);\n\n active.forEach((e) => {\n e.classList.remove('active');\n });\n if (entry.isIntersecting) {\n active.push(a);\n } else if (idx !== -1) {\n active.splice(idx, 1);\n }\n if (active[0]) {\n active[0].classList.add('active');\n active[0].offsetParent?.scrollTo({\n top: active[0].offsetTop,\n });\n }\n }\n });\n }\n createEffect(() => {\n let observer: IntersectionObserver;\n\n if (ref && props.text?.startsWith('[TOC]')) {\n list = [...ref.querySelectorAll<HTMLAnchorElement>('.n-md-toc a[href]')];\n heading = [...ref.querySelectorAll<HTMLHeadingElement>('h1, h2, h3, h4, h5, h6')];\n observer = new IntersectionObserver(observerEntry, {\n rootMargin: '-50px 0px',\n threshold: 0.5,\n });\n heading.forEach((e) => observer.observe(e));\n list.forEach((e) => {\n e.addEventListener('click', handleAnchor);\n });\n }\n onCleanup(() => {\n if (observer) {\n heading.forEach((e) => observer.unobserve(e));\n observer.disconnect();\n }\n list.forEach((e) => {\n e.removeEventListener('click', handleAnchor);\n });\n });\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={mdStyle} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Switch>\n <Match when={(props.children as [])?.length}>\n <article class=\"n-md-box\" part=\"box\">\n <div class=\"n-md-body\" part=\"body\">\n <For each={props.children as []}>{(e) => e}</For>\n </div>\n </article>\n </Match>\n <Match when={props.text}>\n <article ref={ref} class={cx('n-md-box', props.class)} part=\"box\" />\n </Match>\n </Switch>\n </>\n );\n}\n\nexport interface MdProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** md内容 */\n text?: string;\n /** 开启图片查看器\n * @since 2.0.8\n * @default true\n */\n pictureViewer?: boolean;\n /** 开启图片懒加载\n * @since 2.8.3\n * @default true\n */\n lazyPicture?: boolean;\n /** 显示代码块行号\n * @default true\n */\n lineNumber?: boolean;\n /** 开启代码块工具条\n * @default ['copy']\n */\n tools?: 'copy'[];\n /** 指定滚动的容器\n * @default () => window\n */\n getAnchorContainer?: () => HTMLElement;\n /** 不进行解析\n * @default false\n */\n notRender?: boolean;\n children?: JSX.Element;\n /**\n * 使用 web worker\n */\n webWorker?: boolean;\n}\n\nexport type MdElement = CustomElement<MdProps>;\n\ncustomElement<MdProps>(\n 'n-md',\n {\n class: void 0,\n pictureViewer: void 0,\n lazyPicture: void 0,\n lineNumber: true,\n text: void 0,\n tools: void 0,\n getAnchorContainer: void 0,\n css: void 0,\n children: void 0,\n notRender: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: (!_.notRender && el.textContent) || el.text,\n css: el.css,\n tools: el.tools,\n getAnchorContainer: el.getAnchorContainer,\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.replaceChildren();\n });\n return <MD {...props} />;\n },\n);\nexport default MD;\n"],"names":["MD","_props","renderer","ref","baseStyle","theme","props","mergeProps","webWorker","pictureViewer","lazyPicture","text","tools","getAnchorContainer","window","initWorker","Worker","URL","name","worker","update","e","innerHTML","data","postMessage","opt","langToolbar","options","marked","default","Renderer","katexBlock","code","katexInline","image","src","title","alt","toolbar","length","lang","langLineNumber","encodeURIComponent","parse","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","createEffect","addEventListener","JSON","stringify","lineNumber","frameCallback","onCleanup","removeEventListener","terminate","list","heading","active","handleAnchor","preventDefault","stopPropagation","a","target","hash","querySelector","decodeURIComponent","scrollIntoView","behavior","block","forEach","item","classList","remove","add","open","href","observerEntry","entries","entry","id","getAttribute","all","querySelectorAll","l","idx","indexOf","isIntersecting","push","splice","offsetParent","scrollTo","top","offsetTop","observer","startsWith","IntersectionObserver","rootMargin","threshold","observe","unobserve","disconnect","mdStyle","Show","css","Switch","Match","children","For","cx","class","customElement","notRender","_","el","element","textContent","removeAttribute","replaceChildren"],"rangeMappings":"","mappings":"kGAsTA,+CAAA,+CAtT8E,wBAChD,+CACN,yBACM,yBACvB,mBACA,4BACa,4BACF,oYAGlB,SAASA,EAAGC,CAAe,MACrBC,EACAC,EACJ,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CACrBC,EAAQC,GAAAA,YAAU,EACtB,CACEC,UAAW,CAAA,EACXC,cAAe,CAAA,EACfC,YAAa,CAAA,EACbC,KAAM,GACNC,MAAO,CAAC,OAAO,CACfC,mBAAoB,IAAMC,MAC5B,EACAb,GAGF,SAASc,IACP,OAAO,IAAIC,OAAO,IAAIC,IAAI,cAAe,qDAAkB,CACzDC,KAAM,0BACR,EACF,CAEA,IAAIC,EAA6Bb,EAAME,SAAS,CAAGO,IAAe,KAAK,EAEvE,SAASK,EAAOC,CAAmB,EAC7BlB,GACFA,CAAAA,EAAImB,SAAS,CAAGD,EAAEE,IAAI,AAAD,CAEzB,CACA,eAAeC,EAAYC,CAM1B,EACC,GAAM,CAAEd,KAAAA,CAAI,CAAEF,cAAAA,CAAa,CAAEC,YAAAA,CAAW,CAAEgB,YAAAA,CAAW,CAAE,GAAGC,EAAS,CAAGF,EAChEG,EAAS,AAAC,CAAA,MAAM,yeAAA,QAAO,qBAAkB,EAAGC,OAAO,CAEpD3B,IAGHA,AAFAA,CAAAA,EAAW,IAAI0B,EAAOE,QAAQ,AAAC,EAEtBC,UAAU,CAAG,AAACC,GACd,CAAC,6BAA6B,EAAEA,EAAK,UAAU,CAAC,CAEzD9B,EAAS+B,WAAW,CAAG,AAACD,GACf,CAAC,SAAS,EAAEA,EAAK,UAAU,CAAC,EAIvC9B,EAASgC,KAAK,CAAG,CAACC,EAAaC,EAAeC,IACrC,CAAC,aAAa,EAAE3B,EAAY,YAAY,EAAE,CAACD,EAAc,kBAAkB,EAAE0B,EAAI,OAAO,EAAEE,EAAI,EAAE,EAAED,EAAQ,CAAC,OAAO,EAAEA,EAAM,CAAC,CAAC,CAAG,GAAG,SAAS,CAAC,CAErJ,IAAME,EAAU,CAAC,CAACZ,GAAaa,MAE/BrC,CAAAA,EAAS8B,IAAI,CAAG,SAAUA,CAAY,CAAEQ,CAAY,QAClD,AAAIA,AAAS,aAATA,EACK,CAAC,cAAc,EAAER,EAAK,IAAI,CAAC,CAG7B,CAAC,gCAAgC,EAAEM,EAAQ,YAAY,EAAEE,EAAK,EAAE,EACrEb,EAAQc,cAAc,CAAG,qBAAuB,GACjD,CAAC,EAAEC,mBAAmBV,GAAM,SAAS,CAAC,AACzC,EAEAZ,EAAO,CACLG,KAAMK,EAAOe,KAAK,CAAChC,EAAM,CACvBT,SAAUA,EACVwB,YAAaA,EACbkB,aAAc,KACdC,OAAQ,CAAA,EACRC,SAAU,CAAA,EACVC,WAAY,CAAA,EACZC,YAAa,CAAA,EACbC,MAAO,CAAA,EACP,GAAGtB,CAAO,AACZ,EACF,EACF,CACAuB,GAAAA,cAAY,EAAC,KACP5C,EAAME,SAAS,GACZW,GACHA,CAAAA,EAASJ,GAAW,EAEtBI,EAAOgC,gBAAgB,CAAC,UAAW/B,GAEvC,GAEA8B,GAAAA,cAAY,EAAC,KACP/B,EACFA,EAAOK,WAAW,CAChB4B,KAAKC,SAAS,CAAC,CACb1C,KAAML,EAAMK,IAAI,CAChB8B,eAAgBnC,EAAMgD,UAAU,CAChC5B,YAAapB,EAAMM,KAAK,CACxBH,cAAeH,EAAMG,aAAa,CAClCC,YAAaJ,EAAMI,WAAW,AAChC,IAYF6C,GAAAA,SAAa,EATA,IACX/B,EAAY,CACVb,KAAML,EAAMK,IAAI,CAChB8B,eAAgBnC,EAAMgD,UAAU,CAChC5B,YAAapB,EAAMM,KAAK,CACxBH,cAAeH,EAAMG,aAAa,CAClCC,YAAaJ,EAAMI,WAAW,AAChC,GAIN,GACA8C,GAAAA,WAAS,EAAC,KACJrC,IACFA,EAAOsC,mBAAmB,CAAC,UAAWrC,GACtCD,EAAOuC,SAAS,GAEpB,GACA,IAAIC,EAA4B,EAAE,CAC9BC,EAAgC,EAAE,CAChCC,EAA8B,EAAE,CAEtC,SAASC,EAAazC,CAAQ,EAC5BA,EAAE0C,cAAc,GAChB1C,EAAE2C,eAAe,GACjB,IAAMC,EAAI5C,EAAE6C,MAAM,AAEdD,CAAAA,EAAEE,IAAI,EACRhE,GAAKiE,cAAcC,mBAAmBJ,EAAEE,IAAI,IAAIG,eAAe,CAC7DC,SAAU,SACVC,MAAO,SACT,GACAb,EAAKc,OAAO,CAAC,AAACC,GAASA,EAAKC,SAAS,CAACC,MAAM,CAAC,WAC7CX,EAAEU,SAAS,CAACE,GAAG,CAAC,WAEhB/D,OAAOgE,IAAI,CAACb,EAAEc,IAAI,CAEtB,CACA,SAASC,EAAcC,CAAoC,EACzDA,EAAQR,OAAO,CAAC,AAACS,QAGXjB,EAFJ,IAAMkB,EAAKD,EAAMhB,MAAM,CAACkB,YAAY,CAAC,MAC/BC,EAAMH,EAAMhB,MAAM,CAACoB,gBAAgB,CAAC,KAc1C,GAXA3B,EAAKc,OAAO,CAAC,AAACc,IACRA,EAAEpB,IAAI,GAAK,CAAC,CAAC,EAAEgB,EAAG,CAAC,CACrBlB,EAAIsB,EACMA,EAAEpB,IAAI,EAChBkB,EAAIZ,OAAO,CAAC,AAACpD,IACPA,EAAE0D,IAAI,GAAKQ,EAAER,IAAI,EACnBd,CAAAA,EAAIsB,CAAAA,CAER,EAEJ,GACItB,EAAG,CACL,IAAMuB,EAAM3B,EAAO4B,OAAO,CAACxB,GAE3BJ,EAAOY,OAAO,CAAC,AAACpD,IACdA,EAAEsD,SAAS,CAACC,MAAM,CAAC,SACrB,GACIM,EAAMQ,cAAc,CACtB7B,EAAO8B,IAAI,CAAC1B,GACK,KAARuB,GACT3B,EAAO+B,MAAM,CAACJ,EAAK,GAEjB3B,CAAM,CAAC,EAAE,GACXA,CAAM,CAAC,EAAE,CAACc,SAAS,CAACE,GAAG,CAAC,UACxBhB,CAAM,CAAC,EAAE,CAACgC,YAAY,EAAEC,SAAS,CAC/BC,IAAKlC,CAAM,CAAC,EAAE,CAACmC,SAAS,AAC1B,GAEJ,CACF,EACF,CA2BA,MA1BA9C,GAAAA,cAAY,EAAC,KACX,IAAI+C,EAEA9F,GAAOG,EAAMK,IAAI,EAAEuF,WAAW,WAChCvC,EAAO,IAAIxD,EAAImF,gBAAgB,CAAoB,qBAAqB,CACxE1B,EAAU,IAAIzD,EAAImF,gBAAgB,CAAqB,0BAA0B,CACjFW,EAAW,IAAIE,qBAAqBnB,EAAe,CACjDoB,WAAY,YACZC,UAAW,EACb,GACAzC,EAAQa,OAAO,CAAC,AAACpD,GAAM4E,EAASK,OAAO,CAACjF,IACxCsC,EAAKc,OAAO,CAAC,AAACpD,IACZA,EAAE8B,gBAAgB,CAAC,QAASW,EAC9B,IAEFN,GAAAA,WAAS,EAAC,KACJyC,IACFrC,EAAQa,OAAO,CAAC,AAACpD,GAAM4E,EAASM,SAAS,CAAClF,IAC1C4E,EAASO,UAAU,IAErB7C,EAAKc,OAAO,CAAC,AAACpD,IACZA,EAAEoC,mBAAmB,CAAC,QAASK,EACjC,EACF,EACF,iEAIwB1D,gDACAqG,SAAO,6BAC1BC,MAAI,oBAAOpG,EAAMqG,GAAG,wEACCA,GAAAA,KAAG,EAACrG,EAAMqG,GAAG,8BAElCC,QAAM,8CACJC,OAAK,oBAAQvG,EAAMwG,QAAQ,EAASvE,2FAG9BwE,KAAG,oBAAOzG,EAAMwG,QAAQ,WAAS,AAACzF,GAAMA,gCAI9CwF,OAAK,oBAAOvG,EAAMK,IAAI,6BACPR,4CAAAA,uCAAY6G,GAAAA,IAAE,EAAC,WAAY1G,EAAM2G,KAAK,aAK9D,CA4CAC,GAAAA,eAAa,EACX,OACA,CACED,MAAO,KAAK,EACZxG,cAAe,KAAK,EACpBC,YAAa,KAAK,EAClB4C,WAAY,CAAA,EACZ3C,KAAM,KAAK,EACXC,MAAO,KAAK,EACZC,mBAAoB,KAAK,EACzB8F,IAAK,KAAK,EACVG,SAAU,KAAK,EACfK,UAAW,KAAK,EAChB3G,UAAW,KAAK,CAClB,EACA,CAAC4G,EAAG3F,KACF,IAAM4F,EAAK5F,EAAI6F,OAAO,CAChBhH,EAAQC,GAAAA,YAAU,EACtB,CACEI,KAAM,AAAC,CAACyG,EAAED,SAAS,EAAIE,EAAGE,WAAW,EAAKF,EAAG1G,IAAI,CACjDgG,IAAKU,EAAGV,GAAG,CACX/F,MAAOyG,EAAGzG,KAAK,CACfC,mBAAoBwG,EAAGxG,kBAAkB,AAC3C,EACAuG,GAOF,MAJAlE,GAAAA,cAAY,EAAC,KACXmE,EAAGG,eAAe,CAAC,OACnBH,EAAGI,eAAe,EACpB,yBACQzH,EAAOM,EACjB,SAEF,EAAeN"}
1
+ {"version":3,"sources":["../../components/md/index.tsx"],"sourcesContent":["import { For, Match, Show, Switch, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { frameCallback } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport '../code';\nimport '../img';\nimport mdStyle from '../md-style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nfunction MD(_props: MdProps) {\n let renderer: marked.Renderer | undefined;\n let ref: HTMLDivElement | undefined;\n const { baseStyle } = theme;\n const props = mergeProps(\n {\n webWorker: false,\n pictureViewer: true,\n lazyPicture: true,\n text: '',\n tools: ['copy'],\n getAnchorContainer: () => window as unknown as HTMLElement,\n },\n _props,\n );\n\n function initWorker() {\n return new Worker(new URL('./worker.ts', import.meta.url), {\n name: 'workers/marked-completed',\n });\n }\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function update(e: { data: string }) {\n if (ref) {\n ref.innerHTML = e.data;\n }\n }\n async function postMessage(opt: {\n text: string;\n pictureViewer?: boolean;\n lazyPicture?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n }) {\n const { text, pictureViewer, lazyPicture, langToolbar, ...options } = opt;\n const marked = (await import('marked-completed')).default;\n\n if (!renderer) {\n renderer = new marked.Renderer();\n\n renderer.katexBlock = (code: string) => {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n };\n renderer.katexInline = (code: string) => {\n return `<n-katex>${code}</n-katex>`;\n };\n }\n\n renderer.image = (src: string, title: string, alt: string) => {\n return `<n-img lazy=\"${lazyPicture}\" disabled=\"${!pictureViewer}\" role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n };\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" language=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n update({\n data: marked(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n }),\n });\n }\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n }),\n );\n } else {\n const call = () =>\n postMessage({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n });\n\n frameCallback(call);\n }\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n });\n let list: HTMLAnchorElement[] = [];\n let heading: HTMLHeadingElement[] = [];\n const active: HTMLAnchorElement[] = [];\n\n function handleAnchor(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n const a = e.target as HTMLAnchorElement;\n\n if (a.hash) {\n ref?.querySelector(decodeURIComponent(a.hash))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n list.forEach((item) => item.classList.remove('active'));\n a.classList.add('active');\n } else {\n window.open(a.href);\n }\n }\n function observerEntry(entries: IntersectionObserverEntry[]) {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const all = entry.target.querySelectorAll('a');\n let a: HTMLAnchorElement | undefined;\n\n list.forEach((l) => {\n if (l.hash === `#${id}`) {\n a = l;\n } else if (!l.hash) {\n all.forEach((e) => {\n if (e.href === l.href) {\n a = l;\n }\n });\n }\n });\n if (a) {\n const idx = active.indexOf(a);\n\n active.forEach((e) => {\n e.classList.remove('active');\n });\n if (entry.isIntersecting) {\n active.push(a);\n } else if (idx !== -1) {\n active.splice(idx, 1);\n }\n if (active[0]) {\n active[0].classList.add('active');\n active[0].offsetParent?.scrollTo({\n top: active[0].offsetTop,\n });\n }\n }\n });\n }\n createEffect(() => {\n let observer: IntersectionObserver;\n\n if (ref && props.text?.startsWith('[TOC]')) {\n list = [...ref.querySelectorAll<HTMLAnchorElement>('.n-md-toc a[href]')];\n heading = [...ref.querySelectorAll<HTMLHeadingElement>('h1, h2, h3, h4, h5, h6')];\n observer = new IntersectionObserver(observerEntry, {\n rootMargin: '-50px 0px',\n threshold: 0.5,\n });\n heading.forEach((e) => observer.observe(e));\n list.forEach((e) => {\n e.addEventListener('click', handleAnchor);\n });\n }\n onCleanup(() => {\n if (observer) {\n heading.forEach((e) => observer.unobserve(e));\n observer.disconnect();\n }\n list.forEach((e) => {\n e.removeEventListener('click', handleAnchor);\n });\n });\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={mdStyle} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Switch>\n <Match when={(props.children as [])?.length}>\n <article class=\"n-md-box\" part=\"box\">\n <div class=\"n-md-body\" part=\"body\">\n <For each={props.children as []}>{(e) => e}</For>\n </div>\n </article>\n </Match>\n <Match when={props.text}>\n <article ref={ref} class={cx('n-md-box', props.class)} part=\"box\" />\n </Match>\n </Switch>\n </>\n );\n}\n\nexport interface MdProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** md内容 */\n text?: string;\n /** 开启图片查看器\n * @since 2.0.8\n * @default true\n */\n pictureViewer?: boolean;\n /** 开启图片懒加载\n * @since 2.8.3\n * @default true\n */\n lazyPicture?: boolean;\n /** 显示代码块行号\n * @default true\n */\n lineNumber?: boolean;\n /** 开启代码块工具条\n * @default ['copy']\n */\n tools?: 'copy'[];\n /** 指定滚动的容器\n * @default () => window\n */\n getAnchorContainer?: () => HTMLElement;\n /** 不进行解析\n * @default false\n */\n notRender?: boolean;\n children?: JSX.Element;\n /**\n * 使用 web worker\n */\n webWorker?: boolean;\n}\n\nexport type MdElement = CustomElement<MdProps>;\n\ncustomElement<MdProps>(\n 'n-md',\n {\n class: void 0,\n pictureViewer: void 0,\n lazyPicture: void 0,\n lineNumber: true,\n text: void 0,\n tools: void 0,\n getAnchorContainer: void 0,\n css: void 0,\n children: void 0,\n notRender: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: (!_.notRender && el.textContent) || el.text,\n css: el.css,\n tools: el.tools,\n getAnchorContainer: el.getAnchorContainer,\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.replaceChildren();\n });\n return <MD {...props} />;\n },\n);\nexport default MD;\n"],"names":["MD","_props","renderer","ref","baseStyle","theme","props","mergeProps","webWorker","pictureViewer","lazyPicture","text","tools","getAnchorContainer","window","initWorker","Worker","URL","name","worker","update","e","innerHTML","data","postMessage","opt","langToolbar","options","marked","default","Renderer","katexBlock","code","katexInline","image","src","title","alt","toolbar","length","lang","langLineNumber","encodeURIComponent","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","createEffect","addEventListener","JSON","stringify","lineNumber","frameCallback","onCleanup","removeEventListener","terminate","list","heading","active","handleAnchor","preventDefault","stopPropagation","a","target","hash","querySelector","decodeURIComponent","scrollIntoView","behavior","block","forEach","item","classList","remove","add","open","href","observerEntry","entries","entry","id","getAttribute","all","querySelectorAll","l","idx","indexOf","isIntersecting","push","splice","offsetParent","scrollTo","top","offsetTop","observer","startsWith","IntersectionObserver","rootMargin","threshold","observe","unobserve","disconnect","mdStyle","Show","css","Switch","Match","children","For","cx","class","customElement","notRender","_","el","element","textContent","removeAttribute","replaceChildren"],"rangeMappings":"","mappings":"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"}
package/lib/md/worker.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),self.importScripts(new URL("marked-completed",require("url").pathToFileURL(__filename).toString()).href),self.addEventListener("message",function(e){let t;try{let{text:n,pictureViewer:r,lazyPicture:a,langToolbar:l,...s}=JSON.parse(e.data),i=new self.marked.Renderer;i.katexBlock=function(e){return`<n-katex display-mode="true">${e}</n-katex>`},i.katexInline=function(e){return`<n-katex>${e}</n-katex>`},i.image=(e,t,n)=>`<n-img lazy="${a}" disabled="${!r}" role="img" src="${e}" alt="${n}" ${t?`title="${t}"`:""}></n-img>`;let o=!!l?.length;i.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${o}" language="${t}" ${s.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},t=self.marked.parse(n,{renderer:i,langToolbar:l,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0,...s})}catch(e){t=e}self.postMessage(t)},!1);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),self.importScripts(new URL("marked-completed",require("url").pathToFileURL(__filename).toString()).href),self.addEventListener("message",function(e){let t;try{let{text:n,pictureViewer:r,lazyPicture:a,langToolbar:l,...s}=JSON.parse(e.data),i=new self.marked.Renderer;i.katexBlock=function(e){return`<n-katex display-mode="true">${e}</n-katex>`},i.katexInline=function(e){return`<n-katex>${e}</n-katex>`},i.image=(e,t,n)=>`<n-img lazy="${a}" disabled="${!r}" role="img" src="${e}" alt="${n}" ${t?`title="${t}"`:""}></n-img>`;let o=!!l?.length;i.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${o}" language="${t}" ${s.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},t=self.marked(n,{renderer:i,langToolbar:l,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0,...s})}catch(e){t=e}self.postMessage(t)},!1);
2
2
  //# sourceMappingURL=worker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/md/worker.ts"],"sourcesContent":["import type { MarkedOptions } from 'marked-completed';\n\nself.importScripts(new URL('marked-completed', import.meta.url).href);\n\nfunction onMessage(e: MessageEvent<string>) {\n let result;\n\n try {\n const { text, pictureViewer, lazyPicture, langToolbar, ...options } = JSON.parse(e.data) as {\n text: string;\n pictureViewer?: boolean;\n lazyPicture?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n } & MarkedOptions;\n const renderer = new self.marked.Renderer();\n\n renderer.katexBlock = function (code: string) {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n };\n renderer.katexInline = function (code: string) {\n return `<n-katex>${code}</n-katex>`;\n };\n renderer.image = (src: string, title: string, alt: string) => {\n return `<n-img lazy=\"${lazyPicture}\" disabled=\"${!pictureViewer}\" role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n };\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" language=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n result = self.marked.parse(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n });\n } catch (error) {\n result = error;\n }\n self.postMessage(result);\n}\n\nself.addEventListener('message', onMessage, false);\n"],"names":["self","importScripts","URL","href","addEventListener","e","result","text","pictureViewer","lazyPicture","langToolbar","options","JSON","parse","data","renderer","marked","Renderer","katexBlock","code","katexInline","image","src","title","alt","toolbar","length","lang","langLineNumber","encodeURIComponent","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","error","postMessage"],"rangeMappings":"","mappings":"oEAEAA,KAAKC,aAAa,CAAC,IAAIC,IAAI,mBAAoB,qDAAiBC,IAAI,EAqDpEH,KAAKI,gBAAgB,CAAC,UAnDtB,SAAmBC,CAAuB,EACxC,IAAIC,EAEJ,GAAI,CACF,GAAM,CAAEC,KAAAA,CAAI,CAAEC,cAAAA,CAAa,CAAEC,YAAAA,CAAW,CAAEC,YAAAA,CAAW,CAAE,GAAGC,EAAS,CAAGC,KAAKC,KAAK,CAACR,EAAES,IAAI,EAOjFC,EAAW,IAAIf,KAAKgB,MAAM,CAACC,QAAQ,AAEzCF,CAAAA,EAASG,UAAU,CAAG,SAAUC,CAAY,EAC1C,MAAO,CAAC,6BAA6B,EAAEA,EAAK,UAAU,CAAC,AACzD,EACAJ,EAASK,WAAW,CAAG,SAAUD,CAAY,EAC3C,MAAO,CAAC,SAAS,EAAEA,EAAK,UAAU,CAAC,AACrC,EACAJ,EAASM,KAAK,CAAG,CAACC,EAAaC,EAAeC,IACrC,CAAC,aAAa,EAAEf,EAAY,YAAY,EAAE,CAACD,EAAc,kBAAkB,EAAEc,EAAI,OAAO,EAAEE,EAAI,EAAE,EAAED,EAAQ,CAAC,OAAO,EAAEA,EAAM,CAAC,CAAC,CAAG,GAAG,SAAS,CAAC,CAErJ,IAAME,EAAU,CAAC,CAACf,GAAagB,MAE/BX,CAAAA,EAASI,IAAI,CAAG,SAAUA,CAAY,CAAEQ,CAAY,QAClD,AAAIA,AAAS,aAATA,EACK,CAAC,cAAc,EAAER,EAAK,IAAI,CAAC,CAG7B,CAAC,gCAAgC,EAAEM,EAAQ,YAAY,EAAEE,EAAK,EAAE,EACrEhB,EAAQiB,cAAc,CAAG,qBAAuB,GACjD,CAAC,EAAEC,mBAAmBV,GAAM,SAAS,CAAC,AACzC,EAEAb,EAASN,KAAKgB,MAAM,CAACH,KAAK,CAACN,EAAM,CAC/BQ,SAAUA,EACVL,YAAaA,EACboB,aAAc,KACdC,OAAQ,CAAA,EACRC,SAAU,CAAA,EACVC,WAAY,CAAA,EACZC,YAAa,CAAA,EACbC,MAAO,CAAA,EACP,GAAGxB,CAAO,AACZ,EACF,CAAE,MAAOyB,EAAO,CACd9B,EAAS8B,CACX,CACApC,KAAKqC,WAAW,CAAC/B,EACnB,EAE4C,CAAA"}
1
+ {"version":3,"sources":["../../components/md/worker.ts"],"sourcesContent":["import type { MarkedOptions } from 'marked-completed';\n\nself.importScripts(new URL('marked-completed', import.meta.url).href);\n\nfunction onMessage(e: MessageEvent<string>) {\n let result;\n\n try {\n const { text, pictureViewer, lazyPicture, langToolbar, ...options } = JSON.parse(e.data) as {\n text: string;\n pictureViewer?: boolean;\n lazyPicture?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n } & MarkedOptions;\n const renderer = new self.marked.Renderer();\n\n renderer.katexBlock = function (code: string) {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n };\n renderer.katexInline = function (code: string) {\n return `<n-katex>${code}</n-katex>`;\n };\n renderer.image = (src: string, title: string, alt: string) => {\n return `<n-img lazy=\"${lazyPicture}\" disabled=\"${!pictureViewer}\" role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n };\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" language=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n result = self.marked(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n });\n } catch (error) {\n result = error;\n }\n self.postMessage(result);\n}\n\nself.addEventListener('message', onMessage, false);\n"],"names":["self","importScripts","URL","href","addEventListener","e","result","text","pictureViewer","lazyPicture","langToolbar","options","JSON","parse","data","renderer","marked","Renderer","katexBlock","code","katexInline","image","src","title","alt","toolbar","length","lang","langLineNumber","encodeURIComponent","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","error","postMessage"],"rangeMappings":"","mappings":"oEAEAA,KAAKC,aAAa,CAAC,IAAIC,IAAI,mBAAoB,qDAAiBC,IAAI,EAqDpEH,KAAKI,gBAAgB,CAAC,UAnDtB,SAAmBC,CAAuB,EACxC,IAAIC,EAEJ,GAAI,CACF,GAAM,CAAEC,KAAAA,CAAI,CAAEC,cAAAA,CAAa,CAAEC,YAAAA,CAAW,CAAEC,YAAAA,CAAW,CAAE,GAAGC,EAAS,CAAGC,KAAKC,KAAK,CAACR,EAAES,IAAI,EAOjFC,EAAW,IAAIf,KAAKgB,MAAM,CAACC,QAAQ,AAEzCF,CAAAA,EAASG,UAAU,CAAG,SAAUC,CAAY,EAC1C,MAAO,CAAC,6BAA6B,EAAEA,EAAK,UAAU,CAAC,AACzD,EACAJ,EAASK,WAAW,CAAG,SAAUD,CAAY,EAC3C,MAAO,CAAC,SAAS,EAAEA,EAAK,UAAU,CAAC,AACrC,EACAJ,EAASM,KAAK,CAAG,CAACC,EAAaC,EAAeC,IACrC,CAAC,aAAa,EAAEf,EAAY,YAAY,EAAE,CAACD,EAAc,kBAAkB,EAAEc,EAAI,OAAO,EAAEE,EAAI,EAAE,EAAED,EAAQ,CAAC,OAAO,EAAEA,EAAM,CAAC,CAAC,CAAG,GAAG,SAAS,CAAC,CAErJ,IAAME,EAAU,CAAC,CAACf,GAAagB,MAE/BX,CAAAA,EAASI,IAAI,CAAG,SAAUA,CAAY,CAAEQ,CAAY,QAClD,AAAIA,AAAS,aAATA,EACK,CAAC,cAAc,EAAER,EAAK,IAAI,CAAC,CAG7B,CAAC,gCAAgC,EAAEM,EAAQ,YAAY,EAAEE,EAAK,EAAE,EACrEhB,EAAQiB,cAAc,CAAG,qBAAuB,GACjD,CAAC,EAAEC,mBAAmBV,GAAM,SAAS,CAAC,AACzC,EAEAb,EAASN,KAAKgB,MAAM,CAACT,EAAM,CACzBQ,SAAUA,EACVL,YAAaA,EACboB,aAAc,KACdC,OAAQ,CAAA,EACRC,SAAU,CAAA,EACVC,WAAY,CAAA,EACZC,YAAa,CAAA,EACbC,MAAO,CAAA,EACP,GAAGxB,CAAO,AACZ,EACF,CAAE,MAAOyB,EAAO,CACd9B,EAAS8B,CACX,CACApC,KAAKqC,WAAW,CAAC/B,EACnB,EAE4C,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neko-ui",
3
- "version": "2.8.9",
3
+ "version": "2.8.11",
4
4
  "description": "WebComponents UI Libraries",
5
5
  "main": "umd/index.js",
6
6
  "types": "types/index.d.ts",