neko-ui 2.10.6-beta.0 → 2.10.6

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/README.md CHANGED
@@ -59,8 +59,6 @@ pnpm add neko-ui -S
59
59
 
60
60
  ## 按需引入
61
61
 
62
- `neko-ui` 默认支持基于 ES modules 的 tree shaking,直接引入 `import { theme } from 'neko-ui';` 就会有按需加载的效果。
63
-
64
62
  ### 手动方式
65
63
 
66
64
  ```jsx
@@ -81,6 +79,25 @@ function Demo() {
81
79
  }
82
80
  ```
83
81
 
82
+ ### 使用 @moneko
83
+
84
+ ```typescript
85
+ // config/index.ts
86
+ import type { ConfigType } from '@moneko/core';
87
+
88
+ const conf: Partial<ConfigType> = {
89
+ // 按需引入
90
+ importOnDemand: {
91
+ 'neko-ui': {
92
+ transform: 'es/${member}',
93
+ memberTransformers: ['dashed_case'],
94
+ },
95
+ },
96
+ };
97
+
98
+ export default conf;
99
+ ```
100
+
84
101
  > 文档通过 @moneko/core 生成
85
102
 
86
103
  [![@moneko/core][cli-tag]][cli-url]
@@ -29,7 +29,4 @@ export interface CodeProps {
29
29
  }
30
30
  export type CodeElement = CustomElement<CodeProps>;
31
31
  declare function Code(props: CodeProps): JSX.Element;
32
- declare namespace Code {
33
- var registry: () => void;
34
- }
35
32
  export default Code;
