neko-ui 2.8.11 → 2.8.13-beta.0
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/code/index.js +1 -1
- package/es/code/index.js.map +1 -1
- package/lib/code/index.js +1 -1
- package/lib/code/index.js.map +1 -1
- package/package.json +2 -2
- package/umd/index.js +3 -3
- package/umd/js/1547afc8add1a478.js +1 -0
- package/umd/js/35eff6dbb32d214d.js +1 -0
- package/umd/js/db3220b76828f116.js +2 -0
- package/umd/js/079529b52e4d600a.js +0 -1
- package/umd/js/9e3ae53bed984d3e.js +0 -1
- package/umd/js/bf612d719ce89f65.js +0 -2
package/es/code/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import{use as e}from"solid-js/web";import{template as t}from"solid-js/web";import{setAttribute as o}from"solid-js/web";import{insert as r}from"solid-js/web";import{effect as i}from"solid-js/web";import{delegateEvents as n}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{className as l}from"solid-js/web";import{classList as a}from"solid-js/web";import{addEventListener as d}from"solid-js/web";let m=t('<div class="toolbar"><button class="toolbar-copy" aria-label="copy">'),u=t("<pre><code> "),c=t("<style> "),g=t("<style>"),v=t("<div><textarea>");import{Show as f,createEffect as p,createSignal as b,mergeProps as h,onCleanup as $,onMount as w,untrack as _}from"solid-js";import C from"@moneko/common/lib/isFunction";import k from"@moneko/common/lib/setClipboard";import{css as j,cx as y}from"@moneko/css";import{customElement as L}from"solid-element";import{style as E}from"./style";import x from"../prism";import N from"../prism/css";import W from"../theme";function I(t){let n;let{baseStyle:h}=W,L=/^diff-([\w-]+)/i,[I,R]=b(""),[A,M]=b(20),[O,P]=b(!1);function U(){return new IntersectionObserver(e=>{P(e[0].isIntersecting)})}function B(){return new Worker(new URL("./worker.ts",import.meta.url),{name:"workers/prismjs"})}let F=t.webWorker?void 0:U(),H=t.webWorker?B():void 0;function J(){k(_(I),n)}function S(){return(()=>{let c=u(),g=c.firstChild,v=n,p=g.firstChild;return r(c,s(f,{get when(){return t.toolbar},get children(){let e=m();return d(e.firstChild,"click",J,!0),i(()=>{var r;return o(e,"data-language",null==(r=t.language)?void 0:r.split(" ")[0])}),e}}),g),"function"==typeof v?e(v,g):n=g,i(e=>{let o={[`language-${t.language}`]:!!t.language,"line-numbers":t.lineNumber,"not-toolbar":!t.toolbar,[t.class]:!t.edit},r=`language-${t.language}`,i=I();return e._v$=a(c,o,e._v$),r!==e._v$2&&l(g,e._v$2=r),i!==e._v$3&&(p.data=e._v$3=i),e},{_v$:void 0,_v$2:void 0,_v$3:void 0}),c})()}function T({target:e}){let o=`${e.value}${/\n$/.test(e.value)?"":""}`;R(o),C(t.onChange)&&t.onChange(o)}function q(e){n.innerHTML=e.data,M(n.getBoundingClientRect().height-(t.toolbar?40:16))}function z(){F&&(F.unobserve(n),F.disconnect())}return p(()=>{if(t.code)try{R(decodeURIComponent(t.code))}catch(e){R(t.code)}else R("")}),p(()=>{t.webWorker?(H||(H=B()),H.addEventListener("message",q)):F||(F=U())}),p(()=>{if(H)H.postMessage(JSON.stringify({language:t.language,code:I()}));else{var e,o;e=t.language||"markup",(o=I())&&O()&&(z(),L.test(e)&&!x.languages[e]&&(x.languages[e]=x.languages.diff),q({data:x.highlight(`${o}
|
|
2
|
-
`,x.languages[e]||x.languages.markup,e)}))}}),w(()=>{null==F||F.observe(n)}),$(()=>{H&&(H.removeEventListener("message",q),H.terminate()),z()}),[(()=>{let e=c(),t=e.firstChild;return i(()=>t.data=h()),e})(),(()=>{let e=c(),t=e.firstChild;return i(()=>t.data=N()),e})(),(()=>{let e=g();return e.textContent=E,e})(),s(f,{get when(){return t.css},get children(){let e=c(),o=e.firstChild;return i(()=>o.data=j(t.css)),e}}),s(f,{get when(){return t.edit},get fallback(){return s(S,{})},get children(){let e=v(),o=e.firstChild;return d(o,"input",T,!0),r(e,s(S,{}),null),i(r=>{let i=y("n-editor",t.class),n=!!t.lineNumber,s=!t.toolbar,a=`${A()}px`;return i!==r._v$4&&l(e,r._v$4=i),n!==r._v$5&&o.classList.toggle("line-numbers",r._v$5=n),s!==r._v$6&&o.classList.toggle("not-toolbar",r._v$6=s),a!==r._v$7&&(null!=(r._v$7=a)?o.style.setProperty("height",a):o.style.removeProperty("height")),r},{_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),i(()=>o.value=t.code),e}})]}L("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,lineNumber:void 0,onChange:void 0,webWorker:void 0},(e,t)=>{let o=t.element,r=h({code:o.textContent,css:o.css,onChange(e){o.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return p(()=>{o.replaceChildren(),o.removeAttribute("css")}),s(I,r)});export default I;n(["click","input"]);
|
|
2
|
+
`,x.languages[e]||x.languages.markup,e)}))}}),w(()=>{n&&(null==F||F.observe(n))}),$(()=>{H&&(H.removeEventListener("message",q),H.terminate()),z()}),[(()=>{let e=c(),t=e.firstChild;return i(()=>t.data=h()),e})(),(()=>{let e=c(),t=e.firstChild;return i(()=>t.data=N()),e})(),(()=>{let e=g();return e.textContent=E,e})(),s(f,{get when(){return t.css},get children(){let e=c(),o=e.firstChild;return i(()=>o.data=j(t.css)),e}}),s(f,{get when(){return t.edit},get fallback(){return s(S,{})},get children(){let e=v(),o=e.firstChild;return d(o,"input",T,!0),r(e,s(S,{}),null),i(r=>{let i=y("n-editor",t.class),n=!!t.lineNumber,s=!t.toolbar,a=`${A()}px`;return i!==r._v$4&&l(e,r._v$4=i),n!==r._v$5&&o.classList.toggle("line-numbers",r._v$5=n),s!==r._v$6&&o.classList.toggle("not-toolbar",r._v$6=s),a!==r._v$7&&(null!=(r._v$7=a)?o.style.setProperty("height",a):o.style.removeProperty("height")),r},{_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),i(()=>o.value=t.code),e}})]}L("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,lineNumber:void 0,onChange:void 0,webWorker:void 0},(e,t)=>{let o=t.element,r=h({code:o.textContent,css:o.css,onChange(e){o.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return p(()=>{o.replaceChildren(),o.removeAttribute("css")}),s(I,r)});export default I;n(["click","input"]);
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/es/code/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/code/index.tsx"],"sourcesContent":["import {\n Show,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport Prism from '../prism';\nimport prismCss from '../prism/css';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言 */\n language?: string;\n /** 显示代码行号 */\n lineNumber?: boolean;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 编辑修改时的回调 */\n onChange?: (code: string) => void;\n children?: JSX.Element;\n /**\n * 使用 web worker\n * @default true\n */\n webWorker?: boolean;\n}\n\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { baseStyle } = theme;\n let codeEl: HTMLPreElement;\n const diffLang = /^diff-([\\w-]+)/i;\n const [code, setCode] = createSignal<string>('');\n const [hei, setHei] = createSignal(20);\n const [isIntersecting, setIsIntersecting] = createSignal(false);\n\n function initObserver() {\n return new IntersectionObserver((entries) => {\n setIsIntersecting(entries[0].isIntersecting);\n });\n }\n function initWorker() {\n return new Worker(new URL('./worker.ts', import.meta.url), {\n name: 'workers/prismjs',\n });\n }\n // eslint-disable-next-line solid/reactivity\n let observer = props.webWorker ? void 0 : initObserver();\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n function Pre() {\n return (\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n [props.class as string]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={props.language?.split(' ')[0]}>\n <button class=\"toolbar-copy\" aria-label=\"copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} class={`language-${props.language}`} textContent={code()} />\n </pre>\n );\n }\n function change({ target }: { target: HTMLTextAreaElement }) {\n const c = `${target.value}${/\\n$/.test(target.value) ? '\\u200b' : ''}`;\n\n setCode(c);\n if (isFunction(props.onChange)) {\n props.onChange(c);\n }\n }\n function update(e: { data: string }) {\n codeEl.innerHTML = e.data;\n setHei(codeEl.getBoundingClientRect().height - (props.toolbar ? 40 : 16));\n }\n function cleanObserver() {\n if (observer) {\n // 停止观察目标元素\n observer.unobserve(codeEl);\n observer.disconnect();\n }\n }\n function postMessage(language: string, value?: string) {\n if (!value || !isIntersecting()) return;\n cleanObserver();\n if (diffLang.test(language) && !Prism.languages[language]) {\n Prism.languages[language] = Prism.languages.diff;\n }\n update({\n data: Prism.highlight(\n `${value}\\n`,\n Prism.languages[language] || Prism.languages.markup,\n language,\n ),\n });\n }\n createEffect(() => {\n if (props.code) {\n try {\n setCode(decodeURIComponent(props.code));\n } catch (error) {\n setCode(props.code);\n }\n } else {\n setCode('');\n }\n });\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n } else if (!observer) {\n observer = initObserver();\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n language: props.language,\n code: code(),\n }),\n );\n } else {\n postMessage(props.language || 'markup', code());\n }\n });\n onMount(() => {\n // 开始观察目标元素\n observer?.observe(codeEl);\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n cleanObserver();\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={prismCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Show when={props.edit} fallback={<Pre />}>\n <div class={cx('n-editor', props.class)}>\n <textarea\n value={props.code}\n classList={{\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n }}\n style={{ height: `${hei()}px` }}\n onInput={change}\n />\n <Pre />\n </div>\n </Show>\n </>\n );\n}\n\ncustomElement<CodeProps>(\n 'n-code',\n {\n class: void 0,\n code: void 0,\n language: void 0,\n children: void 0,\n edit: void 0,\n toolbar: void 0,\n css: void 0,\n lineNumber: void 0,\n onChange: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n code: el.textContent,\n css: el.css,\n onChange(val: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return <Code {...props} />;\n },\n);\nexport default Code;\n"],"names":["Show","createEffect","createSignal","mergeProps","onCleanup","onMount","untrack","isFunction","setClipboard","css","cx","customElement","style","Prism","prismCss","theme","Code","props","codeEl","baseStyle","diffLang","code","setCode","hei","setHei","isIntersecting","setIsIntersecting","initObserver","IntersectionObserver","entries","initWorker","Worker","URL","url","name","observer","webWorker","worker","copy","Pre","toolbar","language","split","lineNumber","class","edit","change","target","c","value","test","onChange","update","e","innerHTML","data","getBoundingClientRect","height","cleanObserver","unobserve","disconnect","decodeURIComponent","error","addEventListener","postMessage","JSON","stringify","languages","diff","highlight","markup","observe","removeEventListener","terminate","children","_","opt","el","element","textContent","val","dispatchEvent","CustomEvent","detail","replaceChildren","removeAttribute"],"rangeMappings":";","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/code/index.tsx"],"sourcesContent":["import {\n Show,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport Prism from '../prism';\nimport prismCss from '../prism/css';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言 */\n language?: string;\n /** 显示代码行号 */\n lineNumber?: boolean;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 编辑修改时的回调 */\n onChange?: (code: string) => void;\n children?: JSX.Element;\n /**\n * 使用 web worker\n * @default true\n */\n webWorker?: boolean;\n}\n\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { baseStyle } = theme;\n let codeEl: HTMLPreElement;\n const diffLang = /^diff-([\\w-]+)/i;\n const [code, setCode] = createSignal<string>('');\n const [hei, setHei] = createSignal(20);\n const [isIntersecting, setIsIntersecting] = createSignal(false);\n\n function initObserver() {\n return new IntersectionObserver((entries) => {\n setIsIntersecting(entries[0].isIntersecting);\n });\n }\n function initWorker() {\n return new Worker(new URL('./worker.ts', import.meta.url), {\n name: 'workers/prismjs',\n });\n }\n // eslint-disable-next-line solid/reactivity\n let observer = props.webWorker ? void 0 : initObserver();\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n function Pre() {\n return (\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n [props.class as string]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={props.language?.split(' ')[0]}>\n <button class=\"toolbar-copy\" aria-label=\"copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} class={`language-${props.language}`} textContent={code()} />\n </pre>\n );\n }\n function change({ target }: { target: HTMLTextAreaElement }) {\n const c = `${target.value}${/\\n$/.test(target.value) ? '\\u200b' : ''}`;\n\n setCode(c);\n if (isFunction(props.onChange)) {\n props.onChange(c);\n }\n }\n function update(e: { data: string }) {\n codeEl.innerHTML = e.data;\n setHei(codeEl.getBoundingClientRect().height - (props.toolbar ? 40 : 16));\n }\n function cleanObserver() {\n if (observer) {\n // 停止观察目标元素\n observer.unobserve(codeEl);\n observer.disconnect();\n }\n }\n function postMessage(language: string, value?: string) {\n if (!value || !isIntersecting()) return;\n cleanObserver();\n if (diffLang.test(language) && !Prism.languages[language]) {\n Prism.languages[language] = Prism.languages.diff;\n }\n update({\n data: Prism.highlight(\n `${value}\\n`,\n Prism.languages[language] || Prism.languages.markup,\n language,\n ),\n });\n }\n createEffect(() => {\n if (props.code) {\n try {\n setCode(decodeURIComponent(props.code));\n } catch (error) {\n setCode(props.code);\n }\n } else {\n setCode('');\n }\n });\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n } else if (!observer) {\n observer = initObserver();\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n language: props.language,\n code: code(),\n }),\n );\n } else {\n postMessage(props.language || 'markup', code());\n }\n });\n onMount(() => {\n if (codeEl) {\n // 开始观察目标元素\n observer?.observe(codeEl);\n }\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n cleanObserver();\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={prismCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Show when={props.edit} fallback={<Pre />}>\n <div class={cx('n-editor', props.class)}>\n <textarea\n value={props.code}\n classList={{\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n }}\n style={{ height: `${hei()}px` }}\n onInput={change}\n />\n <Pre />\n </div>\n </Show>\n </>\n );\n}\n\ncustomElement<CodeProps>(\n 'n-code',\n {\n class: void 0,\n code: void 0,\n language: void 0,\n children: void 0,\n edit: void 0,\n toolbar: void 0,\n css: void 0,\n lineNumber: void 0,\n onChange: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n code: el.textContent,\n css: el.css,\n onChange(val: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return <Code {...props} />;\n },\n);\nexport default Code;\n"],"names":["Show","createEffect","createSignal","mergeProps","onCleanup","onMount","untrack","isFunction","setClipboard","css","cx","customElement","style","Prism","prismCss","theme","Code","props","codeEl","baseStyle","diffLang","code","setCode","hei","setHei","isIntersecting","setIsIntersecting","initObserver","IntersectionObserver","entries","initWorker","Worker","URL","url","name","observer","webWorker","worker","copy","Pre","toolbar","language","split","lineNumber","class","edit","change","target","c","value","test","onChange","update","e","innerHTML","data","getBoundingClientRect","height","cleanObserver","unobserve","disconnect","decodeURIComponent","error","addEventListener","postMessage","JSON","stringify","languages","diff","highlight","markup","observe","removeEventListener","terminate","children","_","opt","el","element","textContent","val","dispatchEvent","CustomEvent","detail","replaceChildren","removeAttribute"],"rangeMappings":";","mappings":"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"}
|
package/lib/code/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return h}});const e=require("solid-js/web"),t=require("solid-js"),n=c(require("@moneko/common/lib/isFunction")),r=c(require("@moneko/common/lib/setClipboard")),o=require("@moneko/css"),a=require("solid-element"),l=require("./style"),i=c(require("../prism")),s=c(require("../prism/css")),u=c(require("../theme"));function c(e){return e&&e.__esModule?e:{default:e}}const d=(0,e.template)('<div class="toolbar"><button class="toolbar-copy" aria-label="copy">'),g=(0,e.template)("<pre><code> "),f=(0,e.template)("<style> "),v=(0,e.template)("<style>"),m=(0,e.template)("<div><textarea>");function p(a){let c;let{baseStyle:p}=u.default,h=/^diff-([\w-]+)/i,[b,$]=(0,t.createSignal)(""),[_,C]=(0,t.createSignal)(20),[w,k]=(0,t.createSignal)(!1);function y(){return new IntersectionObserver(e=>{k(e[0].isIntersecting)})}function E(){return new Worker(new URL("./worker.ts",require("url").pathToFileURL(__filename).toString()),{name:"workers/prismjs"})}let q=a.webWorker?void 0:y(),L=a.webWorker?E():void 0;function S(){(0,r.default)((0,t.untrack)(b),c)}function x(){return(()=>{let n=g(),r=n.firstChild,o=c,l=r.firstChild;return(0,e.insert)(n,(0,e.createComponent)(t.Show,{get when(){return a.toolbar},get children(){let t=d(),n=t.firstChild;return(0,e.addEventListener)(n,"click",S,!0),(0,e.effect)(()=>(0,e.setAttribute)(t,"data-language",a.language?.split(" ")[0])),t}}),r),"function"==typeof o?(0,e.use)(o,r):c=r,(0,e.effect)(t=>{let o={[`language-${a.language}`]:!!a.language,"line-numbers":a.lineNumber,"not-toolbar":!a.toolbar,[a.class]:!a.edit},i=`language-${a.language}`,s=b();return t._v$=(0,e.classList)(n,o,t._v$),i!==t._v$2&&(0,e.className)(r,t._v$2=i),s!==t._v$3&&(l.data=t._v$3=s),t},{_v$:void 0,_v$2:void 0,_v$3:void 0}),n})()}function N({target:e}){let t=`${e.value}${/\n$/.test(e.value)?"":""}`;$(t),(0,n.default)(a.onChange)&&a.onChange(t)}function j(e){c.innerHTML=e.data,C(c.getBoundingClientRect().height-(a.toolbar?40:16))}function M(){q&&(q.unobserve(c),q.disconnect())}return(0,t.createEffect)(()=>{if(a.code)try{$(decodeURIComponent(a.code))}catch(e){$(a.code)}else $("")}),(0,t.createEffect)(()=>{a.webWorker?(L||(L=E()),L.addEventListener("message",j)):q||(q=y())}),(0,t.createEffect)(()=>{if(L)L.postMessage(JSON.stringify({language:a.language,code:b()}));else{var e,t;e=a.language||"markup",(t=b())&&w()&&(M(),h.test(e)&&!i.default.languages[e]&&(i.default.languages[e]=i.default.languages.diff),j({data:i.default.highlight(`${t}
|
|
2
|
-
`,i.default.languages[e]||i.default.languages.markup,e)}))}}),(0,t.onMount)(()=>{q?.observe(c)}),(0,t.onCleanup)(()=>{L&&(L.removeEventListener("message",j),L.terminate()),M()}),[(()=>{let t=f(),n=t.firstChild;return(0,e.effect)(()=>n.data=p()),t})(),(()=>{let t=f(),n=t.firstChild;return(0,e.effect)(()=>n.data=(0,s.default)()),t})(),(()=>{let e=v();return e.textContent=l.style,e})(),(0,e.createComponent)(t.Show,{get when(){return a.css},get children(){let t=f(),n=t.firstChild;return(0,e.effect)(()=>n.data=(0,o.css)(a.css)),t}}),(0,e.createComponent)(t.Show,{get when(){return a.edit},get fallback(){return(0,e.createComponent)(x,{})},get children(){let t=m(),n=t.firstChild;return(0,e.addEventListener)(n,"input",N,!0),(0,e.insert)(t,(0,e.createComponent)(x,{}),null),(0,e.effect)(r=>{let l=(0,o.cx)("n-editor",a.class),i=!!a.lineNumber,s=!a.toolbar,u=`${_()}px`;return l!==r._v$4&&(0,e.className)(t,r._v$4=l),i!==r._v$5&&n.classList.toggle("line-numbers",r._v$5=i),s!==r._v$6&&n.classList.toggle("not-toolbar",r._v$6=s),u!==r._v$7&&(null!=(r._v$7=u)?n.style.setProperty("height",u):n.style.removeProperty("height")),r},{_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),(0,e.effect)(()=>n.value=a.code),t}})]}(0,a.customElement)("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,lineNumber:void 0,onChange:void 0,webWorker:void 0},(n,r)=>{let o=r.element,a=(0,t.mergeProps)({code:o.textContent,css:o.css,onChange(e){o.dispatchEvent(new CustomEvent("change",{detail:e}))}},n);return(0,t.createEffect)(()=>{o.replaceChildren(),o.removeAttribute("css")}),(0,e.createComponent)(p,a)});const h=p;(0,e.delegateEvents)(["click","input"]);
|
|
2
|
+
`,i.default.languages[e]||i.default.languages.markup,e)}))}}),(0,t.onMount)(()=>{c&&q?.observe(c)}),(0,t.onCleanup)(()=>{L&&(L.removeEventListener("message",j),L.terminate()),M()}),[(()=>{let t=f(),n=t.firstChild;return(0,e.effect)(()=>n.data=p()),t})(),(()=>{let t=f(),n=t.firstChild;return(0,e.effect)(()=>n.data=(0,s.default)()),t})(),(()=>{let e=v();return e.textContent=l.style,e})(),(0,e.createComponent)(t.Show,{get when(){return a.css},get children(){let t=f(),n=t.firstChild;return(0,e.effect)(()=>n.data=(0,o.css)(a.css)),t}}),(0,e.createComponent)(t.Show,{get when(){return a.edit},get fallback(){return(0,e.createComponent)(x,{})},get children(){let t=m(),n=t.firstChild;return(0,e.addEventListener)(n,"input",N,!0),(0,e.insert)(t,(0,e.createComponent)(x,{}),null),(0,e.effect)(r=>{let l=(0,o.cx)("n-editor",a.class),i=!!a.lineNumber,s=!a.toolbar,u=`${_()}px`;return l!==r._v$4&&(0,e.className)(t,r._v$4=l),i!==r._v$5&&n.classList.toggle("line-numbers",r._v$5=i),s!==r._v$6&&n.classList.toggle("not-toolbar",r._v$6=s),u!==r._v$7&&(null!=(r._v$7=u)?n.style.setProperty("height",u):n.style.removeProperty("height")),r},{_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),(0,e.effect)(()=>n.value=a.code),t}})]}(0,a.customElement)("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,lineNumber:void 0,onChange:void 0,webWorker:void 0},(n,r)=>{let o=r.element,a=(0,t.mergeProps)({code:o.textContent,css:o.css,onChange(e){o.dispatchEvent(new CustomEvent("change",{detail:e}))}},n);return(0,t.createEffect)(()=>{o.replaceChildren(),o.removeAttribute("css")}),(0,e.createComponent)(p,a)});const h=p;(0,e.delegateEvents)(["click","input"]);
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/lib/code/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/code/index.tsx"],"sourcesContent":["import {\n Show,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport Prism from '../prism';\nimport prismCss from '../prism/css';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言 */\n language?: string;\n /** 显示代码行号 */\n lineNumber?: boolean;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 编辑修改时的回调 */\n onChange?: (code: string) => void;\n children?: JSX.Element;\n /**\n * 使用 web worker\n * @default true\n */\n webWorker?: boolean;\n}\n\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { baseStyle } = theme;\n let codeEl: HTMLPreElement;\n const diffLang = /^diff-([\\w-]+)/i;\n const [code, setCode] = createSignal<string>('');\n const [hei, setHei] = createSignal(20);\n const [isIntersecting, setIsIntersecting] = createSignal(false);\n\n function initObserver() {\n return new IntersectionObserver((entries) => {\n setIsIntersecting(entries[0].isIntersecting);\n });\n }\n function initWorker() {\n return new Worker(new URL('./worker.ts', import.meta.url), {\n name: 'workers/prismjs',\n });\n }\n // eslint-disable-next-line solid/reactivity\n let observer = props.webWorker ? void 0 : initObserver();\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n function Pre() {\n return (\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n [props.class as string]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={props.language?.split(' ')[0]}>\n <button class=\"toolbar-copy\" aria-label=\"copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} class={`language-${props.language}`} textContent={code()} />\n </pre>\n );\n }\n function change({ target }: { target: HTMLTextAreaElement }) {\n const c = `${target.value}${/\\n$/.test(target.value) ? '\\u200b' : ''}`;\n\n setCode(c);\n if (isFunction(props.onChange)) {\n props.onChange(c);\n }\n }\n function update(e: { data: string }) {\n codeEl.innerHTML = e.data;\n setHei(codeEl.getBoundingClientRect().height - (props.toolbar ? 40 : 16));\n }\n function cleanObserver() {\n if (observer) {\n // 停止观察目标元素\n observer.unobserve(codeEl);\n observer.disconnect();\n }\n }\n function postMessage(language: string, value?: string) {\n if (!value || !isIntersecting()) return;\n cleanObserver();\n if (diffLang.test(language) && !Prism.languages[language]) {\n Prism.languages[language] = Prism.languages.diff;\n }\n update({\n data: Prism.highlight(\n `${value}\\n`,\n Prism.languages[language] || Prism.languages.markup,\n language,\n ),\n });\n }\n createEffect(() => {\n if (props.code) {\n try {\n setCode(decodeURIComponent(props.code));\n } catch (error) {\n setCode(props.code);\n }\n } else {\n setCode('');\n }\n });\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n } else if (!observer) {\n observer = initObserver();\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n language: props.language,\n code: code(),\n }),\n );\n } else {\n postMessage(props.language || 'markup', code());\n }\n });\n onMount(() => {\n // 开始观察目标元素\n observer?.observe(codeEl);\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n cleanObserver();\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={prismCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Show when={props.edit} fallback={<Pre />}>\n <div class={cx('n-editor', props.class)}>\n <textarea\n value={props.code}\n classList={{\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n }}\n style={{ height: `${hei()}px` }}\n onInput={change}\n />\n <Pre />\n </div>\n </Show>\n </>\n );\n}\n\ncustomElement<CodeProps>(\n 'n-code',\n {\n class: void 0,\n code: void 0,\n language: void 0,\n children: void 0,\n edit: void 0,\n toolbar: void 0,\n css: void 0,\n lineNumber: void 0,\n onChange: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n code: el.textContent,\n css: el.css,\n onChange(val: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return <Code {...props} />;\n },\n);\nexport default Code;\n"],"names":["Code","props","codeEl","baseStyle","theme","diffLang","code","setCode","createSignal","hei","setHei","isIntersecting","setIsIntersecting","initObserver","IntersectionObserver","entries","initWorker","Worker","URL","name","observer","webWorker","worker","copy","setClipboard","untrack","Pre","Show","toolbar","language","split","lineNumber","class","edit","change","target","c","value","test","isFunction","onChange","update","e","innerHTML","data","getBoundingClientRect","height","cleanObserver","unobserve","disconnect","createEffect","decodeURIComponent","error","addEventListener","postMessage","JSON","stringify","Prism","languages","diff","highlight","markup","onMount","observe","onCleanup","removeEventListener","terminate","prismCss","style","css","cx","customElement","children","_","opt","el","element","mergeProps","textContent","val","dispatchEvent","CustomEvent","detail","replaceChildren","removeAttribute"],"rangeMappings":";","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/code/index.tsx"],"sourcesContent":["import {\n Show,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport Prism from '../prism';\nimport prismCss from '../prism/css';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言 */\n language?: string;\n /** 显示代码行号 */\n lineNumber?: boolean;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 编辑修改时的回调 */\n onChange?: (code: string) => void;\n children?: JSX.Element;\n /**\n * 使用 web worker\n * @default true\n */\n webWorker?: boolean;\n}\n\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { baseStyle } = theme;\n let codeEl: HTMLPreElement;\n const diffLang = /^diff-([\\w-]+)/i;\n const [code, setCode] = createSignal<string>('');\n const [hei, setHei] = createSignal(20);\n const [isIntersecting, setIsIntersecting] = createSignal(false);\n\n function initObserver() {\n return new IntersectionObserver((entries) => {\n setIsIntersecting(entries[0].isIntersecting);\n });\n }\n function initWorker() {\n return new Worker(new URL('./worker.ts', import.meta.url), {\n name: 'workers/prismjs',\n });\n }\n // eslint-disable-next-line solid/reactivity\n let observer = props.webWorker ? void 0 : initObserver();\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n function Pre() {\n return (\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n [props.class as string]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={props.language?.split(' ')[0]}>\n <button class=\"toolbar-copy\" aria-label=\"copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} class={`language-${props.language}`} textContent={code()} />\n </pre>\n );\n }\n function change({ target }: { target: HTMLTextAreaElement }) {\n const c = `${target.value}${/\\n$/.test(target.value) ? '\\u200b' : ''}`;\n\n setCode(c);\n if (isFunction(props.onChange)) {\n props.onChange(c);\n }\n }\n function update(e: { data: string }) {\n codeEl.innerHTML = e.data;\n setHei(codeEl.getBoundingClientRect().height - (props.toolbar ? 40 : 16));\n }\n function cleanObserver() {\n if (observer) {\n // 停止观察目标元素\n observer.unobserve(codeEl);\n observer.disconnect();\n }\n }\n function postMessage(language: string, value?: string) {\n if (!value || !isIntersecting()) return;\n cleanObserver();\n if (diffLang.test(language) && !Prism.languages[language]) {\n Prism.languages[language] = Prism.languages.diff;\n }\n update({\n data: Prism.highlight(\n `${value}\\n`,\n Prism.languages[language] || Prism.languages.markup,\n language,\n ),\n });\n }\n createEffect(() => {\n if (props.code) {\n try {\n setCode(decodeURIComponent(props.code));\n } catch (error) {\n setCode(props.code);\n }\n } else {\n setCode('');\n }\n });\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n } else if (!observer) {\n observer = initObserver();\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n language: props.language,\n code: code(),\n }),\n );\n } else {\n postMessage(props.language || 'markup', code());\n }\n });\n onMount(() => {\n if (codeEl) {\n // 开始观察目标元素\n observer?.observe(codeEl);\n }\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n cleanObserver();\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={prismCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Show when={props.edit} fallback={<Pre />}>\n <div class={cx('n-editor', props.class)}>\n <textarea\n value={props.code}\n classList={{\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n }}\n style={{ height: `${hei()}px` }}\n onInput={change}\n />\n <Pre />\n </div>\n </Show>\n </>\n );\n}\n\ncustomElement<CodeProps>(\n 'n-code',\n {\n class: void 0,\n code: void 0,\n language: void 0,\n children: void 0,\n edit: void 0,\n toolbar: void 0,\n css: void 0,\n lineNumber: void 0,\n onChange: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n code: el.textContent,\n css: el.css,\n onChange(val: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return <Code {...props} />;\n },\n);\nexport default Code;\n"],"names":["Code","props","codeEl","baseStyle","theme","diffLang","code","setCode","createSignal","hei","setHei","isIntersecting","setIsIntersecting","initObserver","IntersectionObserver","entries","initWorker","Worker","URL","name","observer","webWorker","worker","copy","setClipboard","untrack","Pre","Show","toolbar","language","split","lineNumber","class","edit","change","target","c","value","test","isFunction","onChange","update","e","innerHTML","data","getBoundingClientRect","height","cleanObserver","unobserve","disconnect","createEffect","decodeURIComponent","error","addEventListener","postMessage","JSON","stringify","Prism","languages","diff","highlight","markup","onMount","observe","onCleanup","removeEventListener","terminate","prismCss","style","css","cx","customElement","children","_","opt","el","element","mergeProps","textContent","val","dispatchEvent","CustomEvent","detail","replaceChildren","removeAttribute"],"rangeMappings":";","mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neko-ui",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.13-beta.0",
|
|
4
4
|
"description": "WebComponents UI Libraries",
|
|
5
5
|
"main": "umd/index.js",
|
|
6
6
|
"types": "types/index.d.ts",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"@commitlint/cli": "19.3.0",
|
|
46
46
|
"@commitlint/config-conventional": "19.2.2",
|
|
47
47
|
"@moneko/cli": "2.13.5",
|
|
48
|
-
"@moneko/core": "3.17.
|
|
48
|
+
"@moneko/core": "3.17.28-beta.2",
|
|
49
49
|
"@moneko/solid": "1.8.0",
|
|
50
50
|
"@solidjs/testing-library": "0.8.8",
|
|
51
51
|
"@swc/jest": "0.2.36",
|