package/es/code/index.js CHANGED
@@ -1 +1 @@
1
- function t(t,e,o,i,r,n,l){try{var s=t[n](l),a=s.value}catch(t){o(t);return}s.done?e(a):Promise.resolve(a).then(i,r)}import{use as e}from"solid-js/web";import{template as o}from"solid-js/web";import{setAttribute as i}from"solid-js/web";import{insert as r}from"solid-js/web";import{effect as n}from"solid-js/web";import{delegateEvents as l}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{classList as a}from"solid-js/web";import{addEventListener as d}from"solid-js/web";let c=o("<style> "),h=o("<style>"),m=o('<div class="toolbar">'),g=o("<pre><code>");import{createEffect as u,createMemo as f,createResource as p,createSignal as v,createUniqueId as w,mergeProps as C,onCleanup as b,Show as y,untrack as S}from"solid-js";import k from"@moneko/common/lib/isFunction";import j from"@moneko/common/lib/setClipboard";import{css as $}from"@moneko/css";import{customElement as x}from"solid-element";import{clearAttribute as E}from"../basic-config";import A from"../theme";import{CopyIcon as P}from"./copy-icon";import{darkCss as _,lightCss as z,style as H}from"./style";function T(o){let l,C;let{isDark:x}=A,E=/%[0-9A-Fa-f]{2}/,T=w(),[W,F]=v(""),[L,R]=v();function I(){var e;return e=function*(){return window.Prism?(window.Prism.disableWorkerMessageHandler=!0,window.Prism.manual=!0,window.Prism):(yield import("../prism")).default},(I=function(){var o=this,i=arguments;return new Promise(function(r,n){var l=e.apply(o,i);function s(e){t(l,r,n,s,a,"next",e)}function a(e){t(l,r,n,s,a,"throw",e)}s(void 0)})}).apply(this,arguments)}let[M]=p("prism",function(){return I.apply(this,arguments)}),O=f(()=>{var t;return o.title||(null==(t=o.language)?void 0:t.split(" ").pop())});function U(){j(S(W),l)}u(()=>{let t=o.code||"";E.test(t)&&(t=decodeURIComponent(t)),l&&(l.normalize(),t!==l.textContent&&F(t))});let q=function(t){t.target.normalize();let e=t.target.textContent;B(o.language,e,!0),k(o.onChange)&&o.onChange(e)};function B(t="markup",e,o,i={}){C&&(clearTimeout(C),C=void 0);let r=M();e&&r&&(C=setTimeout(()=>{if(clearTimeout(C),CSS.highlights){o&&CSS.highlights.forEach((t,e)=>{e.startsWith(T)&&t.clear()});let n=t.split(" "),s=r.languages[n[0]];s&&l&&function t(e,o,i,r=0){let n=r;if(Array.isArray(o)){for(let r=0,l=o.length;r<l;r++){let l=o[r];if("object"!=typeof l){n+=l.length;continue}n=t(e,l,i,n)}return n}if("object"==typeof o&&o.type&&e.firstChild){var l;let r=(null!=(l=o.alias)?l:o.type).toString(),s=T+r,a=new Range;["deleted","inserted"].includes(r)?a.setStart(e.firstChild,n+2):a.setStart(e.firstChild,n),Array.isArray(o.content)?n=t(e,o.content,i,n):"string"==typeof o.content&&(n+=o.content.length),a.setEnd(e.firstChild,n),function(t,e,o,i){let r=CSS.highlights.get(t);r?r.add(o):CSS.highlights.set(t,new Highlight().add(o)),void 0===i[t]&&(i[t]=`::highlight(${t}){color:var(--${e});background-color:var(--${e}-bg);text-decoration:var(--${e}-text-decoration);text-shadow:var(--${e}-text-shadow);-webkit-text-stroke-width:var(--${e}-stroke-width);-webkit-text-stroke-color:var(--${e}-stroke-color);}`)}(s,r,a,i)}return n}(l,r.tokenize(e,s),i),n.length>1||"git"===n[0]?B(n[1],e,!1,i):R(Object.values(i).join(""))}else throw Error("不支持 CSS Highlights");C=void 0},0))}return u(()=>{B(o.language,W(),!0)}),b(()=>{if(CSS.highlights)for(let t of CSS.highlights.keys())t.startsWith(T)&&CSS.highlights.delete(t)}),[(()=>{let t=c(),e=t.firstChild;return n(()=>e.data=x()?_:z),t})(),(()=>{let t=c(),e=t.firstChild;return n(()=>e.data=L()),t})(),(()=>{let t=h();return t.textContent=H,t})(),s(y,{get when(){return o.css},get children(){let t=c(),e=t.firstChild;return n(()=>e.data=$(o.css)),t}}),(()=>{let t=g(),c=t.firstChild,h=l;return r(t,s(y,{get when(){return o.toolbar},get children(){let t=m();return r(t,s(P,{class:"toolbar-copy",onClick:U})),n(()=>i(t,"data-language",O())),t}}),c),d(c,"input",q,!0),"function"==typeof h?e(h,c):l=c,i(c,"spellcheck",!1),r(c,W),n(e=>{let r={[`language-${o.language}`]:!!o.language,"not-toolbar":!o.toolbar,[o.class]:!o.edit},n=o.edit;return e._v$=a(t,r,e._v$),n!==e._v$2&&i(c,"contenteditable",e._v$2=n),e},{_v$:void 0,_v$2:void 0}),t})()]}T.registry=function(){x("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,onChange:void 0,title:void 0},(t,e)=>{let{baseStyle:o}=A,i=e.element,r=C({code:i.textContent,css:i.css,onChange(t){i.dispatchEvent(new CustomEvent("change",{detail:t}))}},t);return u(()=>{E(i,["css","code","title"]),i.replaceChildren()}),[(()=>{let t=c(),e=t.firstChild;return n(()=>e.data=o()),t})(),s(T,r)]})},T.registry();export default T;l(["input"]);
1
+ function t(t,e,o,i,r,n,l){try{var s=t[n](l),a=s.value}catch(t){o(t);return}s.done?e(a):Promise.resolve(a).then(i,r)}import{use as e}from"solid-js/web";import{template as o}from"solid-js/web";import{setAttribute as i}from"solid-js/web";import{insert as r}from"solid-js/web";import{effect as n}from"solid-js/web";import{delegateEvents as l}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{classList as a}from"solid-js/web";import{addEventListener as d}from"solid-js/web";let c=o("<style> "),h=o("<style>"),m=o('<div class="toolbar">'),u=o("<pre><code>");import{createEffect as g,createMemo as f,createResource as p,createSignal as v,createUniqueId as w,mergeProps as C,onCleanup as b,Show as y,untrack as S}from"solid-js";import k from"@moneko/common/lib/isFunction";import j from"@moneko/common/lib/setClipboard";import{css as $}from"@moneko/css";import{customElement as x}from"solid-element";import{clearAttribute as E}from"../basic-config";import A from"../theme";import{CopyIcon as P}from"./copy-icon";import{darkCss as _,lightCss as z,style as H}from"./style";function T(o){let l,C;let{isDark:x}=A,E=/%[0-9A-Fa-f]{2}/,T=w(),[W,F]=v(""),[L,R]=v();function I(){var e;return e=function*(){return window.Prism?(window.Prism.disableWorkerMessageHandler=!0,window.Prism.manual=!0,window.Prism):(yield import("../prism")).default},(I=function(){var o=this,i=arguments;return new Promise(function(r,n){var l=e.apply(o,i);function s(e){t(l,r,n,s,a,"next",e)}function a(e){t(l,r,n,s,a,"throw",e)}s(void 0)})}).apply(this,arguments)}let[M]=p("prism",function(){return I.apply(this,arguments)}),O=f(()=>{var t;return o.title||(null==(t=o.language)?void 0:t.split(" ").pop())});function U(){j(S(W),l)}g(()=>{let t=o.code||"";E.test(t)&&(t=decodeURIComponent(t)),l&&(l.normalize(),t!==l.textContent&&F(t))});let q=function(t){t.target.normalize();let e=t.target.textContent;B(o.language,e,!0),k(o.onChange)&&o.onChange(e)};function B(t="markup",e,o,i={}){C&&(clearTimeout(C),C=void 0);let r=M();e&&r&&(C=setTimeout(()=>{if(clearTimeout(C),CSS.highlights){o&&CSS.highlights.forEach((t,e)=>{e.startsWith(T)&&t.clear()});let n=t.split(" "),s=r.languages[n[0]];s&&l&&function t(e,o,i,r=0){let n=r;if(Array.isArray(o)){for(let r=0,l=o.length;r<l;r++){let l=o[r];if("object"!=typeof l){n+=l.length;continue}n=t(e,l,i,n)}return n}if("object"==typeof o&&o.type&&e.firstChild){var l;let r=(null!=(l=o.alias)?l:o.type).toString(),s=T+r,a=new Range;["deleted","inserted"].includes(r)?a.setStart(e.firstChild,n+2):a.setStart(e.firstChild,n),Array.isArray(o.content)?n=t(e,o.content,i,n):"string"==typeof o.content&&(n+=o.content.length),a.setEnd(e.firstChild,n),function(t,e,o,i){let r=CSS.highlights.get(t);r?r.add(o):CSS.highlights.set(t,new Highlight().add(o)),void 0===i[t]&&(i[t]=`::highlight(${t}){color:var(--${e});background-color:var(--${e}-bg);text-decoration:var(--${e}-text-decoration);text-shadow:var(--${e}-text-shadow);-webkit-text-stroke-width:var(--${e}-stroke-width);-webkit-text-stroke-color:var(--${e}-stroke-color);}`)}(s,r,a,i)}return n}(l,r.tokenize(e,s),i),n.length>1||"git"===n[0]?B(n[1],e,!1,i):R(Object.values(i).join(""))}else throw Error("不支持 CSS Highlights");C=void 0},0))}return g(()=>{B(o.language,W(),!0)}),b(()=>{if(CSS.highlights)for(let t of CSS.highlights.keys())t.startsWith(T)&&CSS.highlights.delete(t)}),[(()=>{let t=c(),e=t.firstChild;return n(()=>e.data=x()?_:z),t})(),(()=>{let t=c(),e=t.firstChild;return n(()=>e.data=L()),t})(),(()=>{let t=h();return t.textContent=H,t})(),s(y,{get when(){return o.css},get children(){let t=c(),e=t.firstChild;return n(()=>e.data=$(o.css)),t}}),(()=>{let t=u(),c=t.firstChild,h=l;return r(t,s(y,{get when(){return o.toolbar},get children(){let t=m();return r(t,s(P,{class:"toolbar-copy",onClick:U})),n(()=>i(t,"data-language",O())),t}}),c),d(c,"input",q,!0),"function"==typeof h?e(h,c):l=c,i(c,"spellcheck",!1),r(c,W),n(e=>{let r={[`language-${o.language}`]:!!o.language,"not-toolbar":!o.toolbar,[o.class]:!o.edit},n=o.edit;return e._v$=a(t,r,e._v$),n!==e._v$2&&i(c,"contenteditable",e._v$2=n),e},{_v$:void 0,_v$2:void 0}),t})()]}x("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,onChange:void 0,title:void 0},(t,e)=>{let{baseStyle:o}=A,i=e.element,r=C({code:i.textContent,css:i.css,onChange(t){i.dispatchEvent(new CustomEvent("change",{detail:t}))}},t);return g(()=>{E(i,["css","code","title"]),i.replaceChildren()}),[(()=>{let t=c(),e=t.firstChild;return n(()=>e.data=o()),t})(),s(T,r)]});export default T;l(["input"]);
@@ -1 +1 @@
1
- {"version":3,"sources":["components/code/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createResource,\n createSignal,\n createUniqueId,\n type JSX,\n mergeProps,\n onCleanup,\n Show,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css } from '@moneko/css';\nimport type { TokenStream } from 'prismjs';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute, type JSXElement } from '../basic-config';\nimport theme from '../theme';\n\nimport { CopyIcon } from './copy-icon';\nimport { darkCss, lightCss, style } from './style';\n\nexport type LanguageBase =\n | 'bash'\n | 'shell'\n | 'sh'\n | 'clike'\n | 'css'\n | 'docker'\n | 'dockerfile'\n | 'git'\n | 'javascript'\n | 'js'\n | 'json'\n | 'webmanifest'\n | 'jsx'\n | 'tsx'\n | 'less'\n | 'html'\n | 'mathml'\n | 'svg'\n | 'xml'\n | 'ssml'\n | 'atom'\n | 'rss'\n | 'regex'\n | 'rust'\n | 'sql'\n | 'swift'\n | 'toml'\n | 'typescript'\n | 'ts'\n | 'yaml'\n | 'yml'\n | 'matlab';\n\ntype ExcludeLanguage<T extends LanguageBase, U extends LanguageBase> = T extends U ? never : T;\n\nexport type Language =\n | LanguageBase\n | {\n [T in LanguageBase]: `${T} ${ExcludeLanguage<LanguageBase, T>}`;\n }[LanguageBase];\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言(支持多种语言配置:如 `html css javascript`)\n * @default 'markup'\n */\n language?: Language;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 工具条上显示的文字 */\n title?: string;\n /** 编辑修改时的回调 */\n onChange?(code: string): void;\n children?: JSXElement;\n}\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { isDark } = theme;\n let codeEl: HTMLPreElement | undefined;\n let timer: NodeJS.Timeout | undefined;\n const decoded = /%[0-9A-Fa-f]{2}/;\n const id = createUniqueId();\n const [code, setCode] = createSignal<string>('');\n const [highlightCss, setHighlightCss] = createSignal<string>();\n\n async function fetchPrism() {\n if (!window.Prism) {\n return (await import('../prism')).default;\n }\n window.Prism.disableWorkerMessageHandler = true;\n window.Prism.manual = true;\n return window.Prism;\n }\n const [prismJS] = createResource('prism', fetchPrism);\n const title = createMemo(() => props.title || props.language?.split(' ').pop());\n\n createEffect(() => {\n let _next = props.code || '';\n\n if (decoded.test(_next)) {\n _next = decodeURIComponent(_next);\n }\n if (codeEl) {\n codeEl.normalize();\n if (_next !== codeEl.textContent) {\n setCode(_next);\n }\n }\n });\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n const change: JSX.InputEventHandlerUnion<HTMLElement, InputEvent> = function (e) {\n e.target.normalize();\n const next = e.target.textContent;\n\n syntax(props.language, next, true);\n if (isFunction(props.onChange)) {\n props.onChange(next);\n }\n };\n\n function updateRang(\n key: string,\n token: string,\n range: AbstractRange,\n selection: Record<string, string>,\n ) {\n const highlight = CSS.highlights.get(key);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(key, new Highlight().add(range));\n }\n if (selection[key] === void 0) {\n selection[key] =\n `::highlight(${key}){color:var(--${token});background-color:var(--${token}-bg);text-decoration:var(--${token}-text-decoration);text-shadow:var(--${token}-text-shadow);-webkit-text-stroke-width:var(--${token}-stroke-width);-webkit-text-stroke-color:var(--${token}-stroke-color);}`;\n }\n }\n function highlighter(\n el: HTMLPreElement,\n tokenize: TokenStream,\n selection: Record<string, string>,\n start = 0,\n ) {\n let pos = start;\n\n if (Array.isArray(tokenize)) {\n for (let i = 0, len = tokenize.length; i < len; i++) {\n const token = tokenize[i];\n\n if (typeof token !== 'object') {\n pos += token.length;\n continue;\n }\n pos = highlighter(el, token, selection, pos);\n }\n return pos;\n }\n if (typeof tokenize === 'object' && tokenize.type) {\n if (el.firstChild) {\n const token = (tokenize.alias ?? tokenize.type).toString();\n const key = id + token;\n const range = new Range();\n\n if (['deleted', 'inserted'].includes(token)) {\n // diff\n range.setStart(el.firstChild, pos + 2);\n } else {\n range.setStart(el.firstChild, pos);\n }\n if (Array.isArray(tokenize.content)) {\n pos = highlighter(el, tokenize.content, selection, pos);\n } else if (typeof tokenize.content === 'string') {\n pos += tokenize.content.length;\n }\n range.setEnd(el.firstChild, pos);\n updateRang(key, token, range, selection);\n }\n }\n\n return pos;\n }\n function syntax(\n language: Language = 'markup' as Language,\n value: string | null,\n clear?: boolean,\n prevCss = {},\n ) {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n const Prism = prismJS();\n\n if (!value || !Prism) return;\n timer = setTimeout(() => {\n clearTimeout(timer);\n if (CSS.highlights) {\n if (clear) {\n CSS.highlights.forEach((highlight, key) => {\n if (key.startsWith(id)) {\n highlight.clear();\n }\n });\n }\n const grammars = language.split(' ') as Language[],\n grammar = Prism.languages[grammars[0]];\n\n if (grammar && codeEl) {\n highlighter(codeEl, Prism.tokenize(value, grammar), prevCss);\n }\n if (grammars.length > 1 || grammars[0] === 'git') {\n syntax(grammars[1], value, false, prevCss);\n } else {\n setHighlightCss(Object.values(prevCss).join(''));\n }\n } else {\n throw Error('不支持 CSS Highlights');\n }\n timer = void 0;\n }, 0);\n }\n createEffect(() => {\n syntax(props.language, code(), true);\n });\n onCleanup(() => {\n if (CSS.highlights) {\n for (const key of CSS.highlights.keys()) {\n if (key.startsWith(id)) {\n CSS.highlights.delete(key);\n }\n }\n }\n });\n\n return (\n <>\n <style textContent={isDark() ? darkCss : lightCss} />\n <style textContent={highlightCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'not-toolbar': !props.toolbar,\n [props.class!]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={title()}>\n <CopyIcon class=\"toolbar-copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} contenteditable={props.edit} spellcheck={false} onInput={change}>\n {code()}\n </code>\n </pre>\n </>\n );\n}\n\nfunction registry() {\n customElement<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 onChange: void 0,\n title: void 0,\n },\n (_, opt) => {\n const { baseStyle } = theme;\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 clearAttribute(el, ['css', 'code', 'title']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={baseStyle()} />\n <Code {...props} />\n </>\n );\n },\n );\n}\n\nCode.registry = registry;\nCode.registry();\n\nexport default Code;\n"],"names":["createEffect","createMemo","createResource","createSignal","createUniqueId","mergeProps","onCleanup","Show","untrack","isFunction","setClipboard","css","customElement","clearAttribute","theme","CopyIcon","darkCss","lightCss","style","Code","props","codeEl","timer","isDark","decoded","id","code","setCode","highlightCss","setHighlightCss","fetchPrism","window","Prism","disableWorkerMessageHandler","manual","default","prismJS","title","language","split","pop","copy","_next","test","decodeURIComponent","normalize","textContent","change","e","target","next","syntax","onChange","value","clear","prevCss","clearTimeout","setTimeout","CSS","highlights","forEach","highlight","key","startsWith","grammars","grammar","languages","highlighter","el","tokenize","selection","start","pos","Array","isArray","i","len","length","token","type","firstChild","alias","toString","range","Range","includes","setStart","content","setEnd","updateRang","get","add","set","Highlight","Object","values","join","Error","keys","delete","toolbar","class","edit","registry","children","_","opt","baseStyle","element","val","dispatchEvent","CustomEvent","detail","replaceChildren"],"mappings":"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"}
1
+ {"version":3,"sources":["components/code/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createResource,\n createSignal,\n createUniqueId,\n type JSX,\n mergeProps,\n onCleanup,\n Show,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css } from '@moneko/css';\nimport type { TokenStream } from 'prismjs';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute, type JSXElement } from '../basic-config';\nimport theme from '../theme';\n\nimport { CopyIcon } from './copy-icon';\nimport { darkCss, lightCss, style } from './style';\n\nexport type LanguageBase =\n | 'bash'\n | 'shell'\n | 'sh'\n | 'clike'\n | 'css'\n | 'docker'\n | 'dockerfile'\n | 'git'\n | 'javascript'\n | 'js'\n | 'json'\n | 'webmanifest'\n | 'jsx'\n | 'tsx'\n | 'less'\n | 'html'\n | 'mathml'\n | 'svg'\n | 'xml'\n | 'ssml'\n | 'atom'\n | 'rss'\n | 'regex'\n | 'rust'\n | 'sql'\n | 'swift'\n | 'toml'\n | 'typescript'\n | 'ts'\n | 'yaml'\n | 'yml'\n | 'matlab';\n\ntype ExcludeLanguage<T extends LanguageBase, U extends LanguageBase> = T extends U ? never : T;\n\nexport type Language =\n | LanguageBase\n | {\n [T in LanguageBase]: `${T} ${ExcludeLanguage<LanguageBase, T>}`;\n }[LanguageBase];\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言(支持多种语言配置:如 `html css javascript`)\n * @default 'markup'\n */\n language?: Language;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 工具条上显示的文字 */\n title?: string;\n /** 编辑修改时的回调 */\n onChange?(code: string): void;\n children?: JSXElement;\n}\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { isDark } = theme;\n let codeEl: HTMLPreElement | undefined;\n let timer: NodeJS.Timeout | undefined;\n const decoded = /%[0-9A-Fa-f]{2}/;\n const id = createUniqueId();\n const [code, setCode] = createSignal<string>('');\n const [highlightCss, setHighlightCss] = createSignal<string>();\n\n async function fetchPrism() {\n if (!window.Prism) {\n return (await import('../prism')).default;\n }\n window.Prism.disableWorkerMessageHandler = true;\n window.Prism.manual = true;\n return window.Prism;\n }\n const [prismJS] = createResource('prism', fetchPrism);\n const title = createMemo(() => props.title || props.language?.split(' ').pop());\n\n createEffect(() => {\n let _next = props.code || '';\n\n if (decoded.test(_next)) {\n _next = decodeURIComponent(_next);\n }\n if (codeEl) {\n codeEl.normalize();\n if (_next !== codeEl.textContent) {\n setCode(_next);\n }\n }\n });\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n const change: JSX.InputEventHandlerUnion<HTMLElement, InputEvent> = function (e) {\n e.target.normalize();\n const next = e.target.textContent;\n\n syntax(props.language, next, true);\n if (isFunction(props.onChange)) {\n props.onChange(next);\n }\n };\n\n function updateRang(\n key: string,\n token: string,\n range: AbstractRange,\n selection: Record<string, string>,\n ) {\n const highlight = CSS.highlights.get(key);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(key, new Highlight().add(range));\n }\n if (selection[key] === void 0) {\n selection[key] =\n `::highlight(${key}){color:var(--${token});background-color:var(--${token}-bg);text-decoration:var(--${token}-text-decoration);text-shadow:var(--${token}-text-shadow);-webkit-text-stroke-width:var(--${token}-stroke-width);-webkit-text-stroke-color:var(--${token}-stroke-color);}`;\n }\n }\n function highlighter(\n el: HTMLPreElement,\n tokenize: TokenStream,\n selection: Record<string, string>,\n start = 0,\n ) {\n let pos = start;\n\n if (Array.isArray(tokenize)) {\n for (let i = 0, len = tokenize.length; i < len; i++) {\n const token = tokenize[i];\n\n if (typeof token !== 'object') {\n pos += token.length;\n continue;\n }\n pos = highlighter(el, token, selection, pos);\n }\n return pos;\n }\n if (typeof tokenize === 'object' && tokenize.type) {\n if (el.firstChild) {\n const token = (tokenize.alias ?? tokenize.type).toString();\n const key = id + token;\n const range = new Range();\n\n if (['deleted', 'inserted'].includes(token)) {\n // diff\n range.setStart(el.firstChild, pos + 2);\n } else {\n range.setStart(el.firstChild, pos);\n }\n if (Array.isArray(tokenize.content)) {\n pos = highlighter(el, tokenize.content, selection, pos);\n } else if (typeof tokenize.content === 'string') {\n pos += tokenize.content.length;\n }\n range.setEnd(el.firstChild, pos);\n updateRang(key, token, range, selection);\n }\n }\n\n return pos;\n }\n function syntax(\n language: Language = 'markup' as Language,\n value: string | null,\n clear?: boolean,\n prevCss = {},\n ) {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n const Prism = prismJS();\n\n if (!value || !Prism) return;\n timer = setTimeout(() => {\n clearTimeout(timer);\n if (CSS.highlights) {\n if (clear) {\n CSS.highlights.forEach((highlight, key) => {\n if (key.startsWith(id)) {\n highlight.clear();\n }\n });\n }\n const grammars = language.split(' ') as Language[],\n grammar = Prism.languages[grammars[0]];\n\n if (grammar && codeEl) {\n highlighter(codeEl, Prism.tokenize(value, grammar), prevCss);\n }\n if (grammars.length > 1 || grammars[0] === 'git') {\n syntax(grammars[1], value, false, prevCss);\n } else {\n setHighlightCss(Object.values(prevCss).join(''));\n }\n } else {\n throw Error('不支持 CSS Highlights');\n }\n timer = void 0;\n }, 0);\n }\n createEffect(() => {\n syntax(props.language, code(), true);\n });\n onCleanup(() => {\n if (CSS.highlights) {\n for (const key of CSS.highlights.keys()) {\n if (key.startsWith(id)) {\n CSS.highlights.delete(key);\n }\n }\n }\n });\n\n return (\n <>\n <style textContent={isDark() ? darkCss : lightCss} />\n <style textContent={highlightCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'not-toolbar': !props.toolbar,\n [props.class!]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={title()}>\n <CopyIcon class=\"toolbar-copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} contenteditable={props.edit} spellcheck={false} onInput={change}>\n {code()}\n </code>\n </pre>\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 onChange: void 0,\n title: void 0,\n },\n (_, opt) => {\n const { baseStyle } = theme;\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 clearAttribute(el, ['css', 'code', 'title']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={baseStyle()} />\n <Code {...props} />\n </>\n );\n },\n);\nexport default Code;\n"],"names":["createEffect","createMemo","createResource","createSignal","createUniqueId","mergeProps","onCleanup","Show","untrack","isFunction","setClipboard","css","customElement","clearAttribute","theme","CopyIcon","darkCss","lightCss","style","Code","props","codeEl","timer","isDark","decoded","id","code","setCode","highlightCss","setHighlightCss","fetchPrism","window","Prism","disableWorkerMessageHandler","manual","default","prismJS","title","language","split","pop","copy","_next","test","decodeURIComponent","normalize","textContent","change","e","target","next","syntax","onChange","value","clear","prevCss","clearTimeout","setTimeout","CSS","highlights","forEach","highlight","key","startsWith","grammars","grammar","languages","highlighter","el","tokenize","selection","start","pos","Array","isArray","i","len","length","token","type","firstChild","alias","toString","range","Range","includes","setStart","content","setEnd","updateRang","get","add","set","Highlight","Object","values","join","Error","keys","delete","toolbar","class","edit","children","_","opt","baseStyle","element","val","dispatchEvent","CustomEvent","detail","replaceChildren"],"mappings":"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"}
@@ -31,8 +31,5 @@ export interface Highlight {
31
31
  text: string;
32
32
  }
33
33
  declare function HighlightText(props: HighlightTextProps): import("solid-js").JSX.Element;
34
- declare namespace HighlightText {
35
- var registry: () => void;
36
- }
37
34
  export type HighlightTextElement = CustomElement<HighlightTextProps>;
38
35
  export default HighlightText;
@@ -1,8 +1,8 @@
1
- import{use as t}from"solid-js/web";import{template as e}from"solid-js/web";import{insert as i}from"solid-js/web";import{effect as r}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{className as s}from"solid-js/web";let h=e("<style> "),o=e("<style>"),n=e("<div>");import{createEffect as g,createMemo as a,createUniqueId as d,mergeProps as f,Show as m}from"solid-js";import{css as c,cx as p}from"@moneko/css";import{customElement as x}from"solid-element";import{clearAttribute as u}from"../basic-config";import w,{inline as C}from"../theme";let S=c`
1
+ import{use as t}from"solid-js/web";import{template as e}from"solid-js/web";import{insert as i}from"solid-js/web";import{effect as r}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{className as s}from"solid-js/web";let h=e("<style> "),o=e("<style>"),n=e("<div>");import{createEffect as g,createMemo as a,createUniqueId as d,mergeProps as f,Show as m}from"solid-js";import{css as c,cx as p}from"@moneko/css";import{customElement as x}from"solid-element";import{clearAttribute as u}from"../basic-config";import w,{inline as C}from"../theme";let b=c`
2
2
  .text {
3
3
  word-break: break-word;
4
4
  word-wrap: break-word;
5
5
  white-space: break-spaces;
6
6
  cursor: auto;
7
7
  }
8
- `;function b(t,e,i,r,l){let s=new RegExp(i,r).exec(l);if(s){let i;let r=new Range;i=0+s.index,t.firstChild&&(r.setStart(t.firstChild,i),i+=s[0].length,r.setEnd(t.firstChild,i));let l=CSS.highlights.get(e);l?l.add(r):CSS.highlights.set(e,new Highlight().add(r))}}function v(e){let f;let{baseStyle:x}=w,u=d(),C=a(()=>{var t;return`${e.text}${null!=(t=e.extra)?t:""}`});return g(()=>{if(f&&e.highlight){if(Array.isArray(e.highlight))for(let t=0,i=e.highlight.length;t<i;t++){let i=e.highlight[t],r="object"!=typeof i,l=String(r?i:i.highlight);l.length&&b(f,u,l,r?e.flag:i.flag,C())}else String(e.highlight).length&&b(f,u,String(e.highlight),e.flag,C())}}),g(()=>{if(f&&"string"==typeof e.extra){var t;let i=new Range,r=(null==(t=e.text)?void 0:t.length)||0;f.firstChild&&(i.setStart(f.firstChild,r),r+=e.extra.length,i.setEnd(f.firstChild,r));let l=CSS.highlights.get(u);l?l.add(i):CSS.highlights.set(u,new Highlight().add(i))}}),[(()=>{let t=h(),e=t.firstChild;return r(()=>e.data=x()),t})(),(()=>{let t=o();return t.textContent=S,t})(),(()=>{let t=o();return t.textContent=`::highlight(${u}) {color: var(--primary-color, #5794ff);}`,t})(),l(m,{get when(){return e.css},get children(){let t=h(),i=t.firstChild;return r(()=>i.data=c(e.css)),t}}),(()=>{let l=n(),h=f;return"function"==typeof h?t(h,l):f=l,i(l,C),r(()=>s(l,p("text",e.class))),l})()]}v.registry=function(){x("n-highlight-text",{class:void 0,css:void 0,text:void 0,highlight:void 0,flag:void 0,extra:void 0,children:void 0},(t,e)=>{let i=e.element,r=f({text:i.textContent,css:i.css},t);return g(()=>{u(i,["css","text","highlight","extra"]),i.replaceChildren()}),[(()=>{let t=o();return t.textContent=C,t})(),l(v,r)]})},v.registry();export default v;
8
+ `;function v(t,e,i,r,l){let s=new RegExp(i,r).exec(l);if(s){let i;let r=new Range;i=0+s.index,t.firstChild&&(r.setStart(t.firstChild,i),i+=s[0].length,r.setEnd(t.firstChild,i));let l=CSS.highlights.get(e);l?l.add(r):CSS.highlights.set(e,new Highlight().add(r))}}function S(e){let f;let{baseStyle:x}=w,u=d(),C=a(()=>{var t;return`${e.text}${null!=(t=e.extra)?t:""}`});return g(()=>{if(f&&e.highlight){if(Array.isArray(e.highlight))for(let t=0,i=e.highlight.length;t<i;t++){let i=e.highlight[t],r="object"!=typeof i,l=r?i:i.highlight;l.length&&v(f,u,l,r?e.flag:i.flag,C())}else e.highlight.length&&v(f,u,e.highlight,e.flag,C())}}),g(()=>{if(f&&"string"==typeof e.extra){var t;let i=new Range,r=(null==(t=e.text)?void 0:t.length)||0;f.firstChild&&(i.setStart(f.firstChild,r),r+=e.extra.length,i.setEnd(f.firstChild,r));let l=CSS.highlights.get(u);l?l.add(i):CSS.highlights.set(u,new Highlight().add(i))}}),[(()=>{let t=h(),e=t.firstChild;return r(()=>e.data=x()),t})(),(()=>{let t=o();return t.textContent=b,t})(),(()=>{let t=o();return t.textContent=`::highlight(${u}) {color: var(--primary-color, #5794ff);}`,t})(),l(m,{get when(){return e.css},get children(){let t=h(),i=t.firstChild;return r(()=>i.data=c(e.css)),t}}),(()=>{let l=n(),h=f;return"function"==typeof h?t(h,l):f=l,i(l,C),r(()=>s(l,p("text",e.class))),l})()]}x("n-highlight-text",{class:void 0,css:void 0,text:void 0,highlight:void 0,flag:void 0,extra:void 0,children:void 0},(t,e)=>{let i=e.element,r=f({text:i.textContent,css:i.css},t);return g(()=>{u(i,["css","text","highlight","extra"]),i.replaceChildren()}),[(()=>{let t=o();return t.textContent=C,t})(),l(S,r)]});export default S;
@@ -1 +1 @@
1
- {"version":3,"sources":["components/highlight-text/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createUniqueId, mergeProps, Show } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute } from '../basic-config';\nimport theme, { inline } from '../theme';\n\nconst style = css`\n .text {\n word-break: break-word;\n word-wrap: break-word;\n white-space: break-spaces;\n cursor: auto;\n }\n`;\n\nfunction highlight(\n box: HTMLDivElement,\n id: string,\n regExp: string,\n flag: HighlightRule['flag'],\n text: string,\n) {\n const regex = new RegExp(regExp, flag);\n const match = regex.exec(text);\n\n if (match) {\n const range = new Range();\n let pos = 0;\n\n pos += match.index;\n if (box.firstChild) {\n range.setStart(box.firstChild, pos);\n pos += match[0].length;\n range.setEnd(box.firstChild, pos);\n }\n const highlight = CSS.highlights.get(id);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(id, new Highlight().add(range));\n }\n }\n}\n\nexport type HighlightTextJson =\n | {\n highlight?: boolean;\n text: string;\n }[]\n | null;\nexport interface HighlightTextProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 内容 */\n text?: string;\n /** 需要高亮的内容 */\n highlight?: string | (HighlightRule | string)[];\n /** RegExp flag */\n flag?: HighlightRule['flag'];\n /** 额外需要高亮的内容 */\n extra?: string;\n children?: string;\n}\n\ninterface HighlightRule {\n /** 需要高亮的内容 */\n highlight: string;\n /** RegExp flag */\n flag?: 'g' | 'i' | 'm' | 'u' | 'y';\n}\n\nexport interface Highlight {\n /** 命中高亮 */\n hit?: boolean;\n /** 内容 */\n text: string;\n}\n\nfunction HighlightText(props: HighlightTextProps) {\n const { baseStyle } = theme;\n let box: HTMLDivElement | undefined;\n const id = createUniqueId();\n const text = createMemo(() => `${props.text}${props.extra ?? ''}`);\n\n createEffect(() => {\n if (box && props.highlight) {\n if (Array.isArray(props.highlight)) {\n for (let i = 0, len = props.highlight.length; i < len; i++) {\n const item = props.highlight[i];\n const isOne = typeof item !== 'object';\n const hitStr = String(isOne ? item : item.highlight);\n\n if (hitStr.length) {\n highlight(box, id, hitStr, isOne ? props.flag : item.flag, text());\n }\n }\n } else if (String(props.highlight).length) {\n highlight(box, id, String(props.highlight), props.flag, text());\n }\n }\n });\n createEffect(() => {\n if (box && typeof props.extra === 'string') {\n const range = new Range();\n let pos = props.text?.length || 0;\n\n if (box.firstChild) {\n range.setStart(box.firstChild, pos);\n pos += props.extra.length;\n range.setEnd(box.firstChild, pos);\n }\n const highlight = CSS.highlights.get(id);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(id, new Highlight().add(range));\n }\n }\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <style textContent={`::highlight(${id}) {color: var(--primary-color, #5794ff);}`} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <div ref={box} class={cx('text', props.class)}>\n {text()}\n </div>\n </>\n );\n}\n\nexport type HighlightTextElement = CustomElement<HighlightTextProps>;\n\nfunction registry() {\n customElement<HighlightTextProps>(\n 'n-highlight-text',\n {\n class: void 0,\n css: void 0,\n text: void 0,\n highlight: void 0,\n flag: void 0,\n extra: void 0,\n children: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: el.textContent,\n css: el.css,\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['css', 'text', 'highlight', 'extra']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={inline} />\n <HighlightText {...props} />\n </>\n );\n },\n );\n}\n\nHighlightText.registry = registry;\nHighlightText.registry();\nexport default HighlightText;\n"],"names":["createEffect","createMemo","createUniqueId","mergeProps","Show","css","cx","customElement","clearAttribute","theme","inline","style","highlight","box","id","regExp","flag","text","match","regex","RegExp","exec","pos","range","Range","index","firstChild","setStart","length","setEnd","CSS","highlights","get","add","set","Highlight","HighlightText","props","baseStyle","extra","Array","isArray","i","len","item","isOne","hitStr","String","class","registry","children","_","opt","el","element","textContent","replaceChildren"],"mappings":"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"}
1
+ {"version":3,"sources":["components/highlight-text/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createUniqueId, mergeProps, Show } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute } from '../basic-config';\nimport theme, { inline } from '../theme';\n\nconst style = css`\n .text {\n word-break: break-word;\n word-wrap: break-word;\n white-space: break-spaces;\n cursor: auto;\n }\n`;\n\nfunction highlight(\n box: HTMLDivElement,\n id: string,\n regExp: string,\n flag: HighlightRule['flag'],\n text: string,\n) {\n const regex = new RegExp(regExp, flag);\n const match = regex.exec(text);\n\n if (match) {\n const range = new Range();\n let pos = 0;\n\n pos += match.index;\n if (box.firstChild) {\n range.setStart(box.firstChild, pos);\n pos += match[0].length;\n range.setEnd(box.firstChild, pos);\n }\n const highlight = CSS.highlights.get(id);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(id, new Highlight().add(range));\n }\n }\n}\n\nexport type HighlightTextJson =\n | {\n highlight?: boolean;\n text: string;\n }[]\n | null;\nexport interface HighlightTextProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 内容 */\n text?: string;\n /** 需要高亮的内容 */\n highlight?: string | (HighlightRule | string)[];\n /** RegExp flag */\n flag?: HighlightRule['flag'];\n /** 额外需要高亮的内容 */\n extra?: string;\n children?: string;\n}\n\ninterface HighlightRule {\n /** 需要高亮的内容 */\n highlight: string;\n /** RegExp flag */\n flag?: 'g' | 'i' | 'm' | 'u' | 'y';\n}\n\nexport interface Highlight {\n /** 命中高亮 */\n hit?: boolean;\n /** 内容 */\n text: string;\n}\n\nfunction HighlightText(props: HighlightTextProps) {\n const { baseStyle } = theme;\n let box: HTMLDivElement | undefined;\n const id = createUniqueId();\n const text = createMemo(() => `${props.text}${props.extra ?? ''}`);\n\n createEffect(() => {\n if (box && props.highlight) {\n if (Array.isArray(props.highlight)) {\n for (let i = 0, len = props.highlight.length; i < len; i++) {\n const item = props.highlight[i];\n const isOne = typeof item !== 'object';\n const hitStr = isOne ? item : item.highlight;\n\n if (hitStr.length) {\n highlight(box, id, hitStr, isOne ? props.flag : item.flag, text());\n }\n }\n } else if (props.highlight.length) {\n highlight(box, id, props.highlight, props.flag, text());\n }\n }\n });\n createEffect(() => {\n if (box && typeof props.extra === 'string') {\n const range = new Range();\n let pos = props.text?.length || 0;\n\n if (box.firstChild) {\n range.setStart(box.firstChild, pos);\n pos += props.extra.length;\n range.setEnd(box.firstChild, pos);\n }\n const highlight = CSS.highlights.get(id);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(id, new Highlight().add(range));\n }\n }\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <style textContent={`::highlight(${id}) {color: var(--primary-color, #5794ff);}`} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <div ref={box} class={cx('text', props.class)}>\n {text()}\n </div>\n </>\n );\n}\n\nexport type HighlightTextElement = CustomElement<HighlightTextProps>;\ncustomElement<HighlightTextProps>(\n 'n-highlight-text',\n {\n class: void 0,\n css: void 0,\n text: void 0,\n highlight: void 0,\n flag: void 0,\n extra: void 0,\n children: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: el.textContent,\n css: el.css,\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['css', 'text', 'highlight', 'extra']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={inline} />\n <HighlightText {...props} />\n </>\n );\n },\n);\nexport default HighlightText;\n"],"names":["createEffect","createMemo","createUniqueId","mergeProps","Show","css","cx","customElement","clearAttribute","theme","inline","style","highlight","box","id","regExp","flag","text","match","regex","RegExp","exec","pos","range","Range","index","firstChild","setStart","length","setEnd","CSS","highlights","get","add","set","Highlight","HighlightText","props","baseStyle","extra","Array","isArray","i","len","item","isOne","hitStr","class","children","_","opt","el","element","textContent","replaceChildren"],"mappings":"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"}
package/es/index.d.ts CHANGED
@@ -147,14 +147,14 @@ interface CustomElementTags {
147
147
  type IntrinsicNekoElement = Transform<CustomElementTags>;
148
148
  declare module 'solid-js' {
149
149
  namespace JSX {
150
- interface IntrinsicElements extends IntrinsicNekoElement {
150
+ interface IntrinsicElements extends HTMLElementTags, IntrinsicNekoElement {
151
151
  }
152
152
  }
153
153
  interface HTMLElementTagNameMap extends IntrinsicNekoElement {
154
154
  }
155
155
  }
156
- declare module 'react' {
157
- namespace JSX {
156
+ declare global {
157
+ export namespace JSX {
158
158
  interface IntrinsicElements extends IntrinsicNekoElement {
159
159
  }
160
160
  }
package/es/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["components/index.ts"],"sourcesContent":["'use client';\n\nexport { default as Avatar, type AvatarElement, type AvatarProps } from './avatar';\nexport {\n default as AvatarGroup,\n type AvatarGroupElement,\n type AvatarGroupProps,\n} from './avatar/group';\nexport { default as BackTop, type BackTopElement, type BackTopProps } from './back-top';\nexport { type BaseOption, type BasicConfig, FieldName, Size, Status } from './basic-config';\nexport { default as Button, type ButtonElement, type ButtonProps } from './button';\nexport {\n default as CaptureScreen,\n type CaptureScreenElement,\n type CaptureScreenProps,\n} from './capture-screen';\nexport { default as Carousel, type CarouselElement, type CarouselProps } from './carousel';\nexport {\n default as Checkbox,\n type CheckboxBoolElement,\n type CheckboxBoolProps,\n type CheckboxGroupElement,\n type CheckboxGroupProps,\n} from './checkbox';\nexport { default as Code, type CodeElement, type CodeProps, type Language } from './code';\nexport { default as Collapse, type CollapseElement, type CollapseProps } from './collapse';\nexport {\n default as ColorPalette,\n type ColorPaletteElement,\n type ColorPaletteProps,\n} from './color-palette';\nexport {\n default as ColorPicker,\n type ColorPickerElement,\n type ColorPickerProps,\n} from './color-picker';\nexport { default as Cron, type CronElement, type CronProps } from './cron';\nexport { default as DatePicker, type DatePickerElement, type DatePickerProps } from './date-picker';\nexport { default as dayjs } from './date-picker/dayjs';\nexport {\n default as Dropdown,\n type DropdownElement,\n type DropdownMultipleElement,\n type DropdownMultipleProps,\n type DropdownProps,\n} from './dropdown';\nexport { default as Empty, type EmptyElement, type EmptyProps } from './empty';\nexport { default as fromSchema } from './from-schema';\nexport { default as getOptions } from './get-options';\nexport {\n default as HighlightText,\n type HighlightTextElement,\n type HighlightTextProps,\n} from './highlight-text';\nexport { default as icon, type IconAttribute } from './icon';\nexport { default as Img, type ImgElement, type ImgProps } from './img';\nexport { default as Input, type InputElement, type InputProps } from './input';\nexport {\n default as InputNumber,\n type InputNumberElement,\n type InputNumberProps,\n} from './input-number';\nexport { default as Md, type MdElement, type MdProps } from './md';\nexport { default as mdStyle } from './md-style';\nexport {\n default as Menu,\n type MenuElement,\n type MenuMultipleElement,\n type MenuMultipleProps,\n type MenuOption,\n type MenuProps,\n} from './menu';\nexport {\n default as Modal,\n type ModalElement,\n type ModalProps,\n OpenState,\n type OpenStateKey,\n} from './modal';\nexport {\n default as notification,\n type NotificationProps,\n type NotificationType,\n} from './notification';\nexport { default as Pagination, type PaginationElement, type PaginationProps } from './pagination';\nexport { default as Popover, type PopoverElement, type PopoverProps } from './popover';\nexport { default as Prism } from './prism';\nexport { default as Provider, type ProviderElement, type ProviderProps } from './provider';\nexport { type IntRange, default as QrCode, type QrCodeElement, type QrCodeProps } from './qrcode';\nexport { default as Radio, type RadioElement, type RadioOption, type RadioProps } from './radio';\nexport { default as Segmented, type SegmentedElement, type SegmentedProps } from './segmented';\nexport {\n default as Select,\n type SelectElement,\n type SelectMultipleElement,\n type SelectMultipleProps,\n type SelectProps,\n} from './select';\nexport { default as Skeleton, type SkeletonElement, type SkeletonProps } from './skeleton';\nexport { default as Spin, type SpinElement, type SpinProps } from './spin';\nexport { default as Switch, type SwitchElement, type SwitchProps } from './switch';\nexport { default as Table, type TableElement, type TableProps } from './table';\nexport { type TabOption, default as Tabs, type TabsElement, type TabsProps } from './tabs';\nexport { default as Tag, type TagElement, type TagProps } from './tag';\nexport {\n type ColorScheme,\n generateColor,\n default as theme,\n type ThemeOption,\n toneColor,\n} from './theme';\nexport {\n default as Tree,\n type TreeData,\n type TreeElement,\n type TreeMultipleElement,\n type TreeMultipleProps,\n type TreeMultipleSchemaElement,\n type TreeMultipleSchemaProps,\n type TreeMultipleStringElement,\n type TreeMultipleStringProps,\n type TreeProps,\n type TreeSchemaElement,\n type TreeSchemaProps,\n type TreeStringElement,\n type TreeStringProps,\n} from './tree';\nexport { default as Typography, type TypographyElement, type TypographyProps } from './typography';\nexport type { CustomElement } from 'custom-element-type';\nexport { customElement, getCurrentElement, hot, noShadowDOM, withSolid } from 'solid-element';\nimport type { ICustomElement, Transform } from 'custom-element-type';\n\nimport type {\n AvatarElement,\n AvatarGroupElement,\n BackTopElement,\n ButtonElement,\n CaptureScreenElement,\n CarouselElement,\n CheckboxBoolElement,\n CheckboxGroupElement,\n CodeElement,\n CollapseElement,\n ColorPaletteElement,\n ColorPickerElement,\n CronElement,\n DatePickerElement,\n DropdownElement,\n DropdownMultipleElement,\n EmptyElement,\n HighlightTextElement,\n ImgElement,\n InputElement,\n InputNumberElement,\n MdElement,\n MenuElement,\n MenuMultipleElement,\n ModalElement,\n PaginationElement,\n PopoverElement,\n ProviderElement,\n QrCodeElement,\n RadioElement,\n SegmentedElement,\n SelectElement,\n SelectMultipleElement,\n SkeletonElement,\n SpinElement,\n SwitchElement,\n TableElement,\n TabsElement,\n TagElement,\n TreeElement,\n TreeMultipleElement,\n TreeMultipleSchemaElement,\n TreeMultipleStringElement,\n TreeSchemaElement,\n TreeStringElement,\n TypographyElement,\n} from '.';\n\n/** 组件列表\n * @author monako97\n * @ignore optional\n */\ninterface CustomElementTags {\n /** 头像 */\n 'n-avatar': AvatarElement;\n /** 头像组 */\n 'n-avatar-group': AvatarGroupElement;\n /** 返回顶部 */\n 'n-back-top': BackTopElement;\n /** 按钮 */\n 'n-button': ButtonElement;\n /** 捕获屏幕 */\n 'n-capture-screen': CaptureScreenElement;\n /** 走马灯、轮播 */\n 'n-carousel': CarouselElement;\n /** 复选框 */\n 'n-checkbox': CheckboxBoolElement | CheckboxGroupElement;\n /** 代码框 */\n 'n-code': CodeElement;\n /** 取色器 */\n 'n-color-palette': ColorPaletteElement;\n /** 取色器(弹出类型) */\n 'n-color-picker': ColorPickerElement;\n /** 下拉面板 */\n 'n-dropdown': DropdownElement | DropdownMultipleElement;\n /** 空面板 */\n 'n-empty': EmptyElement;\n /** 匹配高亮文字 */\n 'n-highlight-text': HighlightTextElement;\n /** 图片查看器 */\n 'n-img': ImgElement;\n /** 输入框 */\n 'n-input': InputElement;\n /** 数字输入框 */\n 'n-input-number': InputNumberElement;\n /** Markdown渲染 */\n 'n-md': MdElement;\n /** 弹出气泡面板 */\n 'n-popover': PopoverElement;\n /** 单选项 */\n 'n-radio': RadioElement;\n /** 分段控制器 */\n 'n-segmented': SegmentedElement;\n /** 下拉选择框 */\n 'n-select': SelectElement | SelectMultipleElement;\n /** 骨架屏 */\n 'n-skeleton': SkeletonElement;\n /** 加载中 */\n 'n-spin': SpinElement;\n /** 开关 */\n 'n-switch': SwitchElement;\n /** 树形渲染 */\n 'n-tree':\n | TreeElement\n | TreeStringElement\n | TreeSchemaElement\n | TreeMultipleElement\n | TreeMultipleStringElement\n | TreeMultipleSchemaElement;\n /** 文字排版 */\n 'n-typography': TypographyElement;\n /** 标签页 */\n 'n-tabs': TabsElement;\n /** 标签 */\n 'n-tag': TagElement;\n /** 导航菜单 */\n 'n-menu': MenuElement | MenuMultipleElement;\n /** Cron表达式编辑器 */\n 'n-cron': CronElement;\n /** 日期选择器\n * @since 2.1.0\n */\n 'n-data-picker': DatePickerElement;\n /** 数据表格\n * @since 2.2.0\n */\n 'n-table': TableElement;\n /** 分页器\n * @since 2.2.0\n */\n 'n-pagination': PaginationElement;\n /** 响应内部变化\n * @since 2.3.0\n */\n 'n-provider': ProviderElement;\n /** 模态框\n * @since 2.6.0\n */\n 'n-modal': ModalElement;\n /**\n * 二维码\n * @since 2.9.0\n */\n 'n-qrcode': QrCodeElement;\n /**\n * 折叠面板\n * @since 2.10.0\n */\n 'n-collapse': CollapseElement;\n}\ntype IntrinsicNekoElement = Transform<CustomElementTags>;\n\ndeclare module 'solid-js' {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface IntrinsicElements extends IntrinsicNekoElement {}\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\ndeclare module 'react' {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface IntrinsicElements extends IntrinsicNekoElement {}\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\n\nexport interface ComponentOptions<T> {\n element: T & ICustomElement;\n}\n"],"names":["default","Avatar","AvatarGroup","BackTop","FieldName","Size","Status","Button","CaptureScreen","Carousel","Checkbox","Code","Collapse","ColorPalette","ColorPicker","Cron","DatePicker","dayjs","Dropdown","Empty","fromSchema","getOptions","HighlightText","icon","Img","Input","InputNumber","Md","mdStyle","Menu","Modal","OpenState","notification","Pagination","Popover","Prism","Provider","QrCode","Radio","Segmented","Select","Skeleton","Spin","Switch","Table","Tabs","Tag","generateColor","theme","toneColor","Tree","Typography","customElement","getCurrentElement","hot","noShadowDOM","withSolid"],"mappings":"AAEA,OAASA,WAAWC,MAAM,KAA8C,UAAW,AACnF,QACED,WAAWE,WAAW,KAGjB,gBAAiB,AACxB,QAASF,WAAWG,OAAO,KAAgD,YAAa,AACxF,QAA4CC,SAAS,CAAEC,IAAI,CAAEC,MAAM,KAAQ,gBAAiB,AAC5F,QAASN,WAAWO,MAAM,KAA8C,UAAW,AACnF,QACEP,WAAWQ,aAAa,KAGnB,kBAAmB,AAC1B,QAASR,WAAWS,QAAQ,KAAkD,YAAa,AAC3F,QACET,WAAWU,QAAQ,KAKd,YAAa,AACpB,QAASV,WAAWW,IAAI,KAAyD,QAAS,AAC1F,QAASX,WAAWY,QAAQ,KAAkD,YAAa,AAC3F,QACEZ,WAAWa,YAAY,KAGlB,iBAAkB,AACzB,QACEb,WAAWc,WAAW,KAGjB,gBAAiB,AACxB,QAASd,WAAWe,IAAI,KAA0C,QAAS,AAC3E,QAASf,WAAWgB,UAAU,KAAsD,eAAgB,AACpG,QAAShB,WAAWiB,KAAK,KAAQ,qBAAsB,AACvD,QACEjB,WAAWkB,QAAQ,KAKd,YAAa,AACpB,QAASlB,WAAWmB,KAAK,KAA4C,SAAU,AAC/E,QAASnB,WAAWoB,UAAU,KAAQ,eAAgB,AACtD,QAASpB,WAAWqB,UAAU,KAAQ,eAAgB,AACtD,QACErB,WAAWsB,aAAa,KAGnB,kBAAmB,AAC1B,QAAStB,WAAWuB,IAAI,KAA4B,QAAS,AAC7D,QAASvB,WAAWwB,GAAG,KAAwC,OAAQ,AACvE,QAASxB,WAAWyB,KAAK,KAA4C,SAAU,AAC/E,QACEzB,WAAW0B,WAAW,KAGjB,gBAAiB,AACxB,QAAS1B,WAAW2B,EAAE,KAAsC,MAAO,AACnE,QAAS3B,WAAW4B,OAAO,KAAQ,YAAa,AAChD,QACE5B,WAAW6B,IAAI,KAMV,QAAS,AAChB,QACE7B,WAAW8B,KAAK,CAGhBC,SAAS,KAEJ,SAAU,AACjB,QACE/B,WAAWgC,YAAY,KAGlB,gBAAiB,AACxB,QAAShC,WAAWiC,UAAU,KAAsD,cAAe,AACnG,QAASjC,WAAWkC,OAAO,KAAgD,WAAY,AACvF,QAASlC,WAAWmC,KAAK,KAAQ,SAAU,AAC3C,QAASnC,WAAWoC,QAAQ,KAAkD,YAAa,AAC3F,QAAwBpC,WAAWqC,MAAM,KAA8C,UAAW,AAClG,QAASrC,WAAWsC,KAAK,KAA8D,SAAU,AACjG,QAAStC,WAAWuC,SAAS,KAAoD,aAAc,AAC/F,QACEvC,WAAWwC,MAAM,KAKZ,UAAW,AAClB,QAASxC,WAAWyC,QAAQ,KAAkD,YAAa,AAC3F,QAASzC,WAAW0C,IAAI,KAA0C,QAAS,AAC3E,QAAS1C,WAAW2C,MAAM,KAA8C,UAAW,AACnF,QAAS3C,WAAW4C,KAAK,KAA4C,SAAU,AAC/E,QAAyB5C,WAAW6C,IAAI,KAA0C,QAAS,AAC3F,QAAS7C,WAAW8C,GAAG,KAAwC,OAAQ,AACvE,QAEEC,aAAa,CACb/C,WAAWgD,KAAK,CAEhBC,SAAS,KACJ,SAAU,AACjB,QACEjD,WAAWkD,IAAI,KAcV,QAAS,AAChB,QAASlD,WAAWmD,UAAU,KAAsD,cAAe,AAEnG,QAASC,aAAa,CAAEC,iBAAiB,CAAEC,GAAG,CAAEC,WAAW,CAAEC,SAAS,KAAQ,eAAgB"}
1
+ {"version":3,"sources":["components/index.ts"],"sourcesContent":["'use client';\n\nexport { default as Avatar, type AvatarElement, type AvatarProps } from './avatar';\nexport {\n default as AvatarGroup,\n type AvatarGroupElement,\n type AvatarGroupProps,\n} from './avatar/group';\nexport { default as BackTop, type BackTopElement, type BackTopProps } from './back-top';\nexport { type BaseOption, type BasicConfig, FieldName, Size, Status } from './basic-config';\nexport { default as Button, type ButtonElement, type ButtonProps } from './button';\nexport {\n default as CaptureScreen,\n type CaptureScreenElement,\n type CaptureScreenProps,\n} from './capture-screen';\nexport { default as Carousel, type CarouselElement, type CarouselProps } from './carousel';\nexport {\n default as Checkbox,\n type CheckboxBoolElement,\n type CheckboxBoolProps,\n type CheckboxGroupElement,\n type CheckboxGroupProps,\n} from './checkbox';\nexport { default as Code, type CodeElement, type CodeProps, type Language } from './code';\nexport { default as Collapse, type CollapseElement, type CollapseProps } from './collapse';\nexport {\n default as ColorPalette,\n type ColorPaletteElement,\n type ColorPaletteProps,\n} from './color-palette';\nexport {\n default as ColorPicker,\n type ColorPickerElement,\n type ColorPickerProps,\n} from './color-picker';\nexport { default as Cron, type CronElement, type CronProps } from './cron';\nexport { default as DatePicker, type DatePickerElement, type DatePickerProps } from './date-picker';\nexport { default as dayjs } from './date-picker/dayjs';\nexport {\n default as Dropdown,\n type DropdownElement,\n type DropdownMultipleElement,\n type DropdownMultipleProps,\n type DropdownProps,\n} from './dropdown';\nexport { default as Empty, type EmptyElement, type EmptyProps } from './empty';\nexport { default as fromSchema } from './from-schema';\nexport { default as getOptions } from './get-options';\nexport {\n default as HighlightText,\n type HighlightTextElement,\n type HighlightTextProps,\n} from './highlight-text';\nexport { default as icon, type IconAttribute } from './icon';\nexport { default as Img, type ImgElement, type ImgProps } from './img';\nexport { default as Input, type InputElement, type InputProps } from './input';\nexport {\n default as InputNumber,\n type InputNumberElement,\n type InputNumberProps,\n} from './input-number';\nexport { default as Md, type MdElement, type MdProps } from './md';\nexport { default as mdStyle } from './md-style';\nexport {\n default as Menu,\n type MenuElement,\n type MenuMultipleElement,\n type MenuMultipleProps,\n type MenuOption,\n type MenuProps,\n} from './menu';\nexport {\n default as Modal,\n type ModalElement,\n type ModalProps,\n OpenState,\n type OpenStateKey,\n} from './modal';\nexport {\n default as notification,\n type NotificationProps,\n type NotificationType,\n} from './notification';\nexport { default as Pagination, type PaginationElement, type PaginationProps } from './pagination';\nexport { default as Popover, type PopoverElement, type PopoverProps } from './popover';\nexport { default as Prism } from './prism';\nexport { default as Provider, type ProviderElement, type ProviderProps } from './provider';\nexport { type IntRange, default as QrCode, type QrCodeElement, type QrCodeProps } from './qrcode';\nexport { default as Radio, type RadioElement, type RadioOption, type RadioProps } from './radio';\nexport { default as Segmented, type SegmentedElement, type SegmentedProps } from './segmented';\nexport {\n default as Select,\n type SelectElement,\n type SelectMultipleElement,\n type SelectMultipleProps,\n type SelectProps,\n} from './select';\nexport { default as Skeleton, type SkeletonElement, type SkeletonProps } from './skeleton';\nexport { default as Spin, type SpinElement, type SpinProps } from './spin';\nexport { default as Switch, type SwitchElement, type SwitchProps } from './switch';\nexport { default as Table, type TableElement, type TableProps } from './table';\nexport { type TabOption, default as Tabs, type TabsElement, type TabsProps } from './tabs';\nexport { default as Tag, type TagElement, type TagProps } from './tag';\nexport {\n type ColorScheme,\n generateColor,\n default as theme,\n type ThemeOption,\n toneColor,\n} from './theme';\nexport {\n default as Tree,\n type TreeData,\n type TreeElement,\n type TreeMultipleElement,\n type TreeMultipleProps,\n type TreeMultipleSchemaElement,\n type TreeMultipleSchemaProps,\n type TreeMultipleStringElement,\n type TreeMultipleStringProps,\n type TreeProps,\n type TreeSchemaElement,\n type TreeSchemaProps,\n type TreeStringElement,\n type TreeStringProps,\n} from './tree';\nexport { default as Typography, type TypographyElement, type TypographyProps } from './typography';\nexport type { CustomElement } from 'custom-element-type';\nexport { customElement, getCurrentElement, hot, noShadowDOM, withSolid } from 'solid-element';\nimport type { ICustomElement, Transform } from 'custom-element-type';\n\nimport type {\n AvatarElement,\n AvatarGroupElement,\n BackTopElement,\n ButtonElement,\n CaptureScreenElement,\n CarouselElement,\n CheckboxBoolElement,\n CheckboxGroupElement,\n CodeElement,\n CollapseElement,\n ColorPaletteElement,\n ColorPickerElement,\n CronElement,\n DatePickerElement,\n DropdownElement,\n DropdownMultipleElement,\n EmptyElement,\n HighlightTextElement,\n ImgElement,\n InputElement,\n InputNumberElement,\n MdElement,\n MenuElement,\n MenuMultipleElement,\n ModalElement,\n PaginationElement,\n PopoverElement,\n ProviderElement,\n QrCodeElement,\n RadioElement,\n SegmentedElement,\n SelectElement,\n SelectMultipleElement,\n SkeletonElement,\n SpinElement,\n SwitchElement,\n TableElement,\n TabsElement,\n TagElement,\n TreeElement,\n TreeMultipleElement,\n TreeMultipleSchemaElement,\n TreeMultipleStringElement,\n TreeSchemaElement,\n TreeStringElement,\n TypographyElement,\n} from '.';\n\n/** 组件列表\n * @author monako97\n * @ignore optional\n */\ninterface CustomElementTags {\n /** 头像 */\n 'n-avatar': AvatarElement;\n /** 头像组 */\n 'n-avatar-group': AvatarGroupElement;\n /** 返回顶部 */\n 'n-back-top': BackTopElement;\n /** 按钮 */\n 'n-button': ButtonElement;\n /** 捕获屏幕 */\n 'n-capture-screen': CaptureScreenElement;\n /** 走马灯、轮播 */\n 'n-carousel': CarouselElement;\n /** 复选框 */\n 'n-checkbox': CheckboxBoolElement | CheckboxGroupElement;\n /** 代码框 */\n 'n-code': CodeElement;\n /** 取色器 */\n 'n-color-palette': ColorPaletteElement;\n /** 取色器(弹出类型) */\n 'n-color-picker': ColorPickerElement;\n /** 下拉面板 */\n 'n-dropdown': DropdownElement | DropdownMultipleElement;\n /** 空面板 */\n 'n-empty': EmptyElement;\n /** 匹配高亮文字 */\n 'n-highlight-text': HighlightTextElement;\n /** 图片查看器 */\n 'n-img': ImgElement;\n /** 输入框 */\n 'n-input': InputElement;\n /** 数字输入框 */\n 'n-input-number': InputNumberElement;\n /** Markdown渲染 */\n 'n-md': MdElement;\n /** 弹出气泡面板 */\n 'n-popover': PopoverElement;\n /** 单选项 */\n 'n-radio': RadioElement;\n /** 分段控制器 */\n 'n-segmented': SegmentedElement;\n /** 下拉选择框 */\n 'n-select': SelectElement | SelectMultipleElement;\n /** 骨架屏 */\n 'n-skeleton': SkeletonElement;\n /** 加载中 */\n 'n-spin': SpinElement;\n /** 开关 */\n 'n-switch': SwitchElement;\n /** 树形渲染 */\n 'n-tree':\n | TreeElement\n | TreeStringElement\n | TreeSchemaElement\n | TreeMultipleElement\n | TreeMultipleStringElement\n | TreeMultipleSchemaElement;\n /** 文字排版 */\n 'n-typography': TypographyElement;\n /** 标签页 */\n 'n-tabs': TabsElement;\n /** 标签 */\n 'n-tag': TagElement;\n /** 导航菜单 */\n 'n-menu': MenuElement | MenuMultipleElement;\n /** Cron表达式编辑器 */\n 'n-cron': CronElement;\n /** 日期选择器\n * @since 2.1.0\n */\n 'n-data-picker': DatePickerElement;\n /** 数据表格\n * @since 2.2.0\n */\n 'n-table': TableElement;\n /** 分页器\n * @since 2.2.0\n */\n 'n-pagination': PaginationElement;\n /** 响应内部变化\n * @since 2.3.0\n */\n 'n-provider': ProviderElement;\n /** 模态框\n * @since 2.6.0\n */\n 'n-modal': ModalElement;\n /**\n * 二维码\n * @since 2.9.0\n */\n 'n-qrcode': QrCodeElement;\n /**\n * 折叠面板\n * @since 2.10.0\n */\n 'n-collapse': CollapseElement;\n}\ntype IntrinsicNekoElement = Transform<CustomElementTags>;\n\ndeclare module 'solid-js' {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n export interface IntrinsicElements extends HTMLElementTags, IntrinsicNekoElement {}\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n export interface IntrinsicElements extends IntrinsicNekoElement {}\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\n\nexport interface ComponentOptions<T> {\n element: T & ICustomElement;\n}\n"],"names":["default","Avatar","AvatarGroup","BackTop","FieldName","Size","Status","Button","CaptureScreen","Carousel","Checkbox","Code","Collapse","ColorPalette","ColorPicker","Cron","DatePicker","dayjs","Dropdown","Empty","fromSchema","getOptions","HighlightText","icon","Img","Input","InputNumber","Md","mdStyle","Menu","Modal","OpenState","notification","Pagination","Popover","Prism","Provider","QrCode","Radio","Segmented","Select","Skeleton","Spin","Switch","Table","Tabs","Tag","generateColor","theme","toneColor","Tree","Typography","customElement","getCurrentElement","hot","noShadowDOM","withSolid"],"mappings":"AAEA,OAASA,WAAWC,MAAM,KAA8C,UAAW,AACnF,QACED,WAAWE,WAAW,KAGjB,gBAAiB,AACxB,QAASF,WAAWG,OAAO,KAAgD,YAAa,AACxF,QAA4CC,SAAS,CAAEC,IAAI,CAAEC,MAAM,KAAQ,gBAAiB,AAC5F,QAASN,WAAWO,MAAM,KAA8C,UAAW,AACnF,QACEP,WAAWQ,aAAa,KAGnB,kBAAmB,AAC1B,QAASR,WAAWS,QAAQ,KAAkD,YAAa,AAC3F,QACET,WAAWU,QAAQ,KAKd,YAAa,AACpB,QAASV,WAAWW,IAAI,KAAyD,QAAS,AAC1F,QAASX,WAAWY,QAAQ,KAAkD,YAAa,AAC3F,QACEZ,WAAWa,YAAY,KAGlB,iBAAkB,AACzB,QACEb,WAAWc,WAAW,KAGjB,gBAAiB,AACxB,QAASd,WAAWe,IAAI,KAA0C,QAAS,AAC3E,QAASf,WAAWgB,UAAU,KAAsD,eAAgB,AACpG,QAAShB,WAAWiB,KAAK,KAAQ,qBAAsB,AACvD,QACEjB,WAAWkB,QAAQ,KAKd,YAAa,AACpB,QAASlB,WAAWmB,KAAK,KAA4C,SAAU,AAC/E,QAASnB,WAAWoB,UAAU,KAAQ,eAAgB,AACtD,QAASpB,WAAWqB,UAAU,KAAQ,eAAgB,AACtD,QACErB,WAAWsB,aAAa,KAGnB,kBAAmB,AAC1B,QAAStB,WAAWuB,IAAI,KAA4B,QAAS,AAC7D,QAASvB,WAAWwB,GAAG,KAAwC,OAAQ,AACvE,QAASxB,WAAWyB,KAAK,KAA4C,SAAU,AAC/E,QACEzB,WAAW0B,WAAW,KAGjB,gBAAiB,AACxB,QAAS1B,WAAW2B,EAAE,KAAsC,MAAO,AACnE,QAAS3B,WAAW4B,OAAO,KAAQ,YAAa,AAChD,QACE5B,WAAW6B,IAAI,KAMV,QAAS,AAChB,QACE7B,WAAW8B,KAAK,CAGhBC,SAAS,KAEJ,SAAU,AACjB,QACE/B,WAAWgC,YAAY,KAGlB,gBAAiB,AACxB,QAAShC,WAAWiC,UAAU,KAAsD,cAAe,AACnG,QAASjC,WAAWkC,OAAO,KAAgD,WAAY,AACvF,QAASlC,WAAWmC,KAAK,KAAQ,SAAU,AAC3C,QAASnC,WAAWoC,QAAQ,KAAkD,YAAa,AAC3F,QAAwBpC,WAAWqC,MAAM,KAA8C,UAAW,AAClG,QAASrC,WAAWsC,KAAK,KAA8D,SAAU,AACjG,QAAStC,WAAWuC,SAAS,KAAoD,aAAc,AAC/F,QACEvC,WAAWwC,MAAM,KAKZ,UAAW,AAClB,QAASxC,WAAWyC,QAAQ,KAAkD,YAAa,AAC3F,QAASzC,WAAW0C,IAAI,KAA0C,QAAS,AAC3E,QAAS1C,WAAW2C,MAAM,KAA8C,UAAW,AACnF,QAAS3C,WAAW4C,KAAK,KAA4C,SAAU,AAC/E,QAAyB5C,WAAW6C,IAAI,KAA0C,QAAS,AAC3F,QAAS7C,WAAW8C,GAAG,KAAwC,OAAQ,AACvE,QAEEC,aAAa,CACb/C,WAAWgD,KAAK,CAEhBC,SAAS,KACJ,SAAU,AACjB,QACEjD,WAAWkD,IAAI,KAcV,QAAS,AAChB,QAASlD,WAAWmD,UAAU,KAAsD,cAAe,AAEnG,QAASC,aAAa,CAAEC,iBAAiB,CAAEC,GAAG,CAAEC,WAAW,CAAEC,SAAS,KAAQ,eAAgB"}
@@ -29,7 +29,4 @@ export interface CodeProps {
29
29
  }
30
30
  export type CodeElement = CustomElement<CodeProps>;
31
31
  declare function Code(props: CodeProps): JSX.Element;
32
- declare namespace Code {
33
- var registry: () => void;
34
- }
35
32
  export default Code;
package/lib/code/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return b}});const e=require("solid-js/web"),t=require("solid-js"),r=u(require("@moneko/common/lib/isFunction")),n=u(require("@moneko/common/lib/setClipboard")),i=require("@moneko/css"),o=require("solid-element"),l=require("../basic-config"),a=u(require("../theme")),s=require("./copy-icon"),c=require("./style");function u(e){return e&&e.__esModule?e:{default:e}}function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(d=function(e){return e?r:t})(e)}function f(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=d(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var l=i?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(n,o,l):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}const g=(0,e.template)("<style> "),h=(0,e.template)("<style>"),p=(0,e.template)('<div class="toolbar">'),m=(0,e.template)("<pre><code>");function v(o){let l,u;let{isDark:d}=a.default,v=/%[0-9A-Fa-f]{2}/,C=(0,t.createUniqueId)(),[b,y]=(0,t.createSignal)(""),[w,S]=(0,t.createSignal)();async function k(){return window.Prism?(window.Prism.disableWorkerMessageHandler=!0,window.Prism.manual=!0,window.Prism):(await Promise.resolve().then(()=>f(require("../prism")))).default}let[_]=(0,t.createResource)("prism",k),j=(0,t.createMemo)(()=>o.title||o.language?.split(" ").pop());function $(){(0,n.default)((0,t.untrack)(b),l)}(0,t.createEffect)(()=>{let e=o.code||"";v.test(e)&&(e=decodeURIComponent(e)),l&&(l.normalize(),e!==l.textContent&&y(e))});let P=function(e){e.target.normalize();let t=e.target.textContent;q(o.language,t,!0),(0,r.default)(o.onChange)&&o.onChange(t)};function q(e="markup",t,r,n={}){u&&(clearTimeout(u),u=void 0);let i=_();t&&i&&(u=setTimeout(()=>{if(clearTimeout(u),CSS.highlights){r&&CSS.highlights.forEach((e,t)=>{t.startsWith(C)&&e.clear()});let o=e.split(" "),a=i.languages[o[0]];a&&l&&function e(t,r,n,i=0){let o=i;if(Array.isArray(r)){for(let i=0,l=r.length;i<l;i++){let l=r[i];if("object"!=typeof l){o+=l.length;continue}o=e(t,l,n,o)}return o}if("object"==typeof r&&r.type&&t.firstChild){let i=(r.alias??r.type).toString(),l=C+i,a=new Range;["deleted","inserted"].includes(i)?a.setStart(t.firstChild,o+2):a.setStart(t.firstChild,o),Array.isArray(r.content)?o=e(t,r.content,n,o):"string"==typeof r.content&&(o+=r.content.length),a.setEnd(t.firstChild,o),function(e,t,r,n){let i=CSS.highlights.get(e);i?i.add(r):CSS.highlights.set(e,new Highlight().add(r)),void 0===n[e]&&(n[e]=`::highlight(${e}){color:var(--${t});background-color:var(--${t}-bg);text-decoration:var(--${t}-text-decoration);text-shadow:var(--${t}-text-shadow);-webkit-text-stroke-width:var(--${t}-stroke-width);-webkit-text-stroke-color:var(--${t}-stroke-color);}`)}(l,i,a,n)}return o}(l,i.tokenize(t,a),n),o.length>1||"git"===o[0]?q(o[1],t,!1,n):S(Object.values(n).join(""))}else throw Error("不支持 CSS Highlights");u=void 0},0))}return(0,t.createEffect)(()=>{q(o.language,b(),!0)}),(0,t.onCleanup)(()=>{if(CSS.highlights)for(let e of CSS.highlights.keys())e.startsWith(C)&&CSS.highlights.delete(e)}),[(()=>{let t=g(),r=t.firstChild;return(0,e.effect)(()=>r.data=d()?c.darkCss:c.lightCss),t})(),(()=>{let t=g(),r=t.firstChild;return(0,e.effect)(()=>r.data=w()),t})(),(()=>{let e=h();return e.textContent=c.style,e})(),(0,e.createComponent)(t.Show,{get when(){return o.css},get children(){let t=g(),r=t.firstChild;return(0,e.effect)(()=>r.data=(0,i.css)(o.css)),t}}),(()=>{let r=m(),n=r.firstChild,i=l;return(0,e.insert)(r,(0,e.createComponent)(t.Show,{get when(){return o.toolbar},get children(){let t=p();return(0,e.insert)(t,(0,e.createComponent)(s.CopyIcon,{class:"toolbar-copy",onClick:$})),(0,e.effect)(()=>(0,e.setAttribute)(t,"data-language",j())),t}}),n),(0,e.addEventListener)(n,"input",P,!0),"function"==typeof i?(0,e.use)(i,n):l=n,(0,e.setAttribute)(n,"spellcheck",!1),(0,e.insert)(n,b),(0,e.effect)(t=>{let i={[`language-${o.language}`]:!!o.language,"not-toolbar":!o.toolbar,[o.class]:!o.edit},l=o.edit;return t._v$=(0,e.classList)(r,i,t._v$),l!==t._v$2&&(0,e.setAttribute)(n,"contenteditable",t._v$2=l),t},{_v$:void 0,_v$2:void 0}),r})()]}function C(){(0,o.customElement)("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,onChange:void 0,title:void 0},(r,n)=>{let{baseStyle:i}=a.default,o=n.element,s=(0,t.mergeProps)({code:o.textContent,css:o.css,onChange(e){o.dispatchEvent(new CustomEvent("change",{detail:e}))}},r);return(0,t.createEffect)(()=>{(0,l.clearAttribute)(o,["css","code","title"]),o.replaceChildren()}),[(()=>{let t=g(),r=t.firstChild;return(0,e.effect)(()=>r.data=i()),t})(),(0,e.createComponent)(v,s)]})}v.registry=C,v.registry();const b=v;(0,e.delegateEvents)(["input"]);
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return C}});const e=require("solid-js/web"),t=require("solid-js"),r=u(require("@moneko/common/lib/isFunction")),n=u(require("@moneko/common/lib/setClipboard")),i=require("@moneko/css"),o=require("solid-element"),l=require("../basic-config"),a=u(require("../theme")),s=require("./copy-icon"),c=require("./style");function u(e){return e&&e.__esModule?e:{default:e}}function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(d=function(e){return e?r:t})(e)}function f(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=d(t);if(r&&r.has(e))return r.get(e);var n={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var l=i?Object.getOwnPropertyDescriptor(e,o):null;l&&(l.get||l.set)?Object.defineProperty(n,o,l):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}const g=(0,e.template)("<style> "),h=(0,e.template)("<style>"),p=(0,e.template)('<div class="toolbar">'),m=(0,e.template)("<pre><code>");function v(o){let l,u;let{isDark:d}=a.default,v=/%[0-9A-Fa-f]{2}/,C=(0,t.createUniqueId)(),[b,y]=(0,t.createSignal)(""),[w,S]=(0,t.createSignal)();async function k(){return window.Prism?(window.Prism.disableWorkerMessageHandler=!0,window.Prism.manual=!0,window.Prism):(await Promise.resolve().then(()=>f(require("../prism")))).default}let[_]=(0,t.createResource)("prism",k),j=(0,t.createMemo)(()=>o.title||o.language?.split(" ").pop());function $(){(0,n.default)((0,t.untrack)(b),l)}(0,t.createEffect)(()=>{let e=o.code||"";v.test(e)&&(e=decodeURIComponent(e)),l&&(l.normalize(),e!==l.textContent&&y(e))});let P=function(e){e.target.normalize();let t=e.target.textContent;q(o.language,t,!0),(0,r.default)(o.onChange)&&o.onChange(t)};function q(e="markup",t,r,n={}){u&&(clearTimeout(u),u=void 0);let i=_();t&&i&&(u=setTimeout(()=>{if(clearTimeout(u),CSS.highlights){r&&CSS.highlights.forEach((e,t)=>{t.startsWith(C)&&e.clear()});let o=e.split(" "),a=i.languages[o[0]];a&&l&&function e(t,r,n,i=0){let o=i;if(Array.isArray(r)){for(let i=0,l=r.length;i<l;i++){let l=r[i];if("object"!=typeof l){o+=l.length;continue}o=e(t,l,n,o)}return o}if("object"==typeof r&&r.type&&t.firstChild){let i=(r.alias??r.type).toString(),l=C+i,a=new Range;["deleted","inserted"].includes(i)?a.setStart(t.firstChild,o+2):a.setStart(t.firstChild,o),Array.isArray(r.content)?o=e(t,r.content,n,o):"string"==typeof r.content&&(o+=r.content.length),a.setEnd(t.firstChild,o),function(e,t,r,n){let i=CSS.highlights.get(e);i?i.add(r):CSS.highlights.set(e,new Highlight().add(r)),void 0===n[e]&&(n[e]=`::highlight(${e}){color:var(--${t});background-color:var(--${t}-bg);text-decoration:var(--${t}-text-decoration);text-shadow:var(--${t}-text-shadow);-webkit-text-stroke-width:var(--${t}-stroke-width);-webkit-text-stroke-color:var(--${t}-stroke-color);}`)}(l,i,a,n)}return o}(l,i.tokenize(t,a),n),o.length>1||"git"===o[0]?q(o[1],t,!1,n):S(Object.values(n).join(""))}else throw Error("不支持 CSS Highlights");u=void 0},0))}return(0,t.createEffect)(()=>{q(o.language,b(),!0)}),(0,t.onCleanup)(()=>{if(CSS.highlights)for(let e of CSS.highlights.keys())e.startsWith(C)&&CSS.highlights.delete(e)}),[(()=>{let t=g(),r=t.firstChild;return(0,e.effect)(()=>r.data=d()?c.darkCss:c.lightCss),t})(),(()=>{let t=g(),r=t.firstChild;return(0,e.effect)(()=>r.data=w()),t})(),(()=>{let e=h();return e.textContent=c.style,e})(),(0,e.createComponent)(t.Show,{get when(){return o.css},get children(){let t=g(),r=t.firstChild;return(0,e.effect)(()=>r.data=(0,i.css)(o.css)),t}}),(()=>{let r=m(),n=r.firstChild,i=l;return(0,e.insert)(r,(0,e.createComponent)(t.Show,{get when(){return o.toolbar},get children(){let t=p();return(0,e.insert)(t,(0,e.createComponent)(s.CopyIcon,{class:"toolbar-copy",onClick:$})),(0,e.effect)(()=>(0,e.setAttribute)(t,"data-language",j())),t}}),n),(0,e.addEventListener)(n,"input",P,!0),"function"==typeof i?(0,e.use)(i,n):l=n,(0,e.setAttribute)(n,"spellcheck",!1),(0,e.insert)(n,b),(0,e.effect)(t=>{let i={[`language-${o.language}`]:!!o.language,"not-toolbar":!o.toolbar,[o.class]:!o.edit},l=o.edit;return t._v$=(0,e.classList)(r,i,t._v$),l!==t._v$2&&(0,e.setAttribute)(n,"contenteditable",t._v$2=l),t},{_v$:void 0,_v$2:void 0}),r})()]}(0,o.customElement)("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,onChange:void 0,title:void 0},(r,n)=>{let{baseStyle:i}=a.default,o=n.element,s=(0,t.mergeProps)({code:o.textContent,css:o.css,onChange(e){o.dispatchEvent(new CustomEvent("change",{detail:e}))}},r);return(0,t.createEffect)(()=>{(0,l.clearAttribute)(o,["css","code","title"]),o.replaceChildren()}),[(()=>{let t=g(),r=t.firstChild;return(0,e.effect)(()=>r.data=i()),t})(),(0,e.createComponent)(v,s)]});const C=v;(0,e.delegateEvents)(["input"]);
@@ -1 +1 @@
1
- {"version":3,"sources":["components/code/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createResource,\n createSignal,\n createUniqueId,\n type JSX,\n mergeProps,\n onCleanup,\n Show,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css } from '@moneko/css';\nimport type { TokenStream } from 'prismjs';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute, type JSXElement } from '../basic-config';\nimport theme from '../theme';\n\nimport { CopyIcon } from './copy-icon';\nimport { darkCss, lightCss, style } from './style';\n\nexport type LanguageBase =\n | 'bash'\n | 'shell'\n | 'sh'\n | 'clike'\n | 'css'\n | 'docker'\n | 'dockerfile'\n | 'git'\n | 'javascript'\n | 'js'\n | 'json'\n | 'webmanifest'\n | 'jsx'\n | 'tsx'\n | 'less'\n | 'html'\n | 'mathml'\n | 'svg'\n | 'xml'\n | 'ssml'\n | 'atom'\n | 'rss'\n | 'regex'\n | 'rust'\n | 'sql'\n | 'swift'\n | 'toml'\n | 'typescript'\n | 'ts'\n | 'yaml'\n | 'yml'\n | 'matlab';\n\ntype ExcludeLanguage<T extends LanguageBase, U extends LanguageBase> = T extends U ? never : T;\n\nexport type Language =\n | LanguageBase\n | {\n [T in LanguageBase]: `${T} ${ExcludeLanguage<LanguageBase, T>}`;\n }[LanguageBase];\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言(支持多种语言配置:如 `html css javascript`)\n * @default 'markup'\n */\n language?: Language;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 工具条上显示的文字 */\n title?: string;\n /** 编辑修改时的回调 */\n onChange?(code: string): void;\n children?: JSXElement;\n}\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { isDark } = theme;\n let codeEl: HTMLPreElement | undefined;\n let timer: NodeJS.Timeout | undefined;\n const decoded = /%[0-9A-Fa-f]{2}/;\n const id = createUniqueId();\n const [code, setCode] = createSignal<string>('');\n const [highlightCss, setHighlightCss] = createSignal<string>();\n\n async function fetchPrism() {\n if (!window.Prism) {\n return (await import('../prism')).default;\n }\n window.Prism.disableWorkerMessageHandler = true;\n window.Prism.manual = true;\n return window.Prism;\n }\n const [prismJS] = createResource('prism', fetchPrism);\n const title = createMemo(() => props.title || props.language?.split(' ').pop());\n\n createEffect(() => {\n let _next = props.code || '';\n\n if (decoded.test(_next)) {\n _next = decodeURIComponent(_next);\n }\n if (codeEl) {\n codeEl.normalize();\n if (_next !== codeEl.textContent) {\n setCode(_next);\n }\n }\n });\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n const change: JSX.InputEventHandlerUnion<HTMLElement, InputEvent> = function (e) {\n e.target.normalize();\n const next = e.target.textContent;\n\n syntax(props.language, next, true);\n if (isFunction(props.onChange)) {\n props.onChange(next);\n }\n };\n\n function updateRang(\n key: string,\n token: string,\n range: AbstractRange,\n selection: Record<string, string>,\n ) {\n const highlight = CSS.highlights.get(key);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(key, new Highlight().add(range));\n }\n if (selection[key] === void 0) {\n selection[key] =\n `::highlight(${key}){color:var(--${token});background-color:var(--${token}-bg);text-decoration:var(--${token}-text-decoration);text-shadow:var(--${token}-text-shadow);-webkit-text-stroke-width:var(--${token}-stroke-width);-webkit-text-stroke-color:var(--${token}-stroke-color);}`;\n }\n }\n function highlighter(\n el: HTMLPreElement,\n tokenize: TokenStream,\n selection: Record<string, string>,\n start = 0,\n ) {\n let pos = start;\n\n if (Array.isArray(tokenize)) {\n for (let i = 0, len = tokenize.length; i < len; i++) {\n const token = tokenize[i];\n\n if (typeof token !== 'object') {\n pos += token.length;\n continue;\n }\n pos = highlighter(el, token, selection, pos);\n }\n return pos;\n }\n if (typeof tokenize === 'object' && tokenize.type) {\n if (el.firstChild) {\n const token = (tokenize.alias ?? tokenize.type).toString();\n const key = id + token;\n const range = new Range();\n\n if (['deleted', 'inserted'].includes(token)) {\n // diff\n range.setStart(el.firstChild, pos + 2);\n } else {\n range.setStart(el.firstChild, pos);\n }\n if (Array.isArray(tokenize.content)) {\n pos = highlighter(el, tokenize.content, selection, pos);\n } else if (typeof tokenize.content === 'string') {\n pos += tokenize.content.length;\n }\n range.setEnd(el.firstChild, pos);\n updateRang(key, token, range, selection);\n }\n }\n\n return pos;\n }\n function syntax(\n language: Language = 'markup' as Language,\n value: string | null,\n clear?: boolean,\n prevCss = {},\n ) {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n const Prism = prismJS();\n\n if (!value || !Prism) return;\n timer = setTimeout(() => {\n clearTimeout(timer);\n if (CSS.highlights) {\n if (clear) {\n CSS.highlights.forEach((highlight, key) => {\n if (key.startsWith(id)) {\n highlight.clear();\n }\n });\n }\n const grammars = language.split(' ') as Language[],\n grammar = Prism.languages[grammars[0]];\n\n if (grammar && codeEl) {\n highlighter(codeEl, Prism.tokenize(value, grammar), prevCss);\n }\n if (grammars.length > 1 || grammars[0] === 'git') {\n syntax(grammars[1], value, false, prevCss);\n } else {\n setHighlightCss(Object.values(prevCss).join(''));\n }\n } else {\n throw Error('不支持 CSS Highlights');\n }\n timer = void 0;\n }, 0);\n }\n createEffect(() => {\n syntax(props.language, code(), true);\n });\n onCleanup(() => {\n if (CSS.highlights) {\n for (const key of CSS.highlights.keys()) {\n if (key.startsWith(id)) {\n CSS.highlights.delete(key);\n }\n }\n }\n });\n\n return (\n <>\n <style textContent={isDark() ? darkCss : lightCss} />\n <style textContent={highlightCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'not-toolbar': !props.toolbar,\n [props.class!]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={title()}>\n <CopyIcon class=\"toolbar-copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} contenteditable={props.edit} spellcheck={false} onInput={change}>\n {code()}\n </code>\n </pre>\n </>\n );\n}\n\nfunction registry() {\n customElement<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 onChange: void 0,\n title: void 0,\n },\n (_, opt) => {\n const { baseStyle } = theme;\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 clearAttribute(el, ['css', 'code', 'title']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={baseStyle()} />\n <Code {...props} />\n </>\n );\n },\n );\n}\n\nCode.registry = registry;\nCode.registry();\n\nexport default Code;\n"],"names":["Code","props","codeEl","timer","isDark","theme","decoded","id","createUniqueId","code","setCode","createSignal","highlightCss","setHighlightCss","fetchPrism","window","Prism","disableWorkerMessageHandler","manual","default","prismJS","createResource","title","createMemo","language","split","pop","copy","setClipboard","untrack","createEffect","_next","test","decodeURIComponent","normalize","textContent","change","e","target","next","syntax","isFunction","onChange","value","clear","prevCss","clearTimeout","setTimeout","CSS","highlights","forEach","highlight","key","startsWith","grammars","grammar","languages","highlighter","el","tokenize","selection","start","pos","Array","isArray","i","len","length","token","type","firstChild","alias","toString","range","Range","includes","setStart","content","setEnd","updateRang","get","add","set","Highlight","Object","values","join","Error","onCleanup","keys","delete","darkCss","lightCss","style","Show","css","toolbar","CopyIcon","class","edit","registry","customElement","children","_","opt","baseStyle","element","mergeProps","val","dispatchEvent","CustomEvent","detail","clearAttribute","replaceChildren"],"mappings":"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"}
1
+ {"version":3,"sources":["components/code/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createResource,\n createSignal,\n createUniqueId,\n type JSX,\n mergeProps,\n onCleanup,\n Show,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css } from '@moneko/css';\nimport type { TokenStream } from 'prismjs';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute, type JSXElement } from '../basic-config';\nimport theme from '../theme';\n\nimport { CopyIcon } from './copy-icon';\nimport { darkCss, lightCss, style } from './style';\n\nexport type LanguageBase =\n | 'bash'\n | 'shell'\n | 'sh'\n | 'clike'\n | 'css'\n | 'docker'\n | 'dockerfile'\n | 'git'\n | 'javascript'\n | 'js'\n | 'json'\n | 'webmanifest'\n | 'jsx'\n | 'tsx'\n | 'less'\n | 'html'\n | 'mathml'\n | 'svg'\n | 'xml'\n | 'ssml'\n | 'atom'\n | 'rss'\n | 'regex'\n | 'rust'\n | 'sql'\n | 'swift'\n | 'toml'\n | 'typescript'\n | 'ts'\n | 'yaml'\n | 'yml'\n | 'matlab';\n\ntype ExcludeLanguage<T extends LanguageBase, U extends LanguageBase> = T extends U ? never : T;\n\nexport type Language =\n | LanguageBase\n | {\n [T in LanguageBase]: `${T} ${ExcludeLanguage<LanguageBase, T>}`;\n }[LanguageBase];\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言(支持多种语言配置:如 `html css javascript`)\n * @default 'markup'\n */\n language?: Language;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 工具条上显示的文字 */\n title?: string;\n /** 编辑修改时的回调 */\n onChange?(code: string): void;\n children?: JSXElement;\n}\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { isDark } = theme;\n let codeEl: HTMLPreElement | undefined;\n let timer: NodeJS.Timeout | undefined;\n const decoded = /%[0-9A-Fa-f]{2}/;\n const id = createUniqueId();\n const [code, setCode] = createSignal<string>('');\n const [highlightCss, setHighlightCss] = createSignal<string>();\n\n async function fetchPrism() {\n if (!window.Prism) {\n return (await import('../prism')).default;\n }\n window.Prism.disableWorkerMessageHandler = true;\n window.Prism.manual = true;\n return window.Prism;\n }\n const [prismJS] = createResource('prism', fetchPrism);\n const title = createMemo(() => props.title || props.language?.split(' ').pop());\n\n createEffect(() => {\n let _next = props.code || '';\n\n if (decoded.test(_next)) {\n _next = decodeURIComponent(_next);\n }\n if (codeEl) {\n codeEl.normalize();\n if (_next !== codeEl.textContent) {\n setCode(_next);\n }\n }\n });\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n const change: JSX.InputEventHandlerUnion<HTMLElement, InputEvent> = function (e) {\n e.target.normalize();\n const next = e.target.textContent;\n\n syntax(props.language, next, true);\n if (isFunction(props.onChange)) {\n props.onChange(next);\n }\n };\n\n function updateRang(\n key: string,\n token: string,\n range: AbstractRange,\n selection: Record<string, string>,\n ) {\n const highlight = CSS.highlights.get(key);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(key, new Highlight().add(range));\n }\n if (selection[key] === void 0) {\n selection[key] =\n `::highlight(${key}){color:var(--${token});background-color:var(--${token}-bg);text-decoration:var(--${token}-text-decoration);text-shadow:var(--${token}-text-shadow);-webkit-text-stroke-width:var(--${token}-stroke-width);-webkit-text-stroke-color:var(--${token}-stroke-color);}`;\n }\n }\n function highlighter(\n el: HTMLPreElement,\n tokenize: TokenStream,\n selection: Record<string, string>,\n start = 0,\n ) {\n let pos = start;\n\n if (Array.isArray(tokenize)) {\n for (let i = 0, len = tokenize.length; i < len; i++) {\n const token = tokenize[i];\n\n if (typeof token !== 'object') {\n pos += token.length;\n continue;\n }\n pos = highlighter(el, token, selection, pos);\n }\n return pos;\n }\n if (typeof tokenize === 'object' && tokenize.type) {\n if (el.firstChild) {\n const token = (tokenize.alias ?? tokenize.type).toString();\n const key = id + token;\n const range = new Range();\n\n if (['deleted', 'inserted'].includes(token)) {\n // diff\n range.setStart(el.firstChild, pos + 2);\n } else {\n range.setStart(el.firstChild, pos);\n }\n if (Array.isArray(tokenize.content)) {\n pos = highlighter(el, tokenize.content, selection, pos);\n } else if (typeof tokenize.content === 'string') {\n pos += tokenize.content.length;\n }\n range.setEnd(el.firstChild, pos);\n updateRang(key, token, range, selection);\n }\n }\n\n return pos;\n }\n function syntax(\n language: Language = 'markup' as Language,\n value: string | null,\n clear?: boolean,\n prevCss = {},\n ) {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n const Prism = prismJS();\n\n if (!value || !Prism) return;\n timer = setTimeout(() => {\n clearTimeout(timer);\n if (CSS.highlights) {\n if (clear) {\n CSS.highlights.forEach((highlight, key) => {\n if (key.startsWith(id)) {\n highlight.clear();\n }\n });\n }\n const grammars = language.split(' ') as Language[],\n grammar = Prism.languages[grammars[0]];\n\n if (grammar && codeEl) {\n highlighter(codeEl, Prism.tokenize(value, grammar), prevCss);\n }\n if (grammars.length > 1 || grammars[0] === 'git') {\n syntax(grammars[1], value, false, prevCss);\n } else {\n setHighlightCss(Object.values(prevCss).join(''));\n }\n } else {\n throw Error('不支持 CSS Highlights');\n }\n timer = void 0;\n }, 0);\n }\n createEffect(() => {\n syntax(props.language, code(), true);\n });\n onCleanup(() => {\n if (CSS.highlights) {\n for (const key of CSS.highlights.keys()) {\n if (key.startsWith(id)) {\n CSS.highlights.delete(key);\n }\n }\n }\n });\n\n return (\n <>\n <style textContent={isDark() ? darkCss : lightCss} />\n <style textContent={highlightCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'not-toolbar': !props.toolbar,\n [props.class!]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={title()}>\n <CopyIcon class=\"toolbar-copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} contenteditable={props.edit} spellcheck={false} onInput={change}>\n {code()}\n </code>\n </pre>\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 onChange: void 0,\n title: void 0,\n },\n (_, opt) => {\n const { baseStyle } = theme;\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 clearAttribute(el, ['css', 'code', 'title']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={baseStyle()} />\n <Code {...props} />\n </>\n );\n },\n);\nexport default Code;\n"],"names":["Code","props","codeEl","timer","isDark","theme","decoded","id","createUniqueId","code","setCode","createSignal","highlightCss","setHighlightCss","fetchPrism","window","Prism","disableWorkerMessageHandler","manual","default","prismJS","createResource","title","createMemo","language","split","pop","copy","setClipboard","untrack","createEffect","_next","test","decodeURIComponent","normalize","textContent","change","e","target","next","syntax","isFunction","onChange","value","clear","prevCss","clearTimeout","setTimeout","CSS","highlights","forEach","highlight","key","startsWith","grammars","grammar","languages","highlighter","el","tokenize","selection","start","pos","Array","isArray","i","len","length","token","type","firstChild","alias","toString","range","Range","includes","setStart","content","setEnd","updateRang","get","add","set","Highlight","Object","values","join","Error","onCleanup","keys","delete","darkCss","lightCss","style","Show","css","toolbar","CopyIcon","class","edit","customElement","children","_","opt","baseStyle","element","mergeProps","val","dispatchEvent","CustomEvent","detail","clearAttribute","replaceChildren"],"mappings":"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"}
@@ -31,8 +31,5 @@ export interface Highlight {
31
31
  text: string;
32
32
  }
33
33
  declare function HighlightText(props: HighlightTextProps): import("solid-js").JSX.Element;
34
- declare namespace HighlightText {
35
- var registry: () => void;
36
- }
37
34
  export type HighlightTextElement = CustomElement<HighlightTextProps>;
38
35
  export default HighlightText;
@@ -1,8 +1,8 @@
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=require("@moneko/css"),i=require("solid-element"),n=require("../basic-config"),l=o(require("../theme"));function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(s=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=s(t);if(r&&r.has(e))return r.get(e);var i={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var o=n?Object.getOwnPropertyDescriptor(e,l):null;o&&(o.get||o.set)?Object.defineProperty(i,l,o):i[l]=e[l]}return i.default=e,r&&r.set(e,i),i}const h=(0,e.template)("<style> "),a=(0,e.template)("<style>"),c=(0,e.template)("<div>"),g=(0,r.css)`
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return d}});const e=require("solid-js/web"),t=require("solid-js"),r=require("@moneko/css"),i=require("solid-element"),n=require("../basic-config"),l=o(require("../theme"));function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(s=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=s(t);if(r&&r.has(e))return r.get(e);var i={__proto__:null},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var o=n?Object.getOwnPropertyDescriptor(e,l):null;o&&(o.get||o.set)?Object.defineProperty(i,l,o):i[l]=e[l]}return i.default=e,r&&r.set(e,i),i}const h=(0,e.template)("<style> "),a=(0,e.template)("<style>"),c=(0,e.template)("<div>"),f=(0,r.css)`
2
2
  .text {
3
3
  word-break: break-word;
4
4
  word-wrap: break-word;
5
5
  white-space: break-spaces;
6
6
  cursor: auto;
7
7
  }
8
- `;function f(e,t,r,i,n){let l=new RegExp(r,i).exec(n);if(l){let r;let i=new Range;r=0+l.index,e.firstChild&&(i.setStart(e.firstChild,r),r+=l[0].length,i.setEnd(e.firstChild,r));let n=CSS.highlights.get(t);n?n.add(i):CSS.highlights.set(t,new Highlight().add(i))}}function u(i){let n;let{baseStyle:s}=l.default,o=(0,t.createUniqueId)(),u=(0,t.createMemo)(()=>`${i.text}${i.extra??""}`);return(0,t.createEffect)(()=>{if(n&&i.highlight){if(Array.isArray(i.highlight))for(let e=0,t=i.highlight.length;e<t;e++){let t=i.highlight[e],r="object"!=typeof t,l=String(r?t:t.highlight);l.length&&f(n,o,l,r?i.flag:t.flag,u())}else String(i.highlight).length&&f(n,o,String(i.highlight),i.flag,u())}}),(0,t.createEffect)(()=>{if(n&&"string"==typeof i.extra){let e=new Range,t=i.text?.length||0;n.firstChild&&(e.setStart(n.firstChild,t),t+=i.extra.length,e.setEnd(n.firstChild,t));let r=CSS.highlights.get(o);r?r.add(e):CSS.highlights.set(o,new Highlight().add(e))}}),[(()=>{let t=h(),r=t.firstChild;return(0,e.effect)(()=>r.data=s()),t})(),(()=>{let e=a();return e.textContent=g,e})(),(()=>{let e=a();return e.textContent=`::highlight(${o}) {color: var(--primary-color, #5794ff);}`,e})(),(0,e.createComponent)(t.Show,{get when(){return i.css},get children(){let t=h(),n=t.firstChild;return(0,e.effect)(()=>n.data=(0,r.css)(i.css)),t}}),(()=>{let t=c(),l=n;return"function"==typeof l?(0,e.use)(l,t):n=t,(0,e.insert)(t,u),(0,e.effect)(()=>(0,e.className)(t,(0,r.cx)("text",i.class))),t})()]}function d(){(0,i.customElement)("n-highlight-text",{class:void 0,css:void 0,text:void 0,highlight:void 0,flag:void 0,extra:void 0,children:void 0},(r,i)=>{let s=i.element,o=(0,t.mergeProps)({text:s.textContent,css:s.css},r);return(0,t.createEffect)(()=>{(0,n.clearAttribute)(s,["css","text","highlight","extra"]),s.replaceChildren()}),[(()=>{let e=a();return e.textContent=l.inline,e})(),(0,e.createComponent)(u,o)]})}u.registry=d,u.registry();const p=u;
8
+ `;function g(e,t,r,i,n){let l=new RegExp(r,i).exec(n);if(l){let r;let i=new Range;r=0+l.index,e.firstChild&&(i.setStart(e.firstChild,r),r+=l[0].length,i.setEnd(e.firstChild,r));let n=CSS.highlights.get(t);n?n.add(i):CSS.highlights.set(t,new Highlight().add(i))}}function u(i){let n;let{baseStyle:s}=l.default,o=(0,t.createUniqueId)(),u=(0,t.createMemo)(()=>`${i.text}${i.extra??""}`);return(0,t.createEffect)(()=>{if(n&&i.highlight){if(Array.isArray(i.highlight))for(let e=0,t=i.highlight.length;e<t;e++){let t=i.highlight[e],r="object"!=typeof t,l=r?t:t.highlight;l.length&&g(n,o,l,r?i.flag:t.flag,u())}else i.highlight.length&&g(n,o,i.highlight,i.flag,u())}}),(0,t.createEffect)(()=>{if(n&&"string"==typeof i.extra){let e=new Range,t=i.text?.length||0;n.firstChild&&(e.setStart(n.firstChild,t),t+=i.extra.length,e.setEnd(n.firstChild,t));let r=CSS.highlights.get(o);r?r.add(e):CSS.highlights.set(o,new Highlight().add(e))}}),[(()=>{let t=h(),r=t.firstChild;return(0,e.effect)(()=>r.data=s()),t})(),(()=>{let e=a();return e.textContent=f,e})(),(()=>{let e=a();return e.textContent=`::highlight(${o}) {color: var(--primary-color, #5794ff);}`,e})(),(0,e.createComponent)(t.Show,{get when(){return i.css},get children(){let t=h(),n=t.firstChild;return(0,e.effect)(()=>n.data=(0,r.css)(i.css)),t}}),(()=>{let t=c(),l=n;return"function"==typeof l?(0,e.use)(l,t):n=t,(0,e.insert)(t,u),(0,e.effect)(()=>(0,e.className)(t,(0,r.cx)("text",i.class))),t})()]}(0,i.customElement)("n-highlight-text",{class:void 0,css:void 0,text:void 0,highlight:void 0,flag:void 0,extra:void 0,children:void 0},(r,i)=>{let s=i.element,o=(0,t.mergeProps)({text:s.textContent,css:s.css},r);return(0,t.createEffect)(()=>{(0,n.clearAttribute)(s,["css","text","highlight","extra"]),s.replaceChildren()}),[(()=>{let e=a();return e.textContent=l.inline,e})(),(0,e.createComponent)(u,o)]});const d=u;
@@ -1 +1 @@
1
- {"version":3,"sources":["components/highlight-text/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createUniqueId, mergeProps, Show } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute } from '../basic-config';\nimport theme, { inline } from '../theme';\n\nconst style = css`\n .text {\n word-break: break-word;\n word-wrap: break-word;\n white-space: break-spaces;\n cursor: auto;\n }\n`;\n\nfunction highlight(\n box: HTMLDivElement,\n id: string,\n regExp: string,\n flag: HighlightRule['flag'],\n text: string,\n) {\n const regex = new RegExp(regExp, flag);\n const match = regex.exec(text);\n\n if (match) {\n const range = new Range();\n let pos = 0;\n\n pos += match.index;\n if (box.firstChild) {\n range.setStart(box.firstChild, pos);\n pos += match[0].length;\n range.setEnd(box.firstChild, pos);\n }\n const highlight = CSS.highlights.get(id);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(id, new Highlight().add(range));\n }\n }\n}\n\nexport type HighlightTextJson =\n | {\n highlight?: boolean;\n text: string;\n }[]\n | null;\nexport interface HighlightTextProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 内容 */\n text?: string;\n /** 需要高亮的内容 */\n highlight?: string | (HighlightRule | string)[];\n /** RegExp flag */\n flag?: HighlightRule['flag'];\n /** 额外需要高亮的内容 */\n extra?: string;\n children?: string;\n}\n\ninterface HighlightRule {\n /** 需要高亮的内容 */\n highlight: string;\n /** RegExp flag */\n flag?: 'g' | 'i' | 'm' | 'u' | 'y';\n}\n\nexport interface Highlight {\n /** 命中高亮 */\n hit?: boolean;\n /** 内容 */\n text: string;\n}\n\nfunction HighlightText(props: HighlightTextProps) {\n const { baseStyle } = theme;\n let box: HTMLDivElement | undefined;\n const id = createUniqueId();\n const text = createMemo(() => `${props.text}${props.extra ?? ''}`);\n\n createEffect(() => {\n if (box && props.highlight) {\n if (Array.isArray(props.highlight)) {\n for (let i = 0, len = props.highlight.length; i < len; i++) {\n const item = props.highlight[i];\n const isOne = typeof item !== 'object';\n const hitStr = String(isOne ? item : item.highlight);\n\n if (hitStr.length) {\n highlight(box, id, hitStr, isOne ? props.flag : item.flag, text());\n }\n }\n } else if (String(props.highlight).length) {\n highlight(box, id, String(props.highlight), props.flag, text());\n }\n }\n });\n createEffect(() => {\n if (box && typeof props.extra === 'string') {\n const range = new Range();\n let pos = props.text?.length || 0;\n\n if (box.firstChild) {\n range.setStart(box.firstChild, pos);\n pos += props.extra.length;\n range.setEnd(box.firstChild, pos);\n }\n const highlight = CSS.highlights.get(id);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(id, new Highlight().add(range));\n }\n }\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <style textContent={`::highlight(${id}) {color: var(--primary-color, #5794ff);}`} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <div ref={box} class={cx('text', props.class)}>\n {text()}\n </div>\n </>\n );\n}\n\nexport type HighlightTextElement = CustomElement<HighlightTextProps>;\n\nfunction registry() {\n customElement<HighlightTextProps>(\n 'n-highlight-text',\n {\n class: void 0,\n css: void 0,\n text: void 0,\n highlight: void 0,\n flag: void 0,\n extra: void 0,\n children: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: el.textContent,\n css: el.css,\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['css', 'text', 'highlight', 'extra']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={inline} />\n <HighlightText {...props} />\n </>\n );\n },\n );\n}\n\nHighlightText.registry = registry;\nHighlightText.registry();\nexport default HighlightText;\n"],"names":["style","css","highlight","box","id","regExp","flag","text","match","regex","RegExp","exec","pos","range","Range","index","firstChild","setStart","length","setEnd","CSS","highlights","get","add","set","Highlight","HighlightText","props","baseStyle","theme","createUniqueId","createMemo","extra","createEffect","Array","isArray","i","len","item","isOne","hitStr","String","Show","cx","class","registry","customElement","children","_","opt","el","element","mergeProps","textContent","clearAttribute","replaceChildren","inline"],"mappings":"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"}
1
+ {"version":3,"sources":["components/highlight-text/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createUniqueId, mergeProps, Show } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute } from '../basic-config';\nimport theme, { inline } from '../theme';\n\nconst style = css`\n .text {\n word-break: break-word;\n word-wrap: break-word;\n white-space: break-spaces;\n cursor: auto;\n }\n`;\n\nfunction highlight(\n box: HTMLDivElement,\n id: string,\n regExp: string,\n flag: HighlightRule['flag'],\n text: string,\n) {\n const regex = new RegExp(regExp, flag);\n const match = regex.exec(text);\n\n if (match) {\n const range = new Range();\n let pos = 0;\n\n pos += match.index;\n if (box.firstChild) {\n range.setStart(box.firstChild, pos);\n pos += match[0].length;\n range.setEnd(box.firstChild, pos);\n }\n const highlight = CSS.highlights.get(id);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(id, new Highlight().add(range));\n }\n }\n}\n\nexport type HighlightTextJson =\n | {\n highlight?: boolean;\n text: string;\n }[]\n | null;\nexport interface HighlightTextProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 内容 */\n text?: string;\n /** 需要高亮的内容 */\n highlight?: string | (HighlightRule | string)[];\n /** RegExp flag */\n flag?: HighlightRule['flag'];\n /** 额外需要高亮的内容 */\n extra?: string;\n children?: string;\n}\n\ninterface HighlightRule {\n /** 需要高亮的内容 */\n highlight: string;\n /** RegExp flag */\n flag?: 'g' | 'i' | 'm' | 'u' | 'y';\n}\n\nexport interface Highlight {\n /** 命中高亮 */\n hit?: boolean;\n /** 内容 */\n text: string;\n}\n\nfunction HighlightText(props: HighlightTextProps) {\n const { baseStyle } = theme;\n let box: HTMLDivElement | undefined;\n const id = createUniqueId();\n const text = createMemo(() => `${props.text}${props.extra ?? ''}`);\n\n createEffect(() => {\n if (box && props.highlight) {\n if (Array.isArray(props.highlight)) {\n for (let i = 0, len = props.highlight.length; i < len; i++) {\n const item = props.highlight[i];\n const isOne = typeof item !== 'object';\n const hitStr = isOne ? item : item.highlight;\n\n if (hitStr.length) {\n highlight(box, id, hitStr, isOne ? props.flag : item.flag, text());\n }\n }\n } else if (props.highlight.length) {\n highlight(box, id, props.highlight, props.flag, text());\n }\n }\n });\n createEffect(() => {\n if (box && typeof props.extra === 'string') {\n const range = new Range();\n let pos = props.text?.length || 0;\n\n if (box.firstChild) {\n range.setStart(box.firstChild, pos);\n pos += props.extra.length;\n range.setEnd(box.firstChild, pos);\n }\n const highlight = CSS.highlights.get(id);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(id, new Highlight().add(range));\n }\n }\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <style textContent={`::highlight(${id}) {color: var(--primary-color, #5794ff);}`} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <div ref={box} class={cx('text', props.class)}>\n {text()}\n </div>\n </>\n );\n}\n\nexport type HighlightTextElement = CustomElement<HighlightTextProps>;\ncustomElement<HighlightTextProps>(\n 'n-highlight-text',\n {\n class: void 0,\n css: void 0,\n text: void 0,\n highlight: void 0,\n flag: void 0,\n extra: void 0,\n children: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: el.textContent,\n css: el.css,\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['css', 'text', 'highlight', 'extra']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={inline} />\n <HighlightText {...props} />\n </>\n );\n },\n);\nexport default HighlightText;\n"],"names":["style","css","highlight","box","id","regExp","flag","text","match","regex","RegExp","exec","pos","range","Range","index","firstChild","setStart","length","setEnd","CSS","highlights","get","add","set","Highlight","HighlightText","props","baseStyle","theme","createUniqueId","createMemo","extra","createEffect","Array","isArray","i","len","item","isOne","hitStr","Show","cx","class","customElement","children","_","opt","el","element","mergeProps","textContent","clearAttribute","replaceChildren","inline"],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -147,14 +147,14 @@ interface CustomElementTags {
147
147
  type IntrinsicNekoElement = Transform<CustomElementTags>;
148
148
  declare module 'solid-js' {
149
149
  namespace JSX {
150
- interface IntrinsicElements extends IntrinsicNekoElement {
150
+ interface IntrinsicElements extends HTMLElementTags, IntrinsicNekoElement {
151
151
  }
152
152
  }
153
153
  interface HTMLElementTagNameMap extends IntrinsicNekoElement {
154
154
  }
155
155
  }
156
- declare module 'react' {
157
- namespace JSX {
156
+ declare global {
157
+ export namespace JSX {
158
158
  interface IntrinsicElements extends IntrinsicNekoElement {
159
159
  }
160
160
  }
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["components/index.ts"],"sourcesContent":["'use client';\n\nexport { default as Avatar, type AvatarElement, type AvatarProps } from './avatar';\nexport {\n default as AvatarGroup,\n type AvatarGroupElement,\n type AvatarGroupProps,\n} from './avatar/group';\nexport { default as BackTop, type BackTopElement, type BackTopProps } from './back-top';\nexport { type BaseOption, type BasicConfig, FieldName, Size, Status } from './basic-config';\nexport { default as Button, type ButtonElement, type ButtonProps } from './button';\nexport {\n default as CaptureScreen,\n type CaptureScreenElement,\n type CaptureScreenProps,\n} from './capture-screen';\nexport { default as Carousel, type CarouselElement, type CarouselProps } from './carousel';\nexport {\n default as Checkbox,\n type CheckboxBoolElement,\n type CheckboxBoolProps,\n type CheckboxGroupElement,\n type CheckboxGroupProps,\n} from './checkbox';\nexport { default as Code, type CodeElement, type CodeProps, type Language } from './code';\nexport { default as Collapse, type CollapseElement, type CollapseProps } from './collapse';\nexport {\n default as ColorPalette,\n type ColorPaletteElement,\n type ColorPaletteProps,\n} from './color-palette';\nexport {\n default as ColorPicker,\n type ColorPickerElement,\n type ColorPickerProps,\n} from './color-picker';\nexport { default as Cron, type CronElement, type CronProps } from './cron';\nexport { default as DatePicker, type DatePickerElement, type DatePickerProps } from './date-picker';\nexport { default as dayjs } from './date-picker/dayjs';\nexport {\n default as Dropdown,\n type DropdownElement,\n type DropdownMultipleElement,\n type DropdownMultipleProps,\n type DropdownProps,\n} from './dropdown';\nexport { default as Empty, type EmptyElement, type EmptyProps } from './empty';\nexport { default as fromSchema } from './from-schema';\nexport { default as getOptions } from './get-options';\nexport {\n default as HighlightText,\n type HighlightTextElement,\n type HighlightTextProps,\n} from './highlight-text';\nexport { default as icon, type IconAttribute } from './icon';\nexport { default as Img, type ImgElement, type ImgProps } from './img';\nexport { default as Input, type InputElement, type InputProps } from './input';\nexport {\n default as InputNumber,\n type InputNumberElement,\n type InputNumberProps,\n} from './input-number';\nexport { default as Md, type MdElement, type MdProps } from './md';\nexport { default as mdStyle } from './md-style';\nexport {\n default as Menu,\n type MenuElement,\n type MenuMultipleElement,\n type MenuMultipleProps,\n type MenuOption,\n type MenuProps,\n} from './menu';\nexport {\n default as Modal,\n type ModalElement,\n type ModalProps,\n OpenState,\n type OpenStateKey,\n} from './modal';\nexport {\n default as notification,\n type NotificationProps,\n type NotificationType,\n} from './notification';\nexport { default as Pagination, type PaginationElement, type PaginationProps } from './pagination';\nexport { default as Popover, type PopoverElement, type PopoverProps } from './popover';\nexport { default as Prism } from './prism';\nexport { default as Provider, type ProviderElement, type ProviderProps } from './provider';\nexport { type IntRange, default as QrCode, type QrCodeElement, type QrCodeProps } from './qrcode';\nexport { default as Radio, type RadioElement, type RadioOption, type RadioProps } from './radio';\nexport { default as Segmented, type SegmentedElement, type SegmentedProps } from './segmented';\nexport {\n default as Select,\n type SelectElement,\n type SelectMultipleElement,\n type SelectMultipleProps,\n type SelectProps,\n} from './select';\nexport { default as Skeleton, type SkeletonElement, type SkeletonProps } from './skeleton';\nexport { default as Spin, type SpinElement, type SpinProps } from './spin';\nexport { default as Switch, type SwitchElement, type SwitchProps } from './switch';\nexport { default as Table, type TableElement, type TableProps } from './table';\nexport { type TabOption, default as Tabs, type TabsElement, type TabsProps } from './tabs';\nexport { default as Tag, type TagElement, type TagProps } from './tag';\nexport {\n type ColorScheme,\n generateColor,\n default as theme,\n type ThemeOption,\n toneColor,\n} from './theme';\nexport {\n default as Tree,\n type TreeData,\n type TreeElement,\n type TreeMultipleElement,\n type TreeMultipleProps,\n type TreeMultipleSchemaElement,\n type TreeMultipleSchemaProps,\n type TreeMultipleStringElement,\n type TreeMultipleStringProps,\n type TreeProps,\n type TreeSchemaElement,\n type TreeSchemaProps,\n type TreeStringElement,\n type TreeStringProps,\n} from './tree';\nexport { default as Typography, type TypographyElement, type TypographyProps } from './typography';\nexport type { CustomElement } from 'custom-element-type';\nexport { customElement, getCurrentElement, hot, noShadowDOM, withSolid } from 'solid-element';\nimport type { ICustomElement, Transform } from 'custom-element-type';\n\nimport type {\n AvatarElement,\n AvatarGroupElement,\n BackTopElement,\n ButtonElement,\n CaptureScreenElement,\n CarouselElement,\n CheckboxBoolElement,\n CheckboxGroupElement,\n CodeElement,\n CollapseElement,\n ColorPaletteElement,\n ColorPickerElement,\n CronElement,\n DatePickerElement,\n DropdownElement,\n DropdownMultipleElement,\n EmptyElement,\n HighlightTextElement,\n ImgElement,\n InputElement,\n InputNumberElement,\n MdElement,\n MenuElement,\n MenuMultipleElement,\n ModalElement,\n PaginationElement,\n PopoverElement,\n ProviderElement,\n QrCodeElement,\n RadioElement,\n SegmentedElement,\n SelectElement,\n SelectMultipleElement,\n SkeletonElement,\n SpinElement,\n SwitchElement,\n TableElement,\n TabsElement,\n TagElement,\n TreeElement,\n TreeMultipleElement,\n TreeMultipleSchemaElement,\n TreeMultipleStringElement,\n TreeSchemaElement,\n TreeStringElement,\n TypographyElement,\n} from '.';\n\n/** 组件列表\n * @author monako97\n * @ignore optional\n */\ninterface CustomElementTags {\n /** 头像 */\n 'n-avatar': AvatarElement;\n /** 头像组 */\n 'n-avatar-group': AvatarGroupElement;\n /** 返回顶部 */\n 'n-back-top': BackTopElement;\n /** 按钮 */\n 'n-button': ButtonElement;\n /** 捕获屏幕 */\n 'n-capture-screen': CaptureScreenElement;\n /** 走马灯、轮播 */\n 'n-carousel': CarouselElement;\n /** 复选框 */\n 'n-checkbox': CheckboxBoolElement | CheckboxGroupElement;\n /** 代码框 */\n 'n-code': CodeElement;\n /** 取色器 */\n 'n-color-palette': ColorPaletteElement;\n /** 取色器(弹出类型) */\n 'n-color-picker': ColorPickerElement;\n /** 下拉面板 */\n 'n-dropdown': DropdownElement | DropdownMultipleElement;\n /** 空面板 */\n 'n-empty': EmptyElement;\n /** 匹配高亮文字 */\n 'n-highlight-text': HighlightTextElement;\n /** 图片查看器 */\n 'n-img': ImgElement;\n /** 输入框 */\n 'n-input': InputElement;\n /** 数字输入框 */\n 'n-input-number': InputNumberElement;\n /** Markdown渲染 */\n 'n-md': MdElement;\n /** 弹出气泡面板 */\n 'n-popover': PopoverElement;\n /** 单选项 */\n 'n-radio': RadioElement;\n /** 分段控制器 */\n 'n-segmented': SegmentedElement;\n /** 下拉选择框 */\n 'n-select': SelectElement | SelectMultipleElement;\n /** 骨架屏 */\n 'n-skeleton': SkeletonElement;\n /** 加载中 */\n 'n-spin': SpinElement;\n /** 开关 */\n 'n-switch': SwitchElement;\n /** 树形渲染 */\n 'n-tree':\n | TreeElement\n | TreeStringElement\n | TreeSchemaElement\n | TreeMultipleElement\n | TreeMultipleStringElement\n | TreeMultipleSchemaElement;\n /** 文字排版 */\n 'n-typography': TypographyElement;\n /** 标签页 */\n 'n-tabs': TabsElement;\n /** 标签 */\n 'n-tag': TagElement;\n /** 导航菜单 */\n 'n-menu': MenuElement | MenuMultipleElement;\n /** Cron表达式编辑器 */\n 'n-cron': CronElement;\n /** 日期选择器\n * @since 2.1.0\n */\n 'n-data-picker': DatePickerElement;\n /** 数据表格\n * @since 2.2.0\n */\n 'n-table': TableElement;\n /** 分页器\n * @since 2.2.0\n */\n 'n-pagination': PaginationElement;\n /** 响应内部变化\n * @since 2.3.0\n */\n 'n-provider': ProviderElement;\n /** 模态框\n * @since 2.6.0\n */\n 'n-modal': ModalElement;\n /**\n * 二维码\n * @since 2.9.0\n */\n 'n-qrcode': QrCodeElement;\n /**\n * 折叠面板\n * @since 2.10.0\n */\n 'n-collapse': CollapseElement;\n}\ntype IntrinsicNekoElement = Transform<CustomElementTags>;\n\ndeclare module 'solid-js' {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface IntrinsicElements extends IntrinsicNekoElement {}\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\ndeclare module 'react' {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface IntrinsicElements extends IntrinsicNekoElement {}\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\n\nexport interface ComponentOptions<T> {\n element: T & ICustomElement;\n}\n"],"names":["Avatar","AvatarGroup","BackTop","Button","CaptureScreen","Carousel","Checkbox","Code","Collapse","ColorPalette","ColorPicker","Cron","DatePicker","Dropdown","Empty","FieldName","HighlightText","Img","Input","InputNumber","Md","Menu","Modal","OpenState","Pagination","Popover","Prism","Provider","QrCode","Radio","Segmented","Select","Size","Skeleton","Spin","Status","Switch","Table","Tabs","Tag","Tree","Typography","customElement","dayjs","fromSchema","generateColor","getCurrentElement","getOptions","hot","icon","mdStyle","noShadowDOM","notification","theme","toneColor","withSolid"],"mappings":"kKAEoBA,MAAM,mBAANA,SAAM,EAEbC,WAAW,mBAAXA,SAAW,EAIJC,OAAO,mBAAPA,SAAO,EAEPC,MAAM,mBAANA,SAAM,EAEbC,aAAa,mBAAbA,SAAa,EAINC,QAAQ,mBAARA,SAAQ,EAEfC,QAAQ,mBAARA,SAAQ,EAMDC,IAAI,mBAAJA,SAAI,EACJC,QAAQ,mBAARA,SAAQ,EAEfC,YAAY,mBAAZA,SAAY,EAKZC,WAAW,mBAAXA,SAAW,EAIJC,IAAI,mBAAJA,SAAI,EACJC,UAAU,mBAAVA,SAAU,EAGjBC,QAAQ,mBAARA,SAAQ,EAMDC,KAAK,mBAALA,SAAK,EArCmBC,SAAS,mBAATA,WAAS,EAyCxCC,aAAa,mBAAbA,SAAa,EAKNC,GAAG,mBAAHA,SAAG,EACHC,KAAK,mBAALA,SAAK,EAEZC,WAAW,mBAAXA,SAAW,EAIJC,EAAE,mBAAFA,SAAE,EAGTC,IAAI,mBAAJA,SAAI,EAQJC,KAAK,mBAALA,SAAK,EAGhBC,SAAS,mBAATA,WAAS,EAQSC,UAAU,mBAAVA,SAAU,EACVC,OAAO,mBAAPA,SAAO,EACPC,KAAK,mBAALA,SAAK,EACLC,QAAQ,mBAARA,SAAQ,EACOC,MAAM,mBAANA,SAAM,EACrBC,KAAK,mBAALA,SAAK,EACLC,SAAS,mBAATA,SAAS,EAEhBC,MAAM,mBAANA,SAAM,EAnFoCC,IAAI,mBAAJA,MAAI,EAyFvCC,QAAQ,mBAARA,SAAQ,EACRC,IAAI,mBAAJA,SAAI,EA1FqCC,MAAM,mBAANA,QAAM,EA2F/CC,MAAM,mBAANA,SAAM,EACNC,KAAK,mBAALA,SAAK,EACWC,IAAI,mBAAJA,SAAI,EACpBC,GAAG,mBAAHA,SAAG,EASVC,IAAI,mBAAJA,SAAI,EAeGC,UAAU,mBAAVA,SAAU,EAErBC,aAAa,mBAAbA,eAAa,EA3FFC,KAAK,mBAALA,SAAK,EASLC,UAAU,mBAAVA,SAAU,EA2D5BC,aAAa,mBAAbA,eAAa,EAuBSC,iBAAiB,mBAAjBA,mBAAiB,EAjFrBC,UAAU,mBAAVA,SAAU,EAiFaC,GAAG,mBAAHA,KAAG,EA3E1BC,IAAI,mBAAJA,SAAI,EASJC,OAAO,mBAAPA,SAAO,EAkEqBC,WAAW,mBAAXA,aAAW,EAjD9CC,YAAY,mBAAZA,SAAY,EA2BZC,KAAK,mBAALA,SAAK,EAEhBC,SAAS,mBAATA,WAAS,EAoBkDC,SAAS,mBAATA,WAAS,sBA/HE,yBAKjE,+BACoE,yBACA,8BACH,yBAKjE,iCACuE,2BAOvE,2BAC0E,uBACH,2BAKvE,gCAKA,+BAC2D,uBACkB,8BACnD,oCAO1B,2BAC8D,wBAC/B,8BACA,8BAK/B,iCAC6C,uBACW,sBACM,wBAK9D,+BACqD,qBACzB,2BAQ5B,uBAOA,wBAKA,+BAC6E,6BACT,0BAC1C,wBAC6C,2BACS,yBACA,wBACN,4BAO1E,yBACuE,2BACZ,uBACM,yBACH,wBACa,uBACnB,sBAOxD,wBAgBA,uBAC6E,2BAEN"}
1
+ {"version":3,"sources":["components/index.ts"],"sourcesContent":["'use client';\n\nexport { default as Avatar, type AvatarElement, type AvatarProps } from './avatar';\nexport {\n default as AvatarGroup,\n type AvatarGroupElement,\n type AvatarGroupProps,\n} from './avatar/group';\nexport { default as BackTop, type BackTopElement, type BackTopProps } from './back-top';\nexport { type BaseOption, type BasicConfig, FieldName, Size, Status } from './basic-config';\nexport { default as Button, type ButtonElement, type ButtonProps } from './button';\nexport {\n default as CaptureScreen,\n type CaptureScreenElement,\n type CaptureScreenProps,\n} from './capture-screen';\nexport { default as Carousel, type CarouselElement, type CarouselProps } from './carousel';\nexport {\n default as Checkbox,\n type CheckboxBoolElement,\n type CheckboxBoolProps,\n type CheckboxGroupElement,\n type CheckboxGroupProps,\n} from './checkbox';\nexport { default as Code, type CodeElement, type CodeProps, type Language } from './code';\nexport { default as Collapse, type CollapseElement, type CollapseProps } from './collapse';\nexport {\n default as ColorPalette,\n type ColorPaletteElement,\n type ColorPaletteProps,\n} from './color-palette';\nexport {\n default as ColorPicker,\n type ColorPickerElement,\n type ColorPickerProps,\n} from './color-picker';\nexport { default as Cron, type CronElement, type CronProps } from './cron';\nexport { default as DatePicker, type DatePickerElement, type DatePickerProps } from './date-picker';\nexport { default as dayjs } from './date-picker/dayjs';\nexport {\n default as Dropdown,\n type DropdownElement,\n type DropdownMultipleElement,\n type DropdownMultipleProps,\n type DropdownProps,\n} from './dropdown';\nexport { default as Empty, type EmptyElement, type EmptyProps } from './empty';\nexport { default as fromSchema } from './from-schema';\nexport { default as getOptions } from './get-options';\nexport {\n default as HighlightText,\n type HighlightTextElement,\n type HighlightTextProps,\n} from './highlight-text';\nexport { default as icon, type IconAttribute } from './icon';\nexport { default as Img, type ImgElement, type ImgProps } from './img';\nexport { default as Input, type InputElement, type InputProps } from './input';\nexport {\n default as InputNumber,\n type InputNumberElement,\n type InputNumberProps,\n} from './input-number';\nexport { default as Md, type MdElement, type MdProps } from './md';\nexport { default as mdStyle } from './md-style';\nexport {\n default as Menu,\n type MenuElement,\n type MenuMultipleElement,\n type MenuMultipleProps,\n type MenuOption,\n type MenuProps,\n} from './menu';\nexport {\n default as Modal,\n type ModalElement,\n type ModalProps,\n OpenState,\n type OpenStateKey,\n} from './modal';\nexport {\n default as notification,\n type NotificationProps,\n type NotificationType,\n} from './notification';\nexport { default as Pagination, type PaginationElement, type PaginationProps } from './pagination';\nexport { default as Popover, type PopoverElement, type PopoverProps } from './popover';\nexport { default as Prism } from './prism';\nexport { default as Provider, type ProviderElement, type ProviderProps } from './provider';\nexport { type IntRange, default as QrCode, type QrCodeElement, type QrCodeProps } from './qrcode';\nexport { default as Radio, type RadioElement, type RadioOption, type RadioProps } from './radio';\nexport { default as Segmented, type SegmentedElement, type SegmentedProps } from './segmented';\nexport {\n default as Select,\n type SelectElement,\n type SelectMultipleElement,\n type SelectMultipleProps,\n type SelectProps,\n} from './select';\nexport { default as Skeleton, type SkeletonElement, type SkeletonProps } from './skeleton';\nexport { default as Spin, type SpinElement, type SpinProps } from './spin';\nexport { default as Switch, type SwitchElement, type SwitchProps } from './switch';\nexport { default as Table, type TableElement, type TableProps } from './table';\nexport { type TabOption, default as Tabs, type TabsElement, type TabsProps } from './tabs';\nexport { default as Tag, type TagElement, type TagProps } from './tag';\nexport {\n type ColorScheme,\n generateColor,\n default as theme,\n type ThemeOption,\n toneColor,\n} from './theme';\nexport {\n default as Tree,\n type TreeData,\n type TreeElement,\n type TreeMultipleElement,\n type TreeMultipleProps,\n type TreeMultipleSchemaElement,\n type TreeMultipleSchemaProps,\n type TreeMultipleStringElement,\n type TreeMultipleStringProps,\n type TreeProps,\n type TreeSchemaElement,\n type TreeSchemaProps,\n type TreeStringElement,\n type TreeStringProps,\n} from './tree';\nexport { default as Typography, type TypographyElement, type TypographyProps } from './typography';\nexport type { CustomElement } from 'custom-element-type';\nexport { customElement, getCurrentElement, hot, noShadowDOM, withSolid } from 'solid-element';\nimport type { ICustomElement, Transform } from 'custom-element-type';\n\nimport type {\n AvatarElement,\n AvatarGroupElement,\n BackTopElement,\n ButtonElement,\n CaptureScreenElement,\n CarouselElement,\n CheckboxBoolElement,\n CheckboxGroupElement,\n CodeElement,\n CollapseElement,\n ColorPaletteElement,\n ColorPickerElement,\n CronElement,\n DatePickerElement,\n DropdownElement,\n DropdownMultipleElement,\n EmptyElement,\n HighlightTextElement,\n ImgElement,\n InputElement,\n InputNumberElement,\n MdElement,\n MenuElement,\n MenuMultipleElement,\n ModalElement,\n PaginationElement,\n PopoverElement,\n ProviderElement,\n QrCodeElement,\n RadioElement,\n SegmentedElement,\n SelectElement,\n SelectMultipleElement,\n SkeletonElement,\n SpinElement,\n SwitchElement,\n TableElement,\n TabsElement,\n TagElement,\n TreeElement,\n TreeMultipleElement,\n TreeMultipleSchemaElement,\n TreeMultipleStringElement,\n TreeSchemaElement,\n TreeStringElement,\n TypographyElement,\n} from '.';\n\n/** 组件列表\n * @author monako97\n * @ignore optional\n */\ninterface CustomElementTags {\n /** 头像 */\n 'n-avatar': AvatarElement;\n /** 头像组 */\n 'n-avatar-group': AvatarGroupElement;\n /** 返回顶部 */\n 'n-back-top': BackTopElement;\n /** 按钮 */\n 'n-button': ButtonElement;\n /** 捕获屏幕 */\n 'n-capture-screen': CaptureScreenElement;\n /** 走马灯、轮播 */\n 'n-carousel': CarouselElement;\n /** 复选框 */\n 'n-checkbox': CheckboxBoolElement | CheckboxGroupElement;\n /** 代码框 */\n 'n-code': CodeElement;\n /** 取色器 */\n 'n-color-palette': ColorPaletteElement;\n /** 取色器(弹出类型) */\n 'n-color-picker': ColorPickerElement;\n /** 下拉面板 */\n 'n-dropdown': DropdownElement | DropdownMultipleElement;\n /** 空面板 */\n 'n-empty': EmptyElement;\n /** 匹配高亮文字 */\n 'n-highlight-text': HighlightTextElement;\n /** 图片查看器 */\n 'n-img': ImgElement;\n /** 输入框 */\n 'n-input': InputElement;\n /** 数字输入框 */\n 'n-input-number': InputNumberElement;\n /** Markdown渲染 */\n 'n-md': MdElement;\n /** 弹出气泡面板 */\n 'n-popover': PopoverElement;\n /** 单选项 */\n 'n-radio': RadioElement;\n /** 分段控制器 */\n 'n-segmented': SegmentedElement;\n /** 下拉选择框 */\n 'n-select': SelectElement | SelectMultipleElement;\n /** 骨架屏 */\n 'n-skeleton': SkeletonElement;\n /** 加载中 */\n 'n-spin': SpinElement;\n /** 开关 */\n 'n-switch': SwitchElement;\n /** 树形渲染 */\n 'n-tree':\n | TreeElement\n | TreeStringElement\n | TreeSchemaElement\n | TreeMultipleElement\n | TreeMultipleStringElement\n | TreeMultipleSchemaElement;\n /** 文字排版 */\n 'n-typography': TypographyElement;\n /** 标签页 */\n 'n-tabs': TabsElement;\n /** 标签 */\n 'n-tag': TagElement;\n /** 导航菜单 */\n 'n-menu': MenuElement | MenuMultipleElement;\n /** Cron表达式编辑器 */\n 'n-cron': CronElement;\n /** 日期选择器\n * @since 2.1.0\n */\n 'n-data-picker': DatePickerElement;\n /** 数据表格\n * @since 2.2.0\n */\n 'n-table': TableElement;\n /** 分页器\n * @since 2.2.0\n */\n 'n-pagination': PaginationElement;\n /** 响应内部变化\n * @since 2.3.0\n */\n 'n-provider': ProviderElement;\n /** 模态框\n * @since 2.6.0\n */\n 'n-modal': ModalElement;\n /**\n * 二维码\n * @since 2.9.0\n */\n 'n-qrcode': QrCodeElement;\n /**\n * 折叠面板\n * @since 2.10.0\n */\n 'n-collapse': CollapseElement;\n}\ntype IntrinsicNekoElement = Transform<CustomElementTags>;\n\ndeclare module 'solid-js' {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n export interface IntrinsicElements extends HTMLElementTags, IntrinsicNekoElement {}\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n export interface IntrinsicElements extends IntrinsicNekoElement {}\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\n\nexport interface ComponentOptions<T> {\n element: T & ICustomElement;\n}\n"],"names":["Avatar","AvatarGroup","BackTop","Button","CaptureScreen","Carousel","Checkbox","Code","Collapse","ColorPalette","ColorPicker","Cron","DatePicker","Dropdown","Empty","FieldName","HighlightText","Img","Input","InputNumber","Md","Menu","Modal","OpenState","Pagination","Popover","Prism","Provider","QrCode","Radio","Segmented","Select","Size","Skeleton","Spin","Status","Switch","Table","Tabs","Tag","Tree","Typography","customElement","dayjs","fromSchema","generateColor","getCurrentElement","getOptions","hot","icon","mdStyle","noShadowDOM","notification","theme","toneColor","withSolid"],"mappings":"kKAEoBA,MAAM,mBAANA,SAAM,EAEbC,WAAW,mBAAXA,SAAW,EAIJC,OAAO,mBAAPA,SAAO,EAEPC,MAAM,mBAANA,SAAM,EAEbC,aAAa,mBAAbA,SAAa,EAINC,QAAQ,mBAARA,SAAQ,EAEfC,QAAQ,mBAARA,SAAQ,EAMDC,IAAI,mBAAJA,SAAI,EACJC,QAAQ,mBAARA,SAAQ,EAEfC,YAAY,mBAAZA,SAAY,EAKZC,WAAW,mBAAXA,SAAW,EAIJC,IAAI,mBAAJA,SAAI,EACJC,UAAU,mBAAVA,SAAU,EAGjBC,QAAQ,mBAARA,SAAQ,EAMDC,KAAK,mBAALA,SAAK,EArCmBC,SAAS,mBAATA,WAAS,EAyCxCC,aAAa,mBAAbA,SAAa,EAKNC,GAAG,mBAAHA,SAAG,EACHC,KAAK,mBAALA,SAAK,EAEZC,WAAW,mBAAXA,SAAW,EAIJC,EAAE,mBAAFA,SAAE,EAGTC,IAAI,mBAAJA,SAAI,EAQJC,KAAK,mBAALA,SAAK,EAGhBC,SAAS,mBAATA,WAAS,EAQSC,UAAU,mBAAVA,SAAU,EACVC,OAAO,mBAAPA,SAAO,EACPC,KAAK,mBAALA,SAAK,EACLC,QAAQ,mBAARA,SAAQ,EACOC,MAAM,mBAANA,SAAM,EACrBC,KAAK,mBAALA,SAAK,EACLC,SAAS,mBAATA,SAAS,EAEhBC,MAAM,mBAANA,SAAM,EAnFoCC,IAAI,mBAAJA,MAAI,EAyFvCC,QAAQ,mBAARA,SAAQ,EACRC,IAAI,mBAAJA,SAAI,EA1FqCC,MAAM,mBAANA,QAAM,EA2F/CC,MAAM,mBAANA,SAAM,EACNC,KAAK,mBAALA,SAAK,EACWC,IAAI,mBAAJA,SAAI,EACpBC,GAAG,mBAAHA,SAAG,EASVC,IAAI,mBAAJA,SAAI,EAeGC,UAAU,mBAAVA,SAAU,EAErBC,aAAa,mBAAbA,eAAa,EA3FFC,KAAK,mBAALA,SAAK,EASLC,UAAU,mBAAVA,SAAU,EA2D5BC,aAAa,mBAAbA,eAAa,EAuBSC,iBAAiB,mBAAjBA,mBAAiB,EAjFrBC,UAAU,mBAAVA,SAAU,EAiFaC,GAAG,mBAAHA,KAAG,EA3E1BC,IAAI,mBAAJA,SAAI,EASJC,OAAO,mBAAPA,SAAO,EAkEqBC,WAAW,mBAAXA,aAAW,EAjD9CC,YAAY,mBAAZA,SAAY,EA2BZC,KAAK,mBAALA,SAAK,EAEhBC,SAAS,mBAATA,WAAS,EAoBkDC,SAAS,mBAATA,WAAS,sBA/HE,yBAKjE,+BACoE,yBACA,8BACH,yBAKjE,iCACuE,2BAOvE,2BAC0E,uBACH,2BAKvE,gCAKA,+BAC2D,uBACkB,8BACnD,oCAO1B,2BAC8D,wBAC/B,8BACA,8BAK/B,iCAC6C,uBACW,sBACM,wBAK9D,+BACqD,qBACzB,2BAQ5B,uBAOA,wBAKA,+BAC6E,6BACT,0BAC1C,wBAC6C,2BACS,yBACA,wBACN,4BAO1E,yBACuE,2BACZ,uBACM,yBACH,wBACa,uBACnB,sBAOxD,wBAgBA,uBAC6E,2BAEN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neko-ui",
3
- "version": "2.10.6-beta.0",
3
+ "version": "2.10.6",
4
4
  "description": "WebComponents UI Libraries",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -41,12 +41,7 @@
41
41
  "access": "public",
42
42
  "registry": "https://registry.npmjs.org"
43
43
  },
44
- "sideEffects": [
45
- "*.css",
46
- "*.less",
47
- "*.md",
48
- "*.mdx"
49
- ],
44
+ "sideEffects": false,
50
45
  "keywords": [
51
46
  "neko-ui",
52
47
  "neko ui",
package/umd/index.js CHANGED
@@ -1375,7 +1375,7 @@
1375
1375
  transform: translate3d(0, -100%, 0) scale(0);
1376
1376
  }
1377
1377
  }
1378
- `,ro=(0,e5.css)({":host":{"--code-color":"#eee","--code-lang-style-color":"#fd9170","--code-toolbar-bg":"rgb(63, 63, 63, 0.7)","--atrule":"#c792ea","--attr-name":"#9cdcfe","--attr-value":"#ce9178","--attr-equals":"#ccc","--attribute":"#a5e844","--boolean":"#c792ea","--builtin":"#ffcb6b","--cdata":"#80cbc4","--char":"#80cbc4","--class":"#ffcb6b","--class-name":"#f2ff00","--comment":"#616161","--constant":"#c792ea","--doctype":"#616161","--entity":"#f66","--function":"#dcdcaa","--hexcode":"#f2ff00","--id":"#c792ea","--important":"#c792ea","--keyword":"#c792ea","--number":"#fd9170","--operator":"#569cd6","--prolog":"#616161","--property":"#80cbc4","--pseudo-class":"#a5e844","--pseudo-element":"#a5e844","--punctuation":"#89ddff","--regex":"#f2ff00","--selector":"#f66","--string":"#a5e844","--symbol":"#c792ea","--tag":"#569cd6","--unit":"#fd9170","--url":"#f66","--variable":"#f66","--inserted-bg":"rgba(0, 255, 128, .15)","--deleted-bg":"rgba(255, 0, 0, .15)"}}),rl=(0,e5.css)({":host":{"--code-color":"#90a4ae","--code-lang-style-color":"#f76d47","--namespace":"rgba(56, 64, 68, 0.7)","--tag":"#4b69c6","--atrule":"#7c4dff","--attr-name":"#39adb5","--attr-value":"#f6a434","--attr-equals":"#90a4ae","--attribute":"#f6a434","--boolean":"#7c4dff","--builtin":"#39adb5","--cdata":"#39adb5","--char":"#39adb5","--class":"#39adb5","--class-name":"#6182b8","--comment":"#aabfc9","--constant":"#7c4dff","--doctype":"#aabfc9","--entity":"#e53935","--hexcode":"#f76d47","--id":"#7c4dff","--important":"#7c4dff","--keyword":"#7c4dff","--number":"#f76d47","--operator":"#91b3e0","--prolog":"#aabfc9","--property":"#39adb5","--pseudo-class":"#f6a434","--pseudo-element":"#f6a434","--punctuation":"#39adb5","--regex":"#6182b8","--selector":"#e53935","--string":"#f6a434","--symbol":"#7c4dff","--unit":"#f76d47","--url":"#e53935","--variable":"#e53935","--function":"#4078f2","--name":"#39adb5","--prefix-inserted":"green","--prefix-deleted":"red","--inserted-bg":"rgba(0, 255, 128, .1)","--deleted-bg":"rgba(255, 0, 0, .1)"}}),rs=eN("<style> "),rc=eN("<style>"),ru=eN('<div class="toolbar">'),rd=eN("<pre><code>");function rp(t){let r,i;let{isDark:a}=tm,o=/%[0-9A-Fa-f]{2}/,l=ey(),[s,u]=M(""),[d,p]=M(),[g]=function(t,n,r){var i,a;let o,l,s;2==arguments.length&&"object"==typeof n||1==arguments.length?(o=!0,l=t,s=n||{}):(o=t,l=n,s=r||{});let u=null,d=v,p=null,g=!1,f=!1,h="initialValue"in s,b="function"==typeof o&&H(o),m=new Set,[y,x]=(s.storage||M)(s.initialValue),[k,w]=M(void 0),[$,C]=M(void 0,{equals:!1}),[S,_]=M(h?"ready":"unresolved");function E(e,t,n,r){return u===e&&(u=null,void 0!==r&&(h=!0),(e===d||t===d)&&s.onHydrated&&queueMicrotask(()=>s.onHydrated(r,{value:t})),d=v,O&&e&&g?(O.promises.delete(e),g=!1,et(()=>{O.running=!0,z(t,n)},!1)):z(t,n)),t}function z(e,t){et(()=>{for(let n of(void 0===t&&x(()=>e),_(void 0!==t?"errored":h?"ready":"unresolved"),w(t),m.keys()))n.decrement();m.clear()},!1)}function A(){var t,n;let r=e&&W(e),i=y(),a=k();if(void 0!==a&&!u)throw a;return L&&!L.user&&r&&K(Q(()=>{$(),u&&(r.resolved&&O&&g?O.promises.add(u):m.has(r)||(r.increment(),m.add(r)))},void 0,!0,1)),i}function T(e=!0){if(!1!==e&&f)return;f=!1;let t=b?b():o;if(g=O&&O.running,null==t||!1===t){E(u,V(y));return}O&&u&&O.promises.delete(u);let n=d!==v?d:V(()=>l(t,{value:y(),refetching:e}));return n&&"object"==typeof n&&"then"in n?(u=n,"value"in n)?("success"===n.status?E(u,n.value,void 0,t):E(u,void 0,eo(n.value),t),n):(f=!0,queueMicrotask(()=>f=!1),et(()=>{_(h?"refreshing":"pending"),C()},!1),n.then(e=>E(n,e,void 0,t),e=>E(n,void 0,eo(e),t))):(E(u,n,void 0,t),n)}return c.context&&(p=c.getNextContextId(),"initial"===s.ssrLoadFrom?d=s.initialValue:c.load&&c.has(p)&&(d=c.load(p))),Object.defineProperties(A,{state:{get:()=>S()},error:{get:()=>k()},loading:{get(){let e=S();return"pending"===e||"refreshing"===e}},latest:{get(){if(!h)return A();let e=k();if(e&&!u)throw e;return y()}}}),b?K(Q(()=>T(!1),void 0,!0,1)):T(!1),[A,{refetch:T,mutate:x}]}("prism",async function(){return window.Prism?(window.Prism.disableWorkerMessageHandler=!0,window.Prism.manual=!0,window.Prism):(await Promise.resolve().then(n.bind(n,464))).default}),f=H(()=>{var e;return t.title||(null==(e=t.language)?void 0:e.split(" ").pop())});function h(){rr(V(s),r)}j(()=>{let e=t.code||"";o.test(e)&&(e=decodeURIComponent(e)),r&&(r.normalize(),e!==r.textContent&&u(e))});let b=function(e){e.target.normalize();let n=e.target.textContent;m(t.language,n,!0),tW(t.onChange)&&t.onChange(n)};function m(e="markup",t,n,a={}){i&&(clearTimeout(i),i=void 0);let o=g();t&&o&&(i=setTimeout(()=>{if(clearTimeout(i),CSS.highlights){n&&CSS.highlights.forEach((e,t)=>{t.startsWith(l)&&e.clear()});let i=e.split(" "),s=o.languages[i[0]];s&&r&&function e(t,n,r,i=0){let a=i;if(Array.isArray(n)){for(let i=0,o=n.length;i<o;i++){let o=n[i];if("object"!=typeof o){a+=o.length;continue}a=e(t,o,r,a)}return a}if("object"==typeof n&&n.type&&t.firstChild){var o;let i=(null!=(o=n.alias)?o:n.type).toString(),s=l+i,c=new Range;["deleted","inserted"].includes(i)?c.setStart(t.firstChild,a+2):c.setStart(t.firstChild,a),Array.isArray(n.content)?a=e(t,n.content,r,a):"string"==typeof n.content&&(a+=n.content.length),c.setEnd(t.firstChild,a),function(e,t,n,r){let i=CSS.highlights.get(e);i?i.add(n):CSS.highlights.set(e,new Highlight().add(n)),void 0===r[e]&&(r[e]=`::highlight(${e}){color:var(--${t});background-color:var(--${t}-bg);text-decoration:var(--${t}-text-decoration);text-shadow:var(--${t}-text-shadow);-webkit-text-stroke-width:var(--${t}-stroke-width);-webkit-text-stroke-color:var(--${t}-stroke-color);}`)}(s,i,c,r)}return a}(r,o.tokenize(t,s),a),i.length>1||"git"===i[0]?m(i[1],t,!1,a):p(Object.values(a).join(""))}else throw Error("不支持 CSS Highlights");i=void 0},0))}return j(()=>{m(t.language,s(),!0)}),Y(()=>{if(CSS.highlights)for(let e of CSS.highlights.keys())e.startsWith(l)&&CSS.highlights.delete(e)}),[(()=>{let e=rs(),t=e.firstChild;return D(()=>t.data=a()?ro:rl),e})(),(()=>{let e=rs(),t=e.firstChild;return D(()=>t.data=d()),e})(),(()=>{let e=rc();return e.textContent=ra,e})(),ed(e$,{get when(){return t.css},get children(){let e=rs(),n=e.firstChild;return D(()=>n.data=(0,e5.css)(t.css)),e}}),(()=>{let e=rd(),n=e.firstChild,i=r;return eB(e,ed(e$,{get when(){return t.toolbar},get children(){let e=ru();return eB(e,ed(ri,{class:"toolbar-copy",onClick:h})),D(()=>eM(e,"data-language",f())),e}}),n),eD(n,"input",b,!0),"function"==typeof i?eV(i,n):r=n,eM(n,"spellcheck",!1),eB(n,s),D(r=>{let i={[`language-${t.language}`]:!!t.language,"not-toolbar":!t.toolbar,[t.class]:!t.edit},a=t.edit;return r._v$=ej(e,i,r._v$),a!==r._v$2&&eM(n,"contenteditable",r._v$2=a),r},{_v$:void 0,_v$2:void 0}),e})()]}rp.registry=function(){tr("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,onChange:void 0,title:void 0},(e,t)=>{let{baseStyle:n}=tm,r=t.element,i=eb({code:r.textContent,css:r.css,onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return j(()=>{ti(r,["css","code","title"]),r.replaceChildren()}),[(()=>{let e=rs(),t=e.firstChild;return D(()=>t.data=n()),e})(),ed(rp,i)]})},rp.registry();let rg=rp;eP(["input"]);let rf=eN("<style>"),rh=eN("<style> "),rb=eN('<details><summary></summary><div class="content" part="content">'),rv=(0,e5.css)`
1378
+ `,ro=(0,e5.css)({":host":{"--code-color":"#eee","--code-lang-style-color":"#fd9170","--code-toolbar-bg":"rgb(63, 63, 63, 0.7)","--atrule":"#c792ea","--attr-name":"#9cdcfe","--attr-value":"#ce9178","--attr-equals":"#ccc","--attribute":"#a5e844","--boolean":"#c792ea","--builtin":"#ffcb6b","--cdata":"#80cbc4","--char":"#80cbc4","--class":"#ffcb6b","--class-name":"#f2ff00","--comment":"#616161","--constant":"#c792ea","--doctype":"#616161","--entity":"#f66","--function":"#dcdcaa","--hexcode":"#f2ff00","--id":"#c792ea","--important":"#c792ea","--keyword":"#c792ea","--number":"#fd9170","--operator":"#569cd6","--prolog":"#616161","--property":"#80cbc4","--pseudo-class":"#a5e844","--pseudo-element":"#a5e844","--punctuation":"#89ddff","--regex":"#f2ff00","--selector":"#f66","--string":"#a5e844","--symbol":"#c792ea","--tag":"#569cd6","--unit":"#fd9170","--url":"#f66","--variable":"#f66","--inserted-bg":"rgba(0, 255, 128, .15)","--deleted-bg":"rgba(255, 0, 0, .15)"}}),rl=(0,e5.css)({":host":{"--code-color":"#90a4ae","--code-lang-style-color":"#f76d47","--namespace":"rgba(56, 64, 68, 0.7)","--tag":"#4b69c6","--atrule":"#7c4dff","--attr-name":"#39adb5","--attr-value":"#f6a434","--attr-equals":"#90a4ae","--attribute":"#f6a434","--boolean":"#7c4dff","--builtin":"#39adb5","--cdata":"#39adb5","--char":"#39adb5","--class":"#39adb5","--class-name":"#6182b8","--comment":"#aabfc9","--constant":"#7c4dff","--doctype":"#aabfc9","--entity":"#e53935","--hexcode":"#f76d47","--id":"#7c4dff","--important":"#7c4dff","--keyword":"#7c4dff","--number":"#f76d47","--operator":"#91b3e0","--prolog":"#aabfc9","--property":"#39adb5","--pseudo-class":"#f6a434","--pseudo-element":"#f6a434","--punctuation":"#39adb5","--regex":"#6182b8","--selector":"#e53935","--string":"#f6a434","--symbol":"#7c4dff","--unit":"#f76d47","--url":"#e53935","--variable":"#e53935","--function":"#4078f2","--name":"#39adb5","--prefix-inserted":"green","--prefix-deleted":"red","--inserted-bg":"rgba(0, 255, 128, .1)","--deleted-bg":"rgba(255, 0, 0, .1)"}}),rs=eN("<style> "),rc=eN("<style>"),ru=eN('<div class="toolbar">'),rd=eN("<pre><code>");function rp(t){let r,i;let{isDark:a}=tm,o=/%[0-9A-Fa-f]{2}/,l=ey(),[s,u]=M(""),[d,p]=M(),[g]=function(t,n,r){var i,a;let o,l,s;2==arguments.length&&"object"==typeof n||1==arguments.length?(o=!0,l=t,s=n||{}):(o=t,l=n,s=r||{});let u=null,d=v,p=null,g=!1,f=!1,h="initialValue"in s,b="function"==typeof o&&H(o),m=new Set,[y,x]=(s.storage||M)(s.initialValue),[k,w]=M(void 0),[$,C]=M(void 0,{equals:!1}),[S,_]=M(h?"ready":"unresolved");function E(e,t,n,r){return u===e&&(u=null,void 0!==r&&(h=!0),(e===d||t===d)&&s.onHydrated&&queueMicrotask(()=>s.onHydrated(r,{value:t})),d=v,O&&e&&g?(O.promises.delete(e),g=!1,et(()=>{O.running=!0,z(t,n)},!1)):z(t,n)),t}function z(e,t){et(()=>{for(let n of(void 0===t&&x(()=>e),_(void 0!==t?"errored":h?"ready":"unresolved"),w(t),m.keys()))n.decrement();m.clear()},!1)}function A(){var t,n;let r=e&&W(e),i=y(),a=k();if(void 0!==a&&!u)throw a;return L&&!L.user&&r&&K(Q(()=>{$(),u&&(r.resolved&&O&&g?O.promises.add(u):m.has(r)||(r.increment(),m.add(r)))},void 0,!0,1)),i}function T(e=!0){if(!1!==e&&f)return;f=!1;let t=b?b():o;if(g=O&&O.running,null==t||!1===t){E(u,V(y));return}O&&u&&O.promises.delete(u);let n=d!==v?d:V(()=>l(t,{value:y(),refetching:e}));return n&&"object"==typeof n&&"then"in n?(u=n,"value"in n)?("success"===n.status?E(u,n.value,void 0,t):E(u,void 0,eo(n.value),t),n):(f=!0,queueMicrotask(()=>f=!1),et(()=>{_(h?"refreshing":"pending"),C()},!1),n.then(e=>E(n,e,void 0,t),e=>E(n,void 0,eo(e),t))):(E(u,n,void 0,t),n)}return c.context&&(p=c.getNextContextId(),"initial"===s.ssrLoadFrom?d=s.initialValue:c.load&&c.has(p)&&(d=c.load(p))),Object.defineProperties(A,{state:{get:()=>S()},error:{get:()=>k()},loading:{get(){let e=S();return"pending"===e||"refreshing"===e}},latest:{get(){if(!h)return A();let e=k();if(e&&!u)throw e;return y()}}}),b?K(Q(()=>T(!1),void 0,!0,1)):T(!1),[A,{refetch:T,mutate:x}]}("prism",async function(){return window.Prism?(window.Prism.disableWorkerMessageHandler=!0,window.Prism.manual=!0,window.Prism):(await Promise.resolve().then(n.bind(n,464))).default}),f=H(()=>{var e;return t.title||(null==(e=t.language)?void 0:e.split(" ").pop())});function h(){rr(V(s),r)}j(()=>{let e=t.code||"";o.test(e)&&(e=decodeURIComponent(e)),r&&(r.normalize(),e!==r.textContent&&u(e))});let b=function(e){e.target.normalize();let n=e.target.textContent;m(t.language,n,!0),tW(t.onChange)&&t.onChange(n)};function m(e="markup",t,n,a={}){i&&(clearTimeout(i),i=void 0);let o=g();t&&o&&(i=setTimeout(()=>{if(clearTimeout(i),CSS.highlights){n&&CSS.highlights.forEach((e,t)=>{t.startsWith(l)&&e.clear()});let i=e.split(" "),s=o.languages[i[0]];s&&r&&function e(t,n,r,i=0){let a=i;if(Array.isArray(n)){for(let i=0,o=n.length;i<o;i++){let o=n[i];if("object"!=typeof o){a+=o.length;continue}a=e(t,o,r,a)}return a}if("object"==typeof n&&n.type&&t.firstChild){var o;let i=(null!=(o=n.alias)?o:n.type).toString(),s=l+i,c=new Range;["deleted","inserted"].includes(i)?c.setStart(t.firstChild,a+2):c.setStart(t.firstChild,a),Array.isArray(n.content)?a=e(t,n.content,r,a):"string"==typeof n.content&&(a+=n.content.length),c.setEnd(t.firstChild,a),function(e,t,n,r){let i=CSS.highlights.get(e);i?i.add(n):CSS.highlights.set(e,new Highlight().add(n)),void 0===r[e]&&(r[e]=`::highlight(${e}){color:var(--${t});background-color:var(--${t}-bg);text-decoration:var(--${t}-text-decoration);text-shadow:var(--${t}-text-shadow);-webkit-text-stroke-width:var(--${t}-stroke-width);-webkit-text-stroke-color:var(--${t}-stroke-color);}`)}(s,i,c,r)}return a}(r,o.tokenize(t,s),a),i.length>1||"git"===i[0]?m(i[1],t,!1,a):p(Object.values(a).join(""))}else throw Error("不支持 CSS Highlights");i=void 0},0))}return j(()=>{m(t.language,s(),!0)}),Y(()=>{if(CSS.highlights)for(let e of CSS.highlights.keys())e.startsWith(l)&&CSS.highlights.delete(e)}),[(()=>{let e=rs(),t=e.firstChild;return D(()=>t.data=a()?ro:rl),e})(),(()=>{let e=rs(),t=e.firstChild;return D(()=>t.data=d()),e})(),(()=>{let e=rc();return e.textContent=ra,e})(),ed(e$,{get when(){return t.css},get children(){let e=rs(),n=e.firstChild;return D(()=>n.data=(0,e5.css)(t.css)),e}}),(()=>{let e=rd(),n=e.firstChild,i=r;return eB(e,ed(e$,{get when(){return t.toolbar},get children(){let e=ru();return eB(e,ed(ri,{class:"toolbar-copy",onClick:h})),D(()=>eM(e,"data-language",f())),e}}),n),eD(n,"input",b,!0),"function"==typeof i?eV(i,n):r=n,eM(n,"spellcheck",!1),eB(n,s),D(r=>{let i={[`language-${t.language}`]:!!t.language,"not-toolbar":!t.toolbar,[t.class]:!t.edit},a=t.edit;return r._v$=ej(e,i,r._v$),a!==r._v$2&&eM(n,"contenteditable",r._v$2=a),r},{_v$:void 0,_v$2:void 0}),e})()]}tr("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,onChange:void 0,title:void 0},(e,t)=>{let{baseStyle:n}=tm,r=t.element,i=eb({code:r.textContent,css:r.css,onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return j(()=>{ti(r,["css","code","title"]),r.replaceChildren()}),[(()=>{let e=rs(),t=e.firstChild;return D(()=>t.data=n()),e})(),ed(rp,i)]});let rg=rp;eP(["input"]);let rf=eN("<style>"),rh=eN("<style> "),rb=eN('<details><summary></summary><div class="content" part="content">'),rv=(0,e5.css)`
1379
1379
  details {
1380
1380
  overflow: hidden;
1381
1381
  border-radius: var(--border-radius);
@@ -1939,7 +1939,7 @@
1939
1939
  white-space: break-spaces;
1940
1940
  cursor: auto;
1941
1941
  }
1942
- `;function iJ(e,t,n,r,i){let a=new RegExp(n,r).exec(i);if(a){let n;let r=new Range;n=0+a.index,e.firstChild&&(r.setStart(e.firstChild,n),n+=a[0].length,r.setEnd(e.firstChild,n));let i=CSS.highlights.get(t);i?i.add(r):CSS.highlights.set(t,new Highlight().add(r))}}function iQ(e){let t;let{baseStyle:n}=tm,r=ey(),i=H(()=>{var t;return`${e.text}${null!=(t=e.extra)?t:""}`});return j(()=>{if(t&&e.highlight){if(Array.isArray(e.highlight))for(let n=0,a=e.highlight.length;n<a;n++){let a=e.highlight[n],o="object"!=typeof a,l=String(o?a:a.highlight);l.length&&iJ(t,r,l,o?e.flag:a.flag,i())}else String(e.highlight).length&&iJ(t,r,String(e.highlight),e.flag,i())}}),j(()=>{if(t&&"string"==typeof e.extra){var n;let i=new Range,a=(null==(n=e.text)?void 0:n.length)||0;t.firstChild&&(i.setStart(t.firstChild,a),a+=e.extra.length,i.setEnd(t.firstChild,a));let o=CSS.highlights.get(r);o?o.add(i):CSS.highlights.set(r,new Highlight().add(i))}}),[(()=>{let e=iW(),t=e.firstChild;return D(()=>t.data=n()),e})(),(()=>{let e=iX();return e.textContent=iK,e})(),(()=>{let e=iX();return e.textContent=`::highlight(${r}) {color: var(--primary-color, #5794ff);}`,e})(),ed(e$,{get when(){return e.css},get children(){let t=iW(),n=t.firstChild;return D(()=>n.data=(0,e5.css)(e.css)),t}}),(()=>{let n=iZ(),r=t;return"function"==typeof r?eV(r,n):t=n,eB(n,i),D(()=>eF(n,(0,e5.cx)("text",e.class))),n})()]}iQ.registry=function(){tr("n-highlight-text",{class:void 0,css:void 0,text:void 0,highlight:void 0,flag:void 0,extra:void 0,children:void 0},(e,t)=>{let n=t.element,r=eb({text:n.textContent,css:n.css},e);return j(()=>{ti(n,["css","text","highlight","extra"]),n.replaceChildren()}),[(()=>{let e=iX();return e.textContent=tb,e})(),ed(iQ,r)]})},iQ.registry();let i0=iQ,i1=(0,e5.css)`
1942
+ `;function iJ(e,t,n,r,i){let a=new RegExp(n,r).exec(i);if(a){let n;let r=new Range;n=0+a.index,e.firstChild&&(r.setStart(e.firstChild,n),n+=a[0].length,r.setEnd(e.firstChild,n));let i=CSS.highlights.get(t);i?i.add(r):CSS.highlights.set(t,new Highlight().add(r))}}function iQ(e){let t;let{baseStyle:n}=tm,r=ey(),i=H(()=>{var t;return`${e.text}${null!=(t=e.extra)?t:""}`});return j(()=>{if(t&&e.highlight){if(Array.isArray(e.highlight))for(let n=0,a=e.highlight.length;n<a;n++){let a=e.highlight[n],o="object"!=typeof a,l=o?a:a.highlight;l.length&&iJ(t,r,l,o?e.flag:a.flag,i())}else e.highlight.length&&iJ(t,r,e.highlight,e.flag,i())}}),j(()=>{if(t&&"string"==typeof e.extra){var n;let i=new Range,a=(null==(n=e.text)?void 0:n.length)||0;t.firstChild&&(i.setStart(t.firstChild,a),a+=e.extra.length,i.setEnd(t.firstChild,a));let o=CSS.highlights.get(r);o?o.add(i):CSS.highlights.set(r,new Highlight().add(i))}}),[(()=>{let e=iW(),t=e.firstChild;return D(()=>t.data=n()),e})(),(()=>{let e=iX();return e.textContent=iK,e})(),(()=>{let e=iX();return e.textContent=`::highlight(${r}) {color: var(--primary-color, #5794ff);}`,e})(),ed(e$,{get when(){return e.css},get children(){let t=iW(),n=t.firstChild;return D(()=>n.data=(0,e5.css)(e.css)),t}}),(()=>{let n=iZ(),r=t;return"function"==typeof r?eV(r,n):t=n,eB(n,i),D(()=>eF(n,(0,e5.cx)("text",e.class))),n})()]}tr("n-highlight-text",{class:void 0,css:void 0,text:void 0,highlight:void 0,flag:void 0,extra:void 0,children:void 0},(e,t)=>{let n=t.element,r=eb({text:n.textContent,css:n.css},e);return j(()=>{ti(n,["css","text","highlight","extra"]),n.replaceChildren()}),[(()=>{let e=iX();return e.textContent=tb,e})(),ed(iQ,r)]});let i0=iQ,i1=(0,e5.css)`
1943
1943
  .label {
1944
1944
  --x: 0;
1945
1945
 
@@ -1,2 +0,0 @@
1
- declare function registry(element: 'highlight-text' | 'code'): void;
2
- export default registry;
@@ -1 +0,0 @@
1
- import t from"../code";import e from"../highlight-text";export default function(i){switch(i){case"highlight-text":e.registry();break;case"code":t.registry()}}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/utils/registry.ts"],"sourcesContent":["import Code from '../code';\nimport HighlightText from '../highlight-text';\n\nfunction registry(element: 'highlight-text' | 'code') {\n switch (element) {\n case 'highlight-text':\n HighlightText.registry();\n break;\n case 'code':\n Code.registry();\n break;\n default:\n break;\n }\n}\n\nexport default registry;\n"],"names":["Code","HighlightText","element","registry"],"mappings":"AAAA,OAAOA,MAAU,SAAU,AAC3B,QAAOC,MAAmB,mBAAoB,AAe9C,gBAbA,SAAkBC,CAAkC,EAClD,OAAQA,GACN,IAAK,iBACHD,EAAcE,QAAQ,GACtB,KACF,KAAK,OACHH,EAAKG,QAAQ,EAIjB,CACF"}
@@ -1,2 +0,0 @@
1
- declare function registry(element: 'highlight-text' | 'code'): void;
2
- export default registry;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return i}});const e=r(require("../code")),t=r(require("../highlight-text"));function r(e){return e&&e.__esModule?e:{default:e}}function u(r){switch(r){case"highlight-text":t.default.registry();break;case"code":e.default.registry()}}const i=u;
@@ -1 +0,0 @@
1
- {"version":3,"sources":["components/utils/registry.ts"],"sourcesContent":["import Code from '../code';\nimport HighlightText from '../highlight-text';\n\nfunction registry(element: 'highlight-text' | 'code') {\n switch (element) {\n case 'highlight-text':\n HighlightText.registry();\n break;\n case 'code':\n Code.registry();\n break;\n default:\n break;\n }\n}\n\nexport default registry;\n"],"names":["registry","element","HighlightText","Code"],"mappings":"kGAgBA,+CAAA,uBAhBiB,wBACS,yEAE1B,SAASA,EAASC,CAAkC,EAClD,OAAQA,GACN,IAAK,iBACHC,SAAa,CAACF,QAAQ,GACtB,KACF,KAAK,OACHG,SAAI,CAACH,QAAQ,EAIjB,CACF,OAEA,EAAeA"}