neko-ui 2.7.0 → 2.7.2

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.
Files changed (217) hide show
  1. package/CHANGELOG.md +26 -6
  2. package/es/@moneko/coverage/index.js.map +1 -1
  3. package/es/@moneko/info/index.js.map +1 -1
  4. package/es/@moneko/locales/index.js.map +1 -1
  5. package/es/@moneko/routes/index.js.map +1 -1
  6. package/es/avatar/group.js.map +1 -1
  7. package/es/avatar/index.js.map +1 -1
  8. package/es/avatar/style.js.map +1 -1
  9. package/es/back-top/index.js.map +1 -1
  10. package/es/back-top/style.js.map +1 -1
  11. package/es/basic-config/index.js.map +1 -1
  12. package/es/button/index.js.map +1 -1
  13. package/es/button/style.js.map +1 -1
  14. package/es/capture-screen/index.js.map +1 -1
  15. package/es/capture-screen/style.js.map +1 -1
  16. package/es/carousel/index.js.map +1 -1
  17. package/es/carousel/style.js.map +1 -1
  18. package/es/checkbox/index.js.map +1 -1
  19. package/es/checkbox/style.js.map +1 -1
  20. package/es/code/index.js +1 -1
  21. package/es/code/index.js.map +1 -1
  22. package/es/code/style.js.map +1 -1
  23. package/es/code/worker.js +1 -1
  24. package/es/code/worker.js.map +1 -1
  25. package/es/color-palette/index.js.map +1 -1
  26. package/es/color-palette/style.js.map +1 -1
  27. package/es/color-picker/index.js.map +1 -1
  28. package/es/color-picker/style.js.map +1 -1
  29. package/es/cron/begin-interval.js.map +1 -1
  30. package/es/cron/day.js.map +1 -1
  31. package/es/cron/hour.js.map +1 -1
  32. package/es/cron/index.js.map +1 -1
  33. package/es/cron/item.js.map +1 -1
  34. package/es/cron/minute.js.map +1 -1
  35. package/es/cron/month.js.map +1 -1
  36. package/es/cron/period.js.map +1 -1
  37. package/es/cron/second.js.map +1 -1
  38. package/es/cron/some.js.map +1 -1
  39. package/es/cron/style.js.map +1 -1
  40. package/es/cron/week.js.map +1 -1
  41. package/es/cron/year.js.map +1 -1
  42. package/es/date-picker/date.js.map +1 -1
  43. package/es/date-picker/dayjs.js.map +1 -1
  44. package/es/date-picker/index.js.map +1 -1
  45. package/es/date-picker/month.js.map +1 -1
  46. package/es/date-picker/panel.js.map +1 -1
  47. package/es/date-picker/style.js.map +1 -1
  48. package/es/date-picker/time.js.map +1 -1
  49. package/es/date-picker/year.js.map +1 -1
  50. package/es/dropdown/index.js.map +1 -1
  51. package/es/empty/index.js.map +1 -1
  52. package/es/from-schema/index.js.map +1 -1
  53. package/es/get-options/index.js.map +1 -1
  54. package/es/highlight-text/index.js.map +1 -1
  55. package/es/img/index.js.map +1 -1
  56. package/es/img/style.js.map +1 -1
  57. package/es/index.js.map +1 -1
  58. package/es/input/index.js.map +1 -1
  59. package/es/input/style.js.map +1 -1
  60. package/es/input-number/index.js.map +1 -1
  61. package/es/katex/index.js.map +1 -1
  62. package/es/md/index.js +1 -1
  63. package/es/md/index.js.map +1 -1
  64. package/es/md/worker.js.map +1 -1
  65. package/es/md-style/index.js.map +1 -1
  66. package/es/menu/index.js.map +1 -1
  67. package/es/menu/style.js.map +1 -1
  68. package/es/modal/hooks.js.map +1 -1
  69. package/es/modal/index.js.map +1 -1
  70. package/es/modal/store.js.map +1 -1
  71. package/es/modal/style.js.map +1 -1
  72. package/es/notification/index.js.map +1 -1
  73. package/es/notification/notification.js.map +1 -1
  74. package/es/notification/queque.js.map +1 -1
  75. package/es/notification/styles.js.map +1 -1
  76. package/es/pagination/index.js.map +1 -1
  77. package/es/pagination/styles.js.map +1 -1
  78. package/es/popover/index.js.map +1 -1
  79. package/es/popover/style.js.map +1 -1
  80. package/es/prism/css.js.map +1 -1
  81. package/es/prism/prism.js +1 -1
  82. package/es/prism/prism.js.map +1 -1
  83. package/es/provider/index.js.map +1 -1
  84. package/es/radio/index.js.map +1 -1
  85. package/es/radio/style.js.map +1 -1
  86. package/es/segmented/index.js.map +1 -1
  87. package/es/segmented/style.js.map +1 -1
  88. package/es/select/index.js.map +1 -1
  89. package/es/select/style.js.map +1 -1
  90. package/es/skeleton/index.js.map +1 -1
  91. package/es/spin/index.js.map +1 -1
  92. package/es/switch/index.js.map +1 -1
  93. package/es/switch/style.js.map +1 -1
  94. package/es/table/index.js.map +1 -1
  95. package/es/table/styles.js.map +1 -1
  96. package/es/tabs/index.js.map +1 -1
  97. package/es/tabs/style.js.map +1 -1
  98. package/es/tag/index.js.map +1 -1
  99. package/es/tag/style.js.map +1 -1
  100. package/es/theme/index.js.map +1 -1
  101. package/es/tree/index.js.map +1 -1
  102. package/es/tree/register.js.map +1 -1
  103. package/es/tree/style.js.map +1 -1
  104. package/es/tree/type.js.map +1 -1
  105. package/es/typography/index.js.map +1 -1
  106. package/lib/@moneko/coverage/index.js.map +1 -1
  107. package/lib/@moneko/info/index.js.map +1 -1
  108. package/lib/@moneko/locales/index.js.map +1 -1
  109. package/lib/@moneko/routes/index.js.map +1 -1
  110. package/lib/avatar/group.js.map +1 -1
  111. package/lib/avatar/index.js.map +1 -1
  112. package/lib/avatar/style.js.map +1 -1
  113. package/lib/back-top/index.js.map +1 -1
  114. package/lib/back-top/style.js.map +1 -1
  115. package/lib/basic-config/index.js.map +1 -1
  116. package/lib/button/index.js.map +1 -1
  117. package/lib/button/style.js.map +1 -1
  118. package/lib/capture-screen/index.js.map +1 -1
  119. package/lib/capture-screen/style.js.map +1 -1
  120. package/lib/carousel/index.js.map +1 -1
  121. package/lib/carousel/style.js.map +1 -1
  122. package/lib/checkbox/index.js.map +1 -1
  123. package/lib/checkbox/style.js.map +1 -1
  124. package/lib/code/index.js +1 -1
  125. package/lib/code/index.js.map +1 -1
  126. package/lib/code/style.js.map +1 -1
  127. package/lib/code/worker.js +1 -1
  128. package/lib/code/worker.js.map +1 -1
  129. package/lib/color-palette/index.js.map +1 -1
  130. package/lib/color-palette/style.js.map +1 -1
  131. package/lib/color-picker/index.js +1 -1
  132. package/lib/color-picker/index.js.map +1 -1
  133. package/lib/color-picker/style.js.map +1 -1
  134. package/lib/cron/begin-interval.js.map +1 -1
  135. package/lib/cron/day.js.map +1 -1
  136. package/lib/cron/hour.js.map +1 -1
  137. package/lib/cron/index.js.map +1 -1
  138. package/lib/cron/item.js.map +1 -1
  139. package/lib/cron/minute.js.map +1 -1
  140. package/lib/cron/month.js.map +1 -1
  141. package/lib/cron/period.js.map +1 -1
  142. package/lib/cron/second.js.map +1 -1
  143. package/lib/cron/some.js.map +1 -1
  144. package/lib/cron/style.js.map +1 -1
  145. package/lib/cron/week.js.map +1 -1
  146. package/lib/cron/year.js.map +1 -1
  147. package/lib/date-picker/date.js.map +1 -1
  148. package/lib/date-picker/dayjs.js.map +1 -1
  149. package/lib/date-picker/index.js +1 -1
  150. package/lib/date-picker/index.js.map +1 -1
  151. package/lib/date-picker/month.js.map +1 -1
  152. package/lib/date-picker/panel.js.map +1 -1
  153. package/lib/date-picker/style.js.map +1 -1
  154. package/lib/date-picker/time.js.map +1 -1
  155. package/lib/date-picker/year.js.map +1 -1
  156. package/lib/dropdown/index.js +1 -1
  157. package/lib/dropdown/index.js.map +1 -1
  158. package/lib/empty/index.js.map +1 -1
  159. package/lib/from-schema/index.js.map +1 -1
  160. package/lib/get-options/index.js.map +1 -1
  161. package/lib/highlight-text/index.js.map +1 -1
  162. package/lib/img/index.js.map +1 -1
  163. package/lib/img/style.js.map +1 -1
  164. package/lib/index.js.map +1 -1
  165. package/lib/input/index.js.map +1 -1
  166. package/lib/input/style.js.map +1 -1
  167. package/lib/input-number/index.js +1 -1
  168. package/lib/input-number/index.js.map +1 -1
  169. package/lib/katex/index.js.map +1 -1
  170. package/lib/md/index.js +1 -1
  171. package/lib/md/index.js.map +1 -1
  172. package/lib/md/worker.js.map +1 -1
  173. package/lib/md-style/index.js.map +1 -1
  174. package/lib/menu/index.js.map +1 -1
  175. package/lib/menu/style.js.map +1 -1
  176. package/lib/modal/hooks.js.map +1 -1
  177. package/lib/modal/index.js.map +1 -1
  178. package/lib/modal/store.js.map +1 -1
  179. package/lib/modal/style.js.map +1 -1
  180. package/lib/notification/index.js.map +1 -1
  181. package/lib/notification/notification.js.map +1 -1
  182. package/lib/notification/queque.js.map +1 -1
  183. package/lib/notification/styles.js.map +1 -1
  184. package/lib/pagination/index.js.map +1 -1
  185. package/lib/pagination/styles.js.map +1 -1
  186. package/lib/popover/index.js.map +1 -1
  187. package/lib/popover/style.js.map +1 -1
  188. package/lib/prism/css.js.map +1 -1
  189. package/lib/prism/prism.js +1 -1
  190. package/lib/prism/prism.js.map +1 -1
  191. package/lib/provider/index.js.map +1 -1
  192. package/lib/radio/index.js.map +1 -1
  193. package/lib/radio/style.js.map +1 -1
  194. package/lib/segmented/index.js.map +1 -1
  195. package/lib/segmented/style.js.map +1 -1
  196. package/lib/select/index.js +1 -1
  197. package/lib/select/index.js.map +1 -1
  198. package/lib/select/style.js.map +1 -1
  199. package/lib/skeleton/index.js.map +1 -1
  200. package/lib/spin/index.js.map +1 -1
  201. package/lib/switch/index.js.map +1 -1
  202. package/lib/switch/style.js.map +1 -1
  203. package/lib/table/index.js.map +1 -1
  204. package/lib/table/styles.js.map +1 -1
  205. package/lib/tabs/index.js.map +1 -1
  206. package/lib/tabs/style.js.map +1 -1
  207. package/lib/tag/index.js +2 -2
  208. package/lib/tag/index.js.map +1 -1
  209. package/lib/tag/style.js.map +1 -1
  210. package/lib/theme/index.js.map +1 -1
  211. package/lib/tree/index.js.map +1 -1
  212. package/lib/tree/register.js.map +1 -1
  213. package/lib/tree/style.js.map +1 -1
  214. package/lib/tree/type.js.map +1 -1
  215. package/lib/typography/index.js.map +1 -1
  216. package/package.json +22 -22
  217. package/umd/index.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/dropdown/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\nimport Empty from '../empty';\nimport '../menu';\nimport Popover, { defaultProps as popoverProps } from '../popover';\nimport type { CustomElement, MenuMultipleProps, MenuOption, MenuProps, PopoverProps } from '..';\n\nexport interface BaseDropdownProps extends Omit<PopoverProps, 'content'> {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport interface DropdownProps\n extends Omit<MenuProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport interface DropdownMultipleProps\n extends Omit<MenuMultipleProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport type DropdownElement = CustomElement<DropdownProps>;\nexport type DropdownMultipleElement = CustomElement<DropdownMultipleProps>;\n\nfunction Dropdown(props: DropdownProps | DropdownMultipleProps) {\n const [local, other] = splitProps(props, [\n 'popupClass',\n 'popupCss',\n 'value',\n 'defaultValue',\n 'onChange',\n 'open',\n 'onOpenChange',\n 'fieldNames',\n 'items',\n 'multiple',\n 'toggle',\n ]);\n let portalRef: HTMLDivElement | undefined;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [menuOpenKeys, setMenuOpenKeys] = createSignal<(string | number)[]>([]);\n\n function openChange(next: boolean | null) {\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n\n function change(\n e: CustomEvent<[val: (string | number)[] | (string | number), item: MenuOption]>,\n ) {\n const [key, item] = e.detail;\n\n if (isFunction(local.onChange)) {\n local.onChange(key, item);\n }\n if (local.value === void 0) {\n setValue(Array.isArray(key) ? key : [key]);\n }\n if (!local.multiple) {\n openChange(false);\n }\n }\n function menuOpenKeysChange(e: CustomEvent<(string | number)[]>) {\n setMenuOpenKeys(e.detail);\n }\n\n createEffect(() => {\n if (local.value !== void 0 && local.value !== null) {\n setValue(Array.isArray(local.value) ? local.value : [local.value]);\n } else {\n setValue([]);\n }\n });\n createEffect(() => {\n if (local.open !== void 0 && untrack(open) !== local.open) {\n setOpen(local.open);\n }\n });\n\n return (\n <Popover\n popupClass={local.popupClass}\n popupCss={local.popupCss}\n open={open()}\n onOpenChange={openChange}\n content={\n <div ref={portalRef} class=\"container\">\n <Show when={local.items?.length} fallback={<Empty style={{ width: '100%' }} />}>\n <n-menu\n items={local.items}\n default-value={local.defaultValue}\n multiple={local.multiple as true}\n field-names={local.fieldNames}\n toggle={local.toggle}\n disabled={other.disabled}\n value={value()}\n onChange={change}\n open-keys={menuOpenKeys()}\n onOpenChange={menuOpenKeysChange}\n />\n </Show>\n </div>\n }\n {...other}\n />\n );\n}\n\nexport const defaultProps = {\n ...popoverProps,\n fieldNames: void 0,\n toggle: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n multiple: void 0,\n disabled: void 0,\n type: void 0,\n onOpenChange: void 0,\n openKeys: void 0,\n};\n\ncustomElement<DropdownProps>(\n 'n-dropdown',\n {\n ...defaultProps,\n items: [],\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n items: el.items,\n onChange(key, item) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n children: [...el.childNodes.values()],\n } as DropdownProps,\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('items');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return createComponent(Dropdown, props);\n },\n);\nexport default Dropdown;\n"],"names":["defaultProps","Dropdown","props","portalRef","local","other","splitProps","value","setValue","createSignal","open","setOpen","menuOpenKeys","setMenuOpenKeys","openChange","next","isFunction","onOpenChange","change","e","key","item","detail","onChange","Array","isArray","multiple","menuOpenKeysChange","createEffect","untrack","Popover","popupClass","popupCss","Show","items","length","Empty","width","defaultValue","fieldNames","toggle","disabled","popoverProps","type","openKeys","customElement","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","children","childNodes","values","removeAttribute","createComponent"],"mappings":"+JAgLA,OAAwB,mBAAxB,GApDaA,YAAY,mBAAZA,+CApHN,wBACoB,4CACG,6BACZ,qBACX,seAC+C,sRAsBtD,SAASC,EAASC,CAA4C,MAcxDC,EAbJ,GAAM,CAACC,EAAOC,EAAM,CAAGC,GAAAA,YAAU,EAACJ,EAAO,CACvC,aACA,WACA,QACA,eACA,WACA,OACA,eACA,aACA,QACA,WACA,SACD,EAEK,CAACK,EAAOC,EAAS,CAAGC,GAAAA,cAAY,EAAsB,EAAE,EACxD,CAACC,EAAMC,EAAQ,CAAGF,GAAAA,cAAY,EAAiB,MAC/C,CAACG,EAAcC,EAAgB,CAAGJ,GAAAA,cAAY,EAAsB,EAAE,EAE5E,SAASK,EAAWC,CAAoB,EAClCC,GAAAA,SAAU,EAACZ,EAAMa,YAAY,GAC/Bb,EAAMa,YAAY,CAACF,GAEF,KAAK,IAApBX,EAAMM,IAAI,EACZC,EAAQI,EAEZ,CAEA,SAASG,EACPC,CAAgF,EAEhF,GAAM,CAACC,EAAKC,EAAK,CAAGF,EAAEG,MAAM,CAExBN,GAAAA,SAAU,EAACZ,EAAMmB,QAAQ,GAC3BnB,EAAMmB,QAAQ,CAACH,EAAKC,GAEF,KAAK,IAArBjB,EAAMG,KAAK,EACbC,EAASgB,MAAMC,OAAO,CAACL,GAAOA,EAAM,CAACA,EAAI,EAEtChB,EAAMsB,QAAQ,EACjBZ,EAAW,CAAA,EAEf,CACA,SAASa,EAAmBR,CAAmC,EAC7DN,EAAgBM,EAAEG,MAAM,CAC1B,CAeA,MAbAM,GAAAA,cAAY,EAAC,KACPxB,AAAgB,KAAK,IAArBA,EAAMG,KAAK,EAAeH,AAAgB,OAAhBA,EAAMG,KAAK,CACvCC,EAASgB,MAAMC,OAAO,CAACrB,EAAMG,KAAK,EAAIH,EAAMG,KAAK,CAAG,CAACH,EAAMG,KAAK,CAAC,EAEjEC,EAAS,EAAE,CAEf,GACAoB,GAAAA,cAAY,EAAC,KACQ,KAAK,IAApBxB,EAAMM,IAAI,EAAemB,GAAAA,SAAO,EAACnB,KAAUN,EAAMM,IAAI,EACvDC,EAAQP,EAAMM,IAAI,CAEtB,yBAGGoB,SAAO,2CACM1B,EAAM2B,UAAU,wBAClB3B,EAAM4B,QAAQ,oBAClBtB,kBACQI,wCAEFX,4CAAAA,yCACP8B,MAAI,oBAAO7B,EAAM8B,KAAK,EAAEC,mDAAmBC,SAAK,QAAQ,CAAEC,MAAO,MAAO,0EAWvDV,qCAFJT,qDAPHd,EAAM8B,KAAK,GACH9B,EAAMkC,YAAY,GACvBlC,EAAMsB,QAAQ,GACXtB,EAAMmC,UAAU,GACrBnC,EAAMoC,MAAM,GACVnC,EAAMoC,QAAQ,GAGb7B,0WAFJL,mBAQXF,GAGV,CAEO,MAAML,EAAe,CAC1B,GAAG0C,cAAY,CACfH,WAAY,KAAK,EACjBC,OAAQ,KAAK,EACbjC,MAAO,KAAK,EACZ+B,aAAc,KAAK,EACnBf,SAAU,KAAK,EACfG,SAAU,KAAK,EACfe,SAAU,KAAK,EACfE,KAAM,KAAK,EACX1B,aAAc,KAAK,EACnB2B,SAAU,KAAK,CACjB,EAEAC,GAAAA,eAAa,EACX,aACA,CACE,GAAG7C,CAAY,CACfkC,MAAO,EAAE,AACX,EACA,CAACY,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChB/C,EAAQgD,GAAAA,YAAU,EACtB,CACEhB,MAAOc,EAAGd,KAAK,CACfX,SAASH,CAAG,CAAEC,CAAI,EAChB2B,EAAGG,aAAa,CACd,IAAIC,YAAY,SAAU,CACxB9B,OAAQ,CAACF,EAAKC,EAAK,AACrB,GAEJ,EACAJ,aAAaP,CAAoB,EAC/BsC,EAAGG,aAAa,CACd,IAAIC,YAAY,aAAc,CAC5B9B,OAAQZ,CACV,GAEJ,EACA2C,SAAU,IAAIL,EAAGM,UAAU,CAACC,MAAM,GAAG,AACvC,EACAT,GAQF,MALAlB,GAAAA,cAAY,EAAC,KACXoB,EAAGQ,eAAe,CAAC,SACnBR,EAAGQ,eAAe,CAAC,eACnBR,EAAGQ,eAAe,CAAC,MACrB,GACOC,GAAAA,iBAAe,EAACxD,EAAUC,EACnC,SAEF,EAAeD"}
1
+ {"version":3,"sources":["../../components/dropdown/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { customElement } from 'solid-element';\nimport Empty from '../empty';\nimport '../menu';\nimport Popover, { defaultProps as popoverProps } from '../popover';\nimport type { CustomElement, MenuMultipleProps, MenuOption, MenuProps, PopoverProps } from '..';\n\nexport interface BaseDropdownProps extends Omit<PopoverProps, 'content'> {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport interface DropdownProps\n extends Omit<MenuProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport interface DropdownMultipleProps\n extends Omit<MenuMultipleProps, 'openKeys' | 'onOpenChange'>,\n BaseDropdownProps {\n /** 打开内容气泡 */\n open?: boolean | null;\n}\nexport type DropdownElement = CustomElement<DropdownProps>;\nexport type DropdownMultipleElement = CustomElement<DropdownMultipleProps>;\n\nfunction Dropdown(props: DropdownProps | DropdownMultipleProps) {\n const [local, other] = splitProps(props, [\n 'popupClass',\n 'popupCss',\n 'value',\n 'defaultValue',\n 'onChange',\n 'open',\n 'onOpenChange',\n 'fieldNames',\n 'items',\n 'multiple',\n 'toggle',\n ]);\n let portalRef: HTMLDivElement | undefined;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [menuOpenKeys, setMenuOpenKeys] = createSignal<(string | number)[]>([]);\n\n function openChange(next: boolean | null) {\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(next);\n }\n if (local.open === void 0) {\n setOpen(next);\n }\n }\n\n function change(\n e: CustomEvent<[val: (string | number)[] | (string | number), item: MenuOption]>,\n ) {\n const [key, item] = e.detail;\n\n if (isFunction(local.onChange)) {\n local.onChange(key, item);\n }\n if (local.value === void 0) {\n setValue(Array.isArray(key) ? key : [key]);\n }\n if (!local.multiple) {\n openChange(false);\n }\n }\n function menuOpenKeysChange(e: CustomEvent<(string | number)[]>) {\n setMenuOpenKeys(e.detail);\n }\n\n createEffect(() => {\n if (local.value !== void 0 && local.value !== null) {\n setValue(Array.isArray(local.value) ? local.value : [local.value]);\n } else {\n setValue([]);\n }\n });\n createEffect(() => {\n if (local.open !== void 0 && untrack(open) !== local.open) {\n setOpen(local.open);\n }\n });\n\n return (\n <Popover\n popupClass={local.popupClass}\n popupCss={local.popupCss}\n open={open()}\n onOpenChange={openChange}\n content={\n <div ref={portalRef} class=\"container\">\n <Show when={local.items?.length} fallback={<Empty style={{ width: '100%' }} />}>\n <n-menu\n items={local.items}\n default-value={local.defaultValue}\n multiple={local.multiple as true}\n field-names={local.fieldNames}\n toggle={local.toggle}\n disabled={other.disabled}\n value={value()}\n onChange={change}\n open-keys={menuOpenKeys()}\n onOpenChange={menuOpenKeysChange}\n />\n </Show>\n </div>\n }\n {...other}\n />\n );\n}\n\nexport const defaultProps = {\n ...popoverProps,\n fieldNames: void 0,\n toggle: void 0,\n value: void 0,\n defaultValue: void 0,\n onChange: void 0,\n multiple: void 0,\n disabled: void 0,\n type: void 0,\n onOpenChange: void 0,\n openKeys: void 0,\n};\n\ncustomElement<DropdownProps>(\n 'n-dropdown',\n {\n ...defaultProps,\n items: [],\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n items: el.items,\n onChange(key, item) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onOpenChange(open: boolean | null) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n children: [...el.childNodes.values()],\n } as DropdownProps,\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('items');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return createComponent(Dropdown, props);\n },\n);\nexport default Dropdown;\n"],"names":["defaultProps","Dropdown","props","portalRef","local","other","splitProps","value","setValue","createSignal","open","setOpen","menuOpenKeys","setMenuOpenKeys","openChange","next","isFunction","onOpenChange","change","e","key","item","detail","onChange","Array","isArray","multiple","menuOpenKeysChange","createEffect","untrack","Popover","popupClass","popupCss","Show","items","length","Empty","width","defaultValue","fieldNames","toggle","disabled","popoverProps","type","openKeys","customElement","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","children","childNodes","values","removeAttribute","createComponent"],"rangeMappings":"","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/empty/index.tsx"],"sourcesContent":["import { Show } from 'solid-js';\nimport { css } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport '../typography';\nimport type { CustomElement } from '..';\n\nconst style = css`\n .empty-container {\n inline-size: 100%;\n flex: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 24px;\n box-sizing: border-box;\n }\n\n .empty-label {\n font-size: var(--font-size-sm);\n }\n`;\n\nexport interface EmptyProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 描述 */\n label?: JSX.Element;\n style?: Record<string, string | number>;\n}\nexport type EmptyElement = CustomElement<EmptyProps>;\n\nfunction Empty(props: EmptyProps) {\n return (\n <>\n <style>\n {style}\n {css(props.css)}\n </style>\n <div class=\"empty-container\">\n <Show\n when={props.label}\n fallback={\n <n-typography class=\"empty-label\" type=\"secondary\">\n 无数据\n </n-typography>\n }\n >\n {props.label}\n </Show>\n </div>\n </>\n );\n}\n\ncustomElement<EmptyProps>(\n 'n-empty',\n {\n class: void 0,\n css: void 0,\n label: void 0,\n },\n Empty,\n);\n\nexport default Empty;\n"],"names":["style","css","Empty","props","Show","label","customElement","class"],"mappings":"kGAkEA,+CAAA,+CAlEqB,sBACD,yBACU,yBACvB,sLAGDA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;AAclB,CAAC,CAaD,SAASC,EAAMC,CAAiB,EAC9B,4CAGOH,2BACAC,GAAAA,KAAG,EAACE,EAAMF,GAAG,yEAGbG,MAAI,oBACGD,EAAME,KAAK,sGAOhBF,EAAME,KAAK,WAKtB,CAEAC,GAAAA,eAAa,EACX,UACA,CACEC,MAAO,KAAK,EACZN,IAAK,KAAK,EACVI,MAAO,KAAK,CACd,EACAH,SAGF,EAAeA"}
1
+ {"version":3,"sources":["../../components/empty/index.tsx"],"sourcesContent":["import { Show } from 'solid-js';\nimport { css } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport '../typography';\nimport type { CustomElement } from '..';\n\nconst style = css`\n .empty-container {\n inline-size: 100%;\n flex: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 24px;\n box-sizing: border-box;\n }\n\n .empty-label {\n font-size: var(--font-size-sm);\n }\n`;\n\nexport interface EmptyProps {\n /** 自定义样式表 */\n css?: string;\n /** 自定义类名 */\n class?: string;\n /** 描述 */\n label?: JSX.Element;\n style?: Record<string, string | number>;\n}\nexport type EmptyElement = CustomElement<EmptyProps>;\n\nfunction Empty(props: EmptyProps) {\n return (\n <>\n <style>\n {style}\n {css(props.css)}\n </style>\n <div class=\"empty-container\">\n <Show\n when={props.label}\n fallback={\n <n-typography class=\"empty-label\" type=\"secondary\">\n 无数据\n </n-typography>\n }\n >\n {props.label}\n </Show>\n </div>\n </>\n );\n}\n\ncustomElement<EmptyProps>(\n 'n-empty',\n {\n class: void 0,\n css: void 0,\n label: void 0,\n },\n Empty,\n);\n\nexport default Empty;\n"],"names":["style","css","Empty","props","Show","label","customElement","class"],"rangeMappings":";;;;;;;;;;;;;;","mappings":"kGAkEA,+CAAA,+CAlEqB,sBACD,yBACU,yBACvB,sLAGDA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;AAclB,CAAC,CAaD,SAASC,EAAMC,CAAiB,EAC9B,4CAGOH,2BACAC,GAAAA,KAAG,EAACE,EAAMF,GAAG,yEAGbG,MAAI,oBACGD,EAAME,KAAK,sGAOhBF,EAAME,KAAK,WAKtB,CAEAC,GAAAA,eAAa,EACX,UACA,CACEC,MAAO,KAAK,EACZN,IAAK,KAAK,EACVI,MAAO,KAAK,CACd,EACAH,SAGF,EAAeA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/from-schema/index.ts"],"sourcesContent":["import { type TreeData } from '../tree';\n\nenum Type {\n string = 'string',\n number = 'number',\n integer = 'integer',\n boolean = 'boolean',\n object = 'object',\n array = 'array',\n}\ninterface BaseSchema {\n type?: keyof typeof Type;\n name?: string;\n title?: string;\n items?: never;\n [key: string]: Any;\n}\ninterface ArraySchema extends Omit<BaseSchema, 'type' | 'items'> {\n type: 'array';\n items: Schema;\n properties?: Record<string, Schema>;\n}\n\ninterface ObjectSchema extends Omit<BaseSchema, 'type'> {\n type?: Exclude<keyof typeof Type, 'array'>;\n properties?: Record<string, Schema>;\n}\n\nexport type Schema = ObjectSchema | ArraySchema;\n\nfunction fromSchema(schema: Schema, pid?: string): TreeData<string>[] {\n const treeData: TreeData<string>[] = [];\n const { properties } = schema;\n\n for (const k in properties) {\n if (Object.prototype.hasOwnProperty.call(properties, k)) {\n const name = k as keyof typeof properties;\n const { properties: _properties, items, type = 'string', ...item } = properties[name];\n const node: TreeData<string> = {\n ...item,\n name: name,\n type,\n subTitle: type,\n key: `${pid ? `${pid}.` : ''}${name}`,\n };\n\n if (type === 'object') {\n node.children = fromSchema({ properties: _properties }, node.key);\n } else if (type === 'array') {\n node.children = fromSchema(\n {\n properties: {\n items: {\n ...(items as Schema),\n title: 'items',\n isItems: true,\n },\n },\n },\n node.key,\n );\n }\n treeData.push(node);\n }\n }\n\n return treeData;\n}\n\nexport default fromSchema;\n"],"names":["Type","fromSchema","schema","pid","treeData","properties","k","Object","prototype","hasOwnProperty","call","_properties","items","type","item","node","name","subTitle","key","children","title","isItems","push"],"mappings":"mBAEKA,uFAmEL,+CAAA,MAnEKA,EAAAA,IAAAA,yHAmEL,EAvCA,SAASC,EAAWC,CAAc,CAAEC,CAAY,EAC9C,IAAMC,EAA+B,EAAE,CACjC,CAAEC,WAAAA,CAAU,CAAE,CAAGH,EAEvB,IAAK,IAAMI,KAAKD,EACd,GAAIE,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACL,EAAYC,GAAI,CAEvD,GAAM,CAAED,WAAYM,CAAW,CAAEC,MAAAA,CAAK,CAAEC,KAAAA,EAAO,QAAQ,CAAE,GAAGC,EAAM,CAAGT,CAAU,CADlEC,EACwE,CAC/ES,EAAyB,CAC7B,GAAGD,CAAI,CACPE,KAJWV,EAKXO,KAAAA,EACAI,SAAUJ,EACVK,IAAK,CAAC,EAAEf,EAAM,CAAC,EAAEA,EAAI,CAAC,CAAC,CAAG,GAAG,EAPlBG,EAOyB,CAAC,AACvC,CAEIO,AAAS,CAAA,WAATA,EACFE,EAAKI,QAAQ,CAAGlB,EAAW,CAAEI,WAAYM,CAAY,EAAGI,EAAKG,GAAG,EAC9C,UAATL,GACTE,CAAAA,EAAKI,QAAQ,CAAGlB,EACd,CACEI,WAAY,CACVO,MAAO,CACL,GAAIA,CAAK,CACTQ,MAAO,QACPC,QAAS,CAAA,CACX,CACF,CACF,EACAN,EAAKG,GAAG,CACV,EAEFd,EAASkB,IAAI,CAACP,EAChB,CAGF,OAAOX,CACT"}
1
+ {"version":3,"sources":["../../components/from-schema/index.ts"],"sourcesContent":["import { type TreeData } from '../tree';\n\nenum Type {\n string = 'string',\n number = 'number',\n integer = 'integer',\n boolean = 'boolean',\n object = 'object',\n array = 'array',\n}\ninterface BaseSchema {\n type?: keyof typeof Type;\n name?: string;\n title?: string;\n items?: never;\n [key: string]: Any;\n}\ninterface ArraySchema extends Omit<BaseSchema, 'type' | 'items'> {\n type: 'array';\n items: Schema;\n properties?: Record<string, Schema>;\n}\n\ninterface ObjectSchema extends Omit<BaseSchema, 'type'> {\n type?: Exclude<keyof typeof Type, 'array'>;\n properties?: Record<string, Schema>;\n}\n\nexport type Schema = ObjectSchema | ArraySchema;\n\nfunction fromSchema(schema: Schema, pid?: string): TreeData<string>[] {\n const treeData: TreeData<string>[] = [];\n const { properties } = schema;\n\n for (const k in properties) {\n if (Object.prototype.hasOwnProperty.call(properties, k)) {\n const name = k as keyof typeof properties;\n const { properties: _properties, items, type = 'string', ...item } = properties[name];\n const node: TreeData<string> = {\n ...item,\n name: name,\n type,\n subTitle: type,\n key: `${pid ? `${pid}.` : ''}${name}`,\n };\n\n if (type === 'object') {\n node.children = fromSchema({ properties: _properties }, node.key);\n } else if (type === 'array') {\n node.children = fromSchema(\n {\n properties: {\n items: {\n ...(items as Schema),\n title: 'items',\n isItems: true,\n },\n },\n },\n node.key,\n );\n }\n treeData.push(node);\n }\n }\n\n return treeData;\n}\n\nexport default fromSchema;\n"],"names":["Type","fromSchema","schema","pid","treeData","properties","k","Object","prototype","hasOwnProperty","call","_properties","items","type","item","node","name","subTitle","key","children","title","isItems","push"],"rangeMappings":"","mappings":"mBAEKA,uFAmEL,+CAAA,MAnEKA,EAAAA,IAAAA,yHAmEL,EAvCA,SAASC,EAAWC,CAAc,CAAEC,CAAY,EAC9C,IAAMC,EAA+B,EAAE,CACjC,CAAEC,WAAAA,CAAU,CAAE,CAAGH,EAEvB,IAAK,IAAMI,KAAKD,EACd,GAAIE,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACL,EAAYC,GAAI,CAEvD,GAAM,CAAED,WAAYM,CAAW,CAAEC,MAAAA,CAAK,CAAEC,KAAAA,EAAO,QAAQ,CAAE,GAAGC,EAAM,CAAGT,CAAU,CADlEC,EACwE,CAC/ES,EAAyB,CAC7B,GAAGD,CAAI,CACPE,KAJWV,EAKXO,KAAAA,EACAI,SAAUJ,EACVK,IAAK,CAAC,EAAEf,EAAM,CAAC,EAAEA,EAAI,CAAC,CAAC,CAAG,GAAG,EAPlBG,EAOyB,CAAC,AACvC,CAEIO,AAAS,CAAA,WAATA,EACFE,EAAKI,QAAQ,CAAGlB,EAAW,CAAEI,WAAYM,CAAY,EAAGI,EAAKG,GAAG,EAC9C,UAATL,GACTE,CAAAA,EAAKI,QAAQ,CAAGlB,EACd,CACEI,WAAY,CACVO,MAAO,CACL,GAAIA,CAAK,CACTQ,MAAO,QACPC,QAAS,CAAA,CACX,CACF,CACF,EACAN,EAAKG,GAAG,CACV,EAEFd,EAASkB,IAAI,CAACP,EAChB,CAGF,OAAOX,CACT"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/get-options/index.ts"],"sourcesContent":["import { type BaseOption, type BasicConfig, FieldName } from '../basic-config';\n\nfunction getOptions<T extends BaseOption = BaseOption>(\n list?: (T | string | number)[],\n fieldNames?: BasicConfig['fieldName'],\n): (T & Record<string, unknown>)[] {\n if (!list) return [];\n return list.map((item, i) => {\n const { options, children, label, value } = Object.assign({}, FieldName, fieldNames);\n\n if (typeof item === 'object') {\n const _label = (typeof item[label] === 'undefined' ? item[value] : item[label]) || i;\n const _value = (typeof item[value] === 'undefined' ? _label : item[value]) || i;\n const _item = {\n ...item,\n [label]: _label,\n [value]: _value,\n };\n\n if (Array.isArray(item[children])) {\n Object.assign(_item, {\n [children]: getOptions(item[children], fieldNames),\n });\n }\n if (Array.isArray(item[options])) {\n Object.assign(_item, {\n [options]: getOptions(item[options], fieldNames),\n });\n }\n return _item;\n }\n return {\n [label]: item,\n [value]: item,\n } as T;\n });\n}\n\nexport default getOptions;\n"],"names":["getOptions","list","fieldNames","map","item","i","options","children","label","value","Object","assign","FieldName","_label","_value","_item","Array","isArray"],"mappings":"kGAsCA,+CAAA,qBAtC6D,mBAsC7D,EApCA,SAASA,EACPC,CAA8B,CAC9BC,CAAqC,SAErC,AAAKD,EACEA,EAAKE,GAAG,CAAC,CAACC,EAAMC,KACrB,GAAM,CAAEC,QAAAA,CAAO,CAAEC,SAAAA,CAAQ,CAAEC,MAAAA,CAAK,CAAEC,MAAAA,CAAK,CAAE,CAAGC,OAAOC,MAAM,CAAC,CAAC,EAAGC,WAAS,CAAEV,GAEzE,GAAI,AAAgB,UAAhB,OAAOE,EAAmB,CAC5B,IAAMS,EAAS,AAAC,CAAA,AAAuB,KAAA,IAAhBT,CAAI,CAACI,EAAM,CAAmBJ,CAAI,CAACK,EAAM,CAAGL,CAAI,CAACI,EAAM,AAAD,GAAMH,EAC7ES,EAAS,AAAC,CAAA,AAAuB,KAAA,IAAhBV,CAAI,CAACK,EAAM,CAAmBI,EAAST,CAAI,CAACK,EAAM,AAAD,GAAMJ,EACxEU,EAAQ,CACZ,GAAGX,CAAI,CACP,CAACI,EAAM,CAAEK,EACT,CAACJ,EAAM,CAAEK,CACX,EAYA,OAVIE,MAAMC,OAAO,CAACb,CAAI,CAACG,EAAS,GAC9BG,OAAOC,MAAM,CAACI,EAAO,CACnB,CAACR,EAAS,CAAEP,EAAWI,CAAI,CAACG,EAAS,CAAEL,EACzC,GAEEc,MAAMC,OAAO,CAACb,CAAI,CAACE,EAAQ,GAC7BI,OAAOC,MAAM,CAACI,EAAO,CACnB,CAACT,EAAQ,CAAEN,EAAWI,CAAI,CAACE,EAAQ,CAAEJ,EACvC,GAEKa,CACT,CACA,MAAO,CACL,CAACP,EAAM,CAAEJ,EACT,CAACK,EAAM,CAAEL,CACX,CACF,GA7BkB,EAAE,AA8BtB"}
1
+ {"version":3,"sources":["../../components/get-options/index.ts"],"sourcesContent":["import { type BaseOption, type BasicConfig, FieldName } from '../basic-config';\n\nfunction getOptions<T extends BaseOption = BaseOption>(\n list?: (T | string | number)[],\n fieldNames?: BasicConfig['fieldName'],\n): (T & Record<string, unknown>)[] {\n if (!list) return [];\n return list.map((item, i) => {\n const { options, children, label, value } = Object.assign({}, FieldName, fieldNames);\n\n if (typeof item === 'object') {\n const _label = (typeof item[label] === 'undefined' ? item[value] : item[label]) || i;\n const _value = (typeof item[value] === 'undefined' ? _label : item[value]) || i;\n const _item = {\n ...item,\n [label]: _label,\n [value]: _value,\n };\n\n if (Array.isArray(item[children])) {\n Object.assign(_item, {\n [children]: getOptions(item[children], fieldNames),\n });\n }\n if (Array.isArray(item[options])) {\n Object.assign(_item, {\n [options]: getOptions(item[options], fieldNames),\n });\n }\n return _item;\n }\n return {\n [label]: item,\n [value]: item,\n } as T;\n });\n}\n\nexport default getOptions;\n"],"names":["getOptions","list","fieldNames","map","item","i","options","children","label","value","Object","assign","FieldName","_label","_value","_item","Array","isArray"],"rangeMappings":"","mappings":"kGAsCA,+CAAA,qBAtC6D,mBAsC7D,EApCA,SAASA,EACPC,CAA8B,CAC9BC,CAAqC,SAErC,AAAKD,EACEA,EAAKE,GAAG,CAAC,CAACC,EAAMC,KACrB,GAAM,CAAEC,QAAAA,CAAO,CAAEC,SAAAA,CAAQ,CAAEC,MAAAA,CAAK,CAAEC,MAAAA,CAAK,CAAE,CAAGC,OAAOC,MAAM,CAAC,CAAC,EAAGC,WAAS,CAAEV,GAEzE,GAAI,AAAgB,UAAhB,OAAOE,EAAmB,CAC5B,IAAMS,EAAS,AAAC,CAAA,AAAuB,KAAA,IAAhBT,CAAI,CAACI,EAAM,CAAmBJ,CAAI,CAACK,EAAM,CAAGL,CAAI,CAACI,EAAM,AAAD,GAAMH,EAC7ES,EAAS,AAAC,CAAA,AAAuB,KAAA,IAAhBV,CAAI,CAACK,EAAM,CAAmBI,EAAST,CAAI,CAACK,EAAM,AAAD,GAAMJ,EACxEU,EAAQ,CACZ,GAAGX,CAAI,CACP,CAACI,EAAM,CAAEK,EACT,CAACJ,EAAM,CAAEK,CACX,EAYA,OAVIE,MAAMC,OAAO,CAACb,CAAI,CAACG,EAAS,GAC9BG,OAAOC,MAAM,CAACI,EAAO,CACnB,CAACR,EAAS,CAAEP,EAAWI,CAAI,CAACG,EAAS,CAAEL,EACzC,GAEEc,MAAMC,OAAO,CAACb,CAAI,CAACE,EAAQ,GAC7BI,OAAOC,MAAM,CAACI,EAAO,CACnB,CAACT,EAAQ,CAAEN,EAAWI,CAAI,CAACE,EAAQ,CAAEJ,EACvC,GAEKa,CACT,CACA,MAAO,CACL,CAACP,EAAM,CAAEJ,EACT,CAACK,EAAM,CAAEL,CACX,CACF,GA7BkB,EAAE,AA8BtB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/highlight-text/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nconst style = css`\n .text {\n cursor: auto;\n }\n\n .hit {\n color: var(--primary-color, #5794ff);\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}\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 const [texts, setTexts] = createSignal<Highlight[] | null>();\n const hitNode = createMemo(() => {\n return (\n texts()?.map((item) => {\n return item.hit ? (\n <span class=\"hit\" data-text={item.text}>\n {item.text}\n </span>\n ) : (\n item.text\n );\n }) ?? props.text\n );\n });\n\n /**\n * 字符串转换成高亮字符的Json格式\n * @param {string} text 字符串\n * @returns {HighlightTextJson} 高亮字符的Json\n */\n function strToHighlight(text: string): Highlight[] | null {\n /**\n * 高亮字符串语法\n * @example\n * ```\n * const str = '%c:高亮文字:c%';\n * ```\n */\n const RegExp_HighLight = /%c:(.+?):c%/i;\n let str = text,\n strArr = RegExp_HighLight.exec(str);\n\n if (strArr) {\n const textArr: Highlight[] = [];\n\n for (; strArr !== null; strArr = RegExp_HighLight.exec(str)) {\n // 普通部分\n let normalText: string | null = str.substring(0, strArr.index);\n\n if (normalText.trim().length) {\n textArr.push({\n text: normalText,\n });\n }\n\n // 高亮部分\n textArr.push({\n hit: true,\n text: strArr[1],\n });\n str = str.substring(strArr[0].length + strArr.index);\n normalText = null;\n }\n if (str.trim().length) {\n textArr.push({\n text: str,\n });\n }\n return textArr;\n }\n return null;\n }\n\n createEffect(() => {\n if (typeof props.text === 'string' && props.highlight) {\n let str = props.text;\n\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 === 'string';\n const hitStr = isOne ? item : item.highlight;\n const iFlag = isOne ? props.flag : item.flag;\n\n if (hitStr.length) {\n str = str.replace(new RegExp(hitStr, iFlag), `%c:${hitStr}:c%`);\n }\n }\n } else if (props.highlight.length) {\n str = str.replace(new RegExp(props.highlight, props.flag), `%c:${props.highlight}:c%`);\n }\n setTexts(strToHighlight(str));\n } else {\n setTexts(null);\n }\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(props.css)}\n </style>\n <div class={cx('text', props.class)}>\n {hitNode()}\n {props.extra && <span class=\"hit\">{props.extra}</span>}\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 },\n HighlightText,\n);\nexport default HighlightText;\n"],"names":["style","css","HighlightText","props","baseStyle","theme","texts","setTexts","createSignal","hitNode","createMemo","map","item","hit","text","createEffect","highlight","str","Array","isArray","i","len","length","isOne","hitStr","iFlag","flag","replace","RegExp","strToHighlight","RegExp_HighLight","strArr","exec","textArr","normalText","substring","index","trim","push","extra","cx","class","customElement"],"mappings":"wGAwKA,+CAAA,+CAxKuD,sBAC/B,yBACM,8BACZ,sIAGZA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;AAQlB,CAAC,CAqCD,SAASC,EAAcC,CAAyB,EAC9C,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CACrB,CAACC,EAAOC,EAAS,CAAGC,GAAAA,cAAY,IAChCC,EAAUC,GAAAA,YAAU,EAAC,IAEvBJ,KAASK,IAAI,AAACC,GACLA,EAAKC,GAAG,0CAEVD,EAAKE,IAAI,oDADiBF,EAAKE,IAAI,SAItCF,EAAKE,IAAI,GAEPX,EAAMW,IAAI,EA4EpB,MAxBAC,GAAAA,cAAY,EAAC,KACX,GAAI,AAAsB,UAAtB,OAAOZ,EAAMW,IAAI,EAAiBX,EAAMa,SAAS,CAAE,CACrD,IAAIC,EAAMd,EAAMW,IAAI,CAEpB,GAAII,MAAMC,OAAO,CAAChB,EAAMa,SAAS,EAC/B,IAAK,IAAII,EAAI,EAAGC,EAAMlB,EAAMa,SAAS,CAACM,MAAM,CAAEF,EAAIC,EAAKD,IAAK,CAC1D,IAAMR,EAAOT,EAAMa,SAAS,CAACI,EAAE,CACzBG,EAAQ,AAAgB,UAAhB,OAAOX,EACfY,EAASD,EAAQX,EAAOA,EAAKI,SAAS,CACtCS,EAAQF,EAAQpB,EAAMuB,IAAI,CAAGd,EAAKc,IAAI,AAExCF,CAAAA,EAAOF,MAAM,EACfL,CAAAA,EAAMA,EAAIU,OAAO,CAAC,IAAIC,OAAOJ,EAAQC,GAAQ,CAAC,GAAG,EAAED,EAAO,GAAG,CAAC,CAAA,CAElE,MACSrB,EAAMa,SAAS,CAACM,MAAM,EAC/BL,CAAAA,EAAMA,EAAIU,OAAO,CAAC,IAAIC,OAAOzB,EAAMa,SAAS,CAAEb,EAAMuB,IAAI,EAAG,CAAC,GAAG,EAAEvB,EAAMa,SAAS,CAAC,GAAG,CAAC,CAAA,EAEvFT,EAASsB,AA7Db,SAAwBf,CAAY,EAQlC,IAAMgB,EAAmB,eACrBb,EAAMH,EACRiB,EAASD,EAAiBE,IAAI,CAACf,GAEjC,GAAIc,EAAQ,CACV,IAAME,EAAuB,EAAE,CAE/B,KAAOF,AAAW,OAAXA,EAAiBA,EAASD,EAAiBE,IAAI,CAACf,GAAM,CAE3D,IAAIiB,EAA4BjB,EAAIkB,SAAS,CAAC,EAAGJ,EAAOK,KAAK,CAEzDF,CAAAA,EAAWG,IAAI,GAAGf,MAAM,EAC1BW,EAAQK,IAAI,CAAC,CACXxB,KAAMoB,CACR,GAIFD,EAAQK,IAAI,CAAC,CACXzB,IAAK,CAAA,EACLC,KAAMiB,CAAM,CAAC,EAAE,AACjB,GACAd,EAAMA,EAAIkB,SAAS,CAACJ,CAAM,CAAC,EAAE,CAACT,MAAM,CAAGS,EAAOK,KAAK,EACnDF,EAAa,IACf,CAMA,OALIjB,EAAIoB,IAAI,GAAGf,MAAM,EACnBW,EAAQK,IAAI,CAAC,CACXxB,KAAMG,CACR,GAEKgB,CACT,CACA,OAAO,IACT,EAoB4BhB,GAC1B,MACEV,EAAS,KAEb,yCAKOH,uBACAJ,2BACAC,GAAAA,KAAG,EAACE,EAAMF,GAAG,mDAGbQ,oDACAN,EAAMoC,KAAK,YAAXpC,8CAAkCA,EAAMoC,KAAK,qDAFpCC,GAAAA,IAAE,EAAC,OAAQrC,EAAMsC,KAAK,UAMxC,CAGAC,GAAAA,eAAa,EACX,mBACA,CACED,MAAO,KAAK,EACZxC,IAAK,KAAK,EACVa,KAAM,KAAK,EACXE,UAAW,KAAK,EAChBU,KAAM,KAAK,EACXa,MAAO,KAAK,CACd,EACArC,SAEF,EAAeA"}
1
+ {"version":3,"sources":["../../components/highlight-text/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nconst style = css`\n .text {\n cursor: auto;\n }\n\n .hit {\n color: var(--primary-color, #5794ff);\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}\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 const [texts, setTexts] = createSignal<Highlight[] | null>();\n const hitNode = createMemo(() => {\n return (\n texts()?.map((item) => {\n return item.hit ? (\n <span class=\"hit\" data-text={item.text}>\n {item.text}\n </span>\n ) : (\n item.text\n );\n }) ?? props.text\n );\n });\n\n /**\n * 字符串转换成高亮字符的Json格式\n * @param {string} text 字符串\n * @returns {HighlightTextJson} 高亮字符的Json\n */\n function strToHighlight(text: string): Highlight[] | null {\n /**\n * 高亮字符串语法\n * @example\n * ```\n * const str = '%c:高亮文字:c%';\n * ```\n */\n const RegExp_HighLight = /%c:(.+?):c%/i;\n let str = text,\n strArr = RegExp_HighLight.exec(str);\n\n if (strArr) {\n const textArr: Highlight[] = [];\n\n for (; strArr !== null; strArr = RegExp_HighLight.exec(str)) {\n // 普通部分\n let normalText: string | null = str.substring(0, strArr.index);\n\n if (normalText.trim().length) {\n textArr.push({\n text: normalText,\n });\n }\n\n // 高亮部分\n textArr.push({\n hit: true,\n text: strArr[1],\n });\n str = str.substring(strArr[0].length + strArr.index);\n normalText = null;\n }\n if (str.trim().length) {\n textArr.push({\n text: str,\n });\n }\n return textArr;\n }\n return null;\n }\n\n createEffect(() => {\n if (typeof props.text === 'string' && props.highlight) {\n let str = props.text;\n\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 === 'string';\n const hitStr = isOne ? item : item.highlight;\n const iFlag = isOne ? props.flag : item.flag;\n\n if (hitStr.length) {\n str = str.replace(new RegExp(hitStr, iFlag), `%c:${hitStr}:c%`);\n }\n }\n } else if (props.highlight.length) {\n str = str.replace(new RegExp(props.highlight, props.flag), `%c:${props.highlight}:c%`);\n }\n setTexts(strToHighlight(str));\n } else {\n setTexts(null);\n }\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {css(props.css)}\n </style>\n <div class={cx('text', props.class)}>\n {hitNode()}\n {props.extra && <span class=\"hit\">{props.extra}</span>}\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 },\n HighlightText,\n);\nexport default HighlightText;\n"],"names":["style","css","HighlightText","props","baseStyle","theme","texts","setTexts","createSignal","hitNode","createMemo","map","item","hit","text","createEffect","highlight","str","Array","isArray","i","len","length","isOne","hitStr","iFlag","flag","replace","RegExp","strToHighlight","RegExp_HighLight","strArr","exec","textArr","normalText","substring","index","trim","push","extra","cx","class","customElement"],"rangeMappings":";;;;;;;;","mappings":"wGAwKA,+CAAA,+CAxKuD,sBAC/B,yBACM,8BACZ,sIAGZA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;AAQlB,CAAC,CAqCD,SAASC,EAAcC,CAAyB,EAC9C,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGC,SAAK,CACrB,CAACC,EAAOC,EAAS,CAAGC,GAAAA,cAAY,IAChCC,EAAUC,GAAAA,YAAU,EAAC,IAEvBJ,KAASK,IAAI,AAACC,GACLA,EAAKC,GAAG,0CAEVD,EAAKE,IAAI,oDADiBF,EAAKE,IAAI,SAItCF,EAAKE,IAAI,GAEPX,EAAMW,IAAI,EA4EpB,MAxBAC,GAAAA,cAAY,EAAC,KACX,GAAI,AAAsB,UAAtB,OAAOZ,EAAMW,IAAI,EAAiBX,EAAMa,SAAS,CAAE,CACrD,IAAIC,EAAMd,EAAMW,IAAI,CAEpB,GAAII,MAAMC,OAAO,CAAChB,EAAMa,SAAS,EAC/B,IAAK,IAAII,EAAI,EAAGC,EAAMlB,EAAMa,SAAS,CAACM,MAAM,CAAEF,EAAIC,EAAKD,IAAK,CAC1D,IAAMR,EAAOT,EAAMa,SAAS,CAACI,EAAE,CACzBG,EAAQ,AAAgB,UAAhB,OAAOX,EACfY,EAASD,EAAQX,EAAOA,EAAKI,SAAS,CACtCS,EAAQF,EAAQpB,EAAMuB,IAAI,CAAGd,EAAKc,IAAI,AAExCF,CAAAA,EAAOF,MAAM,EACfL,CAAAA,EAAMA,EAAIU,OAAO,CAAC,IAAIC,OAAOJ,EAAQC,GAAQ,CAAC,GAAG,EAAED,EAAO,GAAG,CAAC,CAAA,CAElE,MACSrB,EAAMa,SAAS,CAACM,MAAM,EAC/BL,CAAAA,EAAMA,EAAIU,OAAO,CAAC,IAAIC,OAAOzB,EAAMa,SAAS,CAAEb,EAAMuB,IAAI,EAAG,CAAC,GAAG,EAAEvB,EAAMa,SAAS,CAAC,GAAG,CAAC,CAAA,EAEvFT,EAASsB,AA7Db,SAAwBf,CAAY,EAQlC,IAAMgB,EAAmB,eACrBb,EAAMH,EACRiB,EAASD,EAAiBE,IAAI,CAACf,GAEjC,GAAIc,EAAQ,CACV,IAAME,EAAuB,EAAE,CAE/B,KAAOF,AAAW,OAAXA,EAAiBA,EAASD,EAAiBE,IAAI,CAACf,GAAM,CAE3D,IAAIiB,EAA4BjB,EAAIkB,SAAS,CAAC,EAAGJ,EAAOK,KAAK,CAEzDF,CAAAA,EAAWG,IAAI,GAAGf,MAAM,EAC1BW,EAAQK,IAAI,CAAC,CACXxB,KAAMoB,CACR,GAIFD,EAAQK,IAAI,CAAC,CACXzB,IAAK,CAAA,EACLC,KAAMiB,CAAM,CAAC,EAAE,AACjB,GACAd,EAAMA,EAAIkB,SAAS,CAACJ,CAAM,CAAC,EAAE,CAACT,MAAM,CAAGS,EAAOK,KAAK,EACnDF,EAAa,IACf,CAMA,OALIjB,EAAIoB,IAAI,GAAGf,MAAM,EACnBW,EAAQK,IAAI,CAAC,CACXxB,KAAMG,CACR,GAEKgB,CACT,CACA,OAAO,IACT,EAoB4BhB,GAC1B,MACEV,EAAS,KAEb,yCAKOH,uBACAJ,2BACAC,GAAAA,KAAG,EAACE,EAAMF,GAAG,mDAGbQ,oDACAN,EAAMoC,KAAK,YAAXpC,8CAAkCA,EAAMoC,KAAK,qDAFpCC,GAAAA,IAAE,EAAC,OAAQrC,EAAMsC,KAAK,UAMxC,CAGAC,GAAAA,eAAa,EACX,mBACA,CACED,MAAO,KAAK,EACZxC,IAAK,KAAK,EACVa,KAAM,KAAK,EACXE,UAAW,KAAK,EAChBU,KAAM,KAAK,EACXa,MAAO,KAAK,CACd,EACArC,SAEF,EAAeA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/img/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n untrack,\n} from 'solid-js';\nimport { cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Portal } from 'solid-js/web';\nimport { imgCss, style } from './style';\nimport type { CustomElement } from '..';\n\nexport interface ImgProps {\n /** 图片地址 */\n src?: string;\n /** 查看大图的地址, 默认使用 `src`\n * @since 2.1.2\n */\n srcFull?: string;\n /** 图片 alt */\n alt?: string;\n /** 大图查看 */\n open?: boolean | null;\n /** 开启关闭大图的回调函数 */\n onOpenChange?: (open: boolean | null) => void;\n /** 点击遮罩关闭\n * @since 2.0.8\n * @default true\n */\n maskClosable?: boolean;\n /** 通过 `esc` 按键关闭\n * @default true\n */\n escClosable?: boolean;\n}\nexport type ImgElement = CustomElement<ImgProps, 'onOpenChange'>;\n\nfunction Img(props: ImgProps) {\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [posi, setPosi] = createSignal({\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n });\n let portal: HTMLDivElement | undefined;\n\n function getCss() {\n const { width, height, top, left } = posi();\n\n return `.portal { --img: url(${props.src});inline-size: ${width}px; block-size: ${height}px;inset-block-start: ${top}px;inset-inline-start: ${left}px;}`;\n }\n function openChange(visi: boolean | null) {\n setOpen(visi);\n props.onOpenChange?.(visi);\n }\n function preventDefault(e: Event) {\n e.preventDefault();\n }\n function close(e: KeyboardEvent | Event) {\n preventDefault(e);\n if (e.type === 'keydown') {\n if (props.escClosable && (e as KeyboardEvent).key === 'Escape') {\n openChange(false);\n }\n } else {\n openChange(false);\n }\n }\n function handleDestroy() {\n if (open() === false) {\n openChange(null);\n }\n }\n function handleOpen(e: Event) {\n e.stopPropagation();\n preventDefault(e);\n setPosi((e.target as HTMLImageElement)?.getBoundingClientRect());\n openChange(true);\n }\n function portalClick(e: Event) {\n preventDefault(e);\n if (props.maskClosable && e.target === portal) {\n openChange(false);\n }\n }\n\n createEffect(() => {\n if (props.open !== void 0 && props.open !== untrack(open)) {\n setOpen(props.open);\n }\n });\n createEffect(() => {\n if (open() === true) {\n document.documentElement.addEventListener('mousewheel', preventDefault, {\n passive: false,\n });\n\n if (props.escClosable) {\n document.documentElement.addEventListener('keydown', close, false);\n }\n }\n\n onCleanup(() => {\n document.documentElement.removeEventListener('mousewheel', preventDefault, false);\n document.documentElement.removeEventListener('keydown', close, false);\n });\n });\n\n return (\n <>\n <style>{imgCss}</style>\n <img\n class={cx('img', open() && 'none')}\n src={props.src}\n alt={props.alt}\n onClick={handleOpen}\n />\n <Show when={open() !== null}>\n <Portal useShadow={true}>\n <style>\n {getCss()}\n {imgCss}\n {style}\n </style>\n <div\n ref={portal}\n class={cx('portal', open() ? 'open' : 'closeing')}\n onAnimationEnd={handleDestroy}\n onClick={portalClick}\n >\n <span class=\"close\" onClick={close} />\n <img class=\"img\" src={props.srcFull || props.src} alt={props.alt} />\n </div>\n </Portal>\n </Show>\n </>\n );\n}\n\ncustomElement<ImgProps>(\n 'n-img',\n {\n src: void 0,\n srcFull: void 0,\n alt: void 0,\n open: null as boolean | null,\n maskClosable: true,\n escClosable: true,\n onOpenChange: void 0,\n },\n (_, opt) => {\n const props = mergeProps(\n {\n onOpenChange(open: boolean | null) {\n opt.element.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(Img, props);\n },\n);\nexport default Img;\n"],"names":["Img","props","portal","open","setOpen","createSignal","posi","setPosi","width","height","left","top","getCss","src","openChange","visi","onOpenChange","preventDefault","e","close","type","escClosable","key","handleDestroy","handleOpen","stopPropagation","target","getBoundingClientRect","portalClick","maskClosable","createEffect","untrack","document","documentElement","addEventListener","passive","onCleanup","removeEventListener","imgCss","cx","alt","Show","Portal","style","srcFull","customElement","_","opt","mergeProps","element","dispatchEvent","CustomEvent","detail","createComponent"],"mappings":"kGA2KA,+CAAA,qBAhKuB,0BAHhB,sBACY,yBACW,2BAEA,uIA4B9B,SAASA,EAAIC,CAAe,MAQtBC,EAPJ,GAAM,CAACC,EAAMC,EAAQ,CAAGC,GAAAA,cAAY,EAAiB,MAC/C,CAACC,EAAMC,EAAQ,CAAGF,GAAAA,cAAY,EAAC,CACnCG,MAAO,EACPC,OAAQ,EACRC,KAAM,EACNC,IAAK,CACP,GAGA,SAASC,IACP,GAAM,CAAEJ,MAAAA,CAAK,CAAEC,OAAAA,CAAM,CAAEE,IAAAA,CAAG,CAAED,KAAAA,CAAI,CAAE,CAAGJ,IAErC,MAAO,CAAC,qBAAqB,EAAEL,EAAMY,GAAG,CAAC,eAAe,EAAEL,EAAM,gBAAgB,EAAEC,EAAO,sBAAsB,EAAEE,EAAI,uBAAuB,EAAED,EAAK,IAAI,CAAC,AAC1J,CACA,SAASI,EAAWC,CAAoB,EACtCX,EAAQW,GACRd,EAAMe,YAAY,GAAGD,EACvB,CACA,SAASE,EAAeC,CAAQ,EAC9BA,EAAED,cAAc,EAClB,CACA,SAASE,EAAMD,CAAwB,EACrCD,EAAeC,GACXA,AAAW,YAAXA,EAAEE,IAAI,CACJnB,EAAMoB,WAAW,EAAI,AAA6B,WAA7B,AAACH,EAAoBI,GAAG,EAC/CR,EAAW,CAAA,GAGbA,EAAW,CAAA,EAEf,CACA,SAASS,IACQ,CAAA,IAAXpB,KACFW,EAAW,KAEf,CACA,SAASU,EAAWN,CAAQ,EAC1BA,EAAEO,eAAe,GACjBR,EAAeC,GACfX,EAASW,EAAEQ,MAAM,EAAuBC,yBACxCb,EAAW,CAAA,EACb,CACA,SAASc,EAAYV,CAAQ,EAC3BD,EAAeC,GACXjB,EAAM4B,YAAY,EAAIX,EAAEQ,MAAM,GAAKxB,GACrCY,EAAW,CAAA,EAEf,CAwBA,MAtBAgB,GAAAA,cAAY,EAAC,KACQ,KAAK,IAApB7B,EAAME,IAAI,EAAeF,EAAME,IAAI,GAAK4B,GAAAA,SAAO,EAAC5B,IAClDC,EAAQH,EAAME,IAAI,CAEtB,GACA2B,GAAAA,cAAY,EAAC,KACI,CAAA,IAAX3B,MACF6B,SAASC,eAAe,CAACC,gBAAgB,CAAC,aAAcjB,EAAgB,CACtEkB,QAAS,CAAA,CACX,GAEIlC,EAAMoB,WAAW,EACnBW,SAASC,eAAe,CAACC,gBAAgB,CAAC,UAAWf,EAAO,CAAA,IAIhEiB,GAAAA,WAAS,EAAC,KACRJ,SAASC,eAAe,CAACI,mBAAmB,CAAC,aAAcpB,EAAgB,CAAA,GAC3Ee,SAASC,eAAe,CAACI,mBAAmB,CAAC,UAAWlB,EAAO,CAAA,EACjE,EACF,yCAIYmB,QAAM,+DAKHd,6BAHFe,GAAAA,IAAE,EAAC,MAAOpC,KAAU,UACtBF,EAAMY,GAAG,GACTZ,EAAMuC,GAAG,qNAGfC,MAAI,oBAAOtC,AAAW,OAAXA,gDACTuC,QAAM,YAAY,CAAA,6DAEd9B,uBACA0B,QAAM,sBACNK,OAAK,+BAGDzC,wEAGI0B,8CADOL,uCAFXrB,qCAKwBiB,6BAJtBoB,GAAAA,IAAE,EAAC,SAAUpC,IAAS,OAAS,cAKhBF,EAAM2C,OAAO,EAAI3C,EAAMY,GAAG,GAAOZ,EAAMuC,GAAG,yMAM5E,CAEAK,GAAAA,eAAa,EACX,QACA,CACEhC,IAAK,KAAK,EACV+B,QAAS,KAAK,EACdJ,IAAK,KAAK,EACVrC,KAAM,KACN0B,aAAc,CAAA,EACdR,YAAa,CAAA,EACbL,aAAc,KAAK,CACrB,EACA,CAAC8B,EAAGC,KACF,IAAM9C,EAAQ+C,GAAAA,YAAU,EACtB,CACEhC,aAAab,CAAoB,EAC/B4C,EAAIE,OAAO,CAACC,aAAa,CACvB,IAAIC,YAAY,aAAc,CAC5BC,OAAQjD,CACV,GAEJ,CACF,EACA2C,GAGF,MAAOO,GAAAA,iBAAe,EAACrD,EAAKC,EAC9B,SAEF,EAAeD"}
1
+ {"version":3,"sources":["../../components/img/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n untrack,\n} from 'solid-js';\nimport { cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { Portal } from 'solid-js/web';\nimport { imgCss, style } from './style';\nimport type { CustomElement } from '..';\n\nexport interface ImgProps {\n /** 图片地址 */\n src?: string;\n /** 查看大图的地址, 默认使用 `src`\n * @since 2.1.2\n */\n srcFull?: string;\n /** 图片 alt */\n alt?: string;\n /** 大图查看 */\n open?: boolean | null;\n /** 开启关闭大图的回调函数 */\n onOpenChange?: (open: boolean | null) => void;\n /** 点击遮罩关闭\n * @since 2.0.8\n * @default true\n */\n maskClosable?: boolean;\n /** 通过 `esc` 按键关闭\n * @default true\n */\n escClosable?: boolean;\n}\nexport type ImgElement = CustomElement<ImgProps, 'onOpenChange'>;\n\nfunction Img(props: ImgProps) {\n const [open, setOpen] = createSignal<boolean | null>(null);\n const [posi, setPosi] = createSignal({\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n });\n let portal: HTMLDivElement | undefined;\n\n function getCss() {\n const { width, height, top, left } = posi();\n\n return `.portal { --img: url(${props.src});inline-size: ${width}px; block-size: ${height}px;inset-block-start: ${top}px;inset-inline-start: ${left}px;}`;\n }\n function openChange(visi: boolean | null) {\n setOpen(visi);\n props.onOpenChange?.(visi);\n }\n function preventDefault(e: Event) {\n e.preventDefault();\n }\n function close(e: KeyboardEvent | Event) {\n preventDefault(e);\n if (e.type === 'keydown') {\n if (props.escClosable && (e as KeyboardEvent).key === 'Escape') {\n openChange(false);\n }\n } else {\n openChange(false);\n }\n }\n function handleDestroy() {\n if (open() === false) {\n openChange(null);\n }\n }\n function handleOpen(e: Event) {\n e.stopPropagation();\n preventDefault(e);\n setPosi((e.target as HTMLImageElement)?.getBoundingClientRect());\n openChange(true);\n }\n function portalClick(e: Event) {\n preventDefault(e);\n if (props.maskClosable && e.target === portal) {\n openChange(false);\n }\n }\n\n createEffect(() => {\n if (props.open !== void 0 && props.open !== untrack(open)) {\n setOpen(props.open);\n }\n });\n createEffect(() => {\n if (open() === true) {\n document.documentElement.addEventListener('mousewheel', preventDefault, {\n passive: false,\n });\n\n if (props.escClosable) {\n document.documentElement.addEventListener('keydown', close, false);\n }\n }\n\n onCleanup(() => {\n document.documentElement.removeEventListener('mousewheel', preventDefault, false);\n document.documentElement.removeEventListener('keydown', close, false);\n });\n });\n\n return (\n <>\n <style>{imgCss}</style>\n <img\n class={cx('img', open() && 'none')}\n src={props.src}\n alt={props.alt}\n onClick={handleOpen}\n />\n <Show when={open() !== null}>\n <Portal useShadow={true}>\n <style>\n {getCss()}\n {imgCss}\n {style}\n </style>\n <div\n ref={portal}\n class={cx('portal', open() ? 'open' : 'closeing')}\n onAnimationEnd={handleDestroy}\n onClick={portalClick}\n >\n <span class=\"close\" onClick={close} />\n <img class=\"img\" src={props.srcFull || props.src} alt={props.alt} />\n </div>\n </Portal>\n </Show>\n </>\n );\n}\n\ncustomElement<ImgProps>(\n 'n-img',\n {\n src: void 0,\n srcFull: void 0,\n alt: void 0,\n open: null as boolean | null,\n maskClosable: true,\n escClosable: true,\n onOpenChange: void 0,\n },\n (_, opt) => {\n const props = mergeProps(\n {\n onOpenChange(open: boolean | null) {\n opt.element.dispatchEvent(\n new CustomEvent('openchange', {\n detail: open,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(Img, props);\n },\n);\nexport default Img;\n"],"names":["Img","props","portal","open","setOpen","createSignal","posi","setPosi","width","height","left","top","getCss","src","openChange","visi","onOpenChange","preventDefault","e","close","type","escClosable","key","handleDestroy","handleOpen","stopPropagation","target","getBoundingClientRect","portalClick","maskClosable","createEffect","untrack","document","documentElement","addEventListener","passive","onCleanup","removeEventListener","imgCss","cx","alt","Show","Portal","style","srcFull","customElement","_","opt","mergeProps","element","dispatchEvent","CustomEvent","detail","createComponent"],"rangeMappings":"","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/img/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const imgCss = css`\n .img {\n max-inline-size: 100%;\n max-block-size: 100%;\n object-fit: contain;\n transition: opacity 0.3s;\n }\n\n .none {\n pointer-events: none;\n opacity: 0.25;\n }\n`;\nexport const style = css`\n .close {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n z-index: 1;\n color: #fff;\n transition: transform var(--transition-duration);\n cursor: pointer;\n transform: scale(0);\n\n &::before {\n padding: 0 16px;\n font-size: 24px;\n content: '⛌';\n line-height: 46px;\n }\n }\n\n .portal {\n position: fixed;\n z-index: 99999;\n display: flex;\n justify-content: center;\n align-items: center;\n\n &::before {\n position: absolute;\n z-index: -1;\n background: var(--img) center/cover no-repeat;\n content: '';\n inline-size: 100%;\n block-size: 100%;\n pointer-events: none;\n opacity: 0.5;\n }\n\n &::after {\n position: absolute;\n z-index: -1;\n content: '';\n inline-size: 100%;\n block-size: 100%;\n pointer-events: none;\n backdrop-filter: blur(50px);\n }\n\n &:hover {\n .close {\n transform: scale(1);\n }\n }\n }\n\n .open {\n animation: photo-in var(--transition-duration) forwards;\n }\n\n .closeing {\n animation: photo-out var(--transition-duration) forwards;\n }\n\n @keyframes photo-in {\n 0% {\n pointer-events: none;\n }\n\n 100% {\n inline-size: 100vi;\n block-size: 100vb;\n inset-block-start: 0;\n inset-inline-start: 0;\n }\n }\n\n @keyframes photo-out {\n from {\n inline-size: 100vi;\n block-size: 100vb;\n inset-block-start: 0;\n inset-inline-start: 0;\n }\n\n to {\n pointer-events: none;\n }\n }\n`;\n"],"names":["imgCss","style","css"],"mappings":"+JAEaA,MAAM,mBAANA,GAaAC,KAAK,mBAALA,qBAfO,eAEPD,EAASE,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;AAY1B,CAAC,CACYD,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFzB,CAAC"}
1
+ {"version":3,"sources":["../../components/img/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const imgCss = css`\n .img {\n max-inline-size: 100%;\n max-block-size: 100%;\n object-fit: contain;\n transition: opacity 0.3s;\n }\n\n .none {\n pointer-events: none;\n opacity: 0.25;\n }\n`;\nexport const style = css`\n .close {\n position: absolute;\n inset-block-start: 0;\n inset-inline-end: 0;\n z-index: 1;\n color: #fff;\n transition: transform var(--transition-duration);\n cursor: pointer;\n transform: scale(0);\n\n &::before {\n padding: 0 16px;\n font-size: 24px;\n content: '⛌';\n line-height: 46px;\n }\n }\n\n .portal {\n position: fixed;\n z-index: 99999;\n display: flex;\n justify-content: center;\n align-items: center;\n\n &::before {\n position: absolute;\n z-index: -1;\n background: var(--img) center/cover no-repeat;\n content: '';\n inline-size: 100%;\n block-size: 100%;\n pointer-events: none;\n opacity: 0.5;\n }\n\n &::after {\n position: absolute;\n z-index: -1;\n content: '';\n inline-size: 100%;\n block-size: 100%;\n pointer-events: none;\n backdrop-filter: blur(50px);\n }\n\n &:hover {\n .close {\n transform: scale(1);\n }\n }\n }\n\n .open {\n animation: photo-in var(--transition-duration) forwards;\n }\n\n .closeing {\n animation: photo-out var(--transition-duration) forwards;\n }\n\n @keyframes photo-in {\n 0% {\n pointer-events: none;\n }\n\n 100% {\n inline-size: 100vi;\n block-size: 100vb;\n inset-block-start: 0;\n inset-inline-start: 0;\n }\n }\n\n @keyframes photo-out {\n from {\n inline-size: 100vi;\n block-size: 100vb;\n inset-block-start: 0;\n inset-inline-start: 0;\n }\n\n to {\n pointer-events: none;\n }\n }\n`;\n"],"names":["imgCss","style","css"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"+JAEaA,MAAM,mBAANA,GAaAC,KAAK,mBAALA,qBAfO,eAEPD,EAASE,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;AAY1B,CAAC,CACYD,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFzB,CAAC"}
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 } from './code';\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 DatePickerProps, type DatePickerElement } from './date-picker';\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 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 type OpenStateKey,\n OpenState,\n} from './modal';\nexport {\n default as notification,\n type NotificationType,\n type NotificationProps,\n} from './notification';\nexport { default as Pagination, type PaginationProps, type PaginationElement } from './pagination';\nexport { default as Popover, type PopoverElement, type PopoverProps } from './popover';\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 { default as Tabs, type TabOption, type TabsElement, type TabsProps } from './tabs';\nexport { default as Tag, type TagElement, type TagProps } from './tag';\nexport {\n default as theme,\n type ColorScheme,\n type ThemeOption,\n generateTheme,\n toneColor,\n} from './theme';\nexport {\n default as Tree,\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 { default as dayjs } from './date-picker/dayjs';\nexport { default as Provider, type ProviderElement, type ProviderProps } from './provider';\nexport { hot, customElement, noShadowDOM, withSolid, getCurrentElement } from 'solid-element';\nexport type { CustomElement } from 'custom-element-type';\nimport type {\n AvatarElement,\n AvatarGroupElement,\n BackTopElement,\n ButtonElement,\n CaptureScreenElement,\n CarouselElement,\n CheckboxBoolElement,\n CheckboxGroupElement,\n CodeElement,\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 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 '.';\nimport type { ICustomElement, Transform } from 'custom-element-type';\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}\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 interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n export interface IntrinsicElements extends IntrinsicNekoElement {}\n }\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","ColorPalette","ColorPicker","Cron","DatePicker","Dropdown","Empty","FieldName","HighlightText","Img","Input","InputNumber","Md","Menu","Modal","OpenState","Pagination","Popover","Provider","Radio","Segmented","Select","Size","Skeleton","Spin","Status","Switch","Table","Tabs","Tag","Tree","Typography","customElement","dayjs","fromSchema","generateTheme","getCurrentElement","getOptions","hot","mdStyle","noShadowDOM","notification","theme","toneColor","withSolid"],"mappings":"+JAEoBA,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,EAEXC,YAAY,mBAAZA,SAAY,EAKZC,WAAW,mBAAXA,SAAW,EAIJC,IAAI,mBAAJA,SAAI,EACJC,UAAU,mBAAVA,SAAU,EAEjBC,QAAQ,mBAARA,SAAQ,EAMDC,KAAK,mBAALA,SAAK,EAnCmBC,SAAS,mBAATA,WAAS,EAuCxCC,aAAa,mBAAbA,SAAa,EAINC,GAAG,mBAAHA,SAAG,EACHC,KAAK,mBAALA,SAAK,EAEZC,WAAW,mBAAXA,SAAW,EAIJC,EAAE,mBAAFA,SAAE,EAGTC,IAAI,mBAAJA,SAAI,EAQJC,KAAK,mBAALA,SAAK,EAIhBC,SAAS,mBAATA,WAAS,EAOSC,UAAU,mBAAVA,SAAU,EACVC,OAAO,mBAAPA,SAAO,EAwCPC,QAAQ,mBAARA,SAAQ,EAvCRC,KAAK,mBAALA,SAAK,EACLC,SAAS,mBAATA,SAAS,EAEhBC,MAAM,mBAANA,SAAM,EA7EoCC,IAAI,mBAAJA,MAAI,EAmFvCC,QAAQ,mBAARA,SAAQ,EACRC,IAAI,mBAAJA,SAAI,EApFqCC,MAAM,mBAANA,QAAM,EAqF/CC,MAAM,mBAANA,SAAM,EACNC,KAAK,mBAALA,SAAK,EACLC,IAAI,mBAAJA,SAAI,EACJC,GAAG,mBAAHA,SAAG,EASVC,IAAI,mBAAJA,SAAI,EAcGC,UAAU,mBAAVA,SAAU,EAGhBC,aAAa,mBAAbA,eAAa,EAFPC,KAAK,mBAALA,SAAK,EA5ELC,UAAU,mBAAVA,SAAU,EAyD5BC,aAAa,mBAAbA,eAAa,EAqBsCC,iBAAiB,mBAAjBA,mBAAiB,EA7ElDC,UAAU,mBAAVA,SAAU,EA6ErBC,GAAG,mBAAHA,KAAG,EA/DQC,OAAO,mBAAPA,SAAO,EA+DEC,WAAW,mBAAXA,aAAW,EA9C3BC,YAAY,mBAAZA,SAAY,EAsBZC,KAAK,mBAALA,SAAK,EAIhBC,SAAS,mBAATA,WAAS,EAoB+BC,SAAS,mBAATA,WAAS,sBAzHqB,yBAKjE,+BACoE,yBACA,8BACH,yBAKjE,iCACuE,2BAOvE,2BAC2D,uBAK3D,gCAKA,+BAC2D,uBACkB,8BAO7E,2BAC8D,wBAC/B,8BACA,8BAK/B,iCACwD,sBACM,wBAK9D,+BACqD,qBACzB,2BAQ5B,uBAOA,wBAKA,+BAC6E,6BACT,0BACY,wBACN,4BAO1E,yBACuE,2BACZ,uBACM,yBACH,wBACa,uBACnB,sBAOxD,wBAeA,uBAC6E,6BACnD,oCAC6C,yBACA"}
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 } from './code';\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 DatePickerProps, type DatePickerElement } from './date-picker';\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 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 type OpenStateKey,\n OpenState,\n} from './modal';\nexport {\n default as notification,\n type NotificationType,\n type NotificationProps,\n} from './notification';\nexport { default as Pagination, type PaginationProps, type PaginationElement } from './pagination';\nexport { default as Popover, type PopoverElement, type PopoverProps } from './popover';\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 { default as Tabs, type TabOption, type TabsElement, type TabsProps } from './tabs';\nexport { default as Tag, type TagElement, type TagProps } from './tag';\nexport {\n default as theme,\n type ColorScheme,\n type ThemeOption,\n generateTheme,\n toneColor,\n} from './theme';\nexport {\n default as Tree,\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 { default as dayjs } from './date-picker/dayjs';\nexport { default as Provider, type ProviderElement, type ProviderProps } from './provider';\nexport { hot, customElement, noShadowDOM, withSolid, getCurrentElement } from 'solid-element';\nexport type { CustomElement } from 'custom-element-type';\nimport type {\n AvatarElement,\n AvatarGroupElement,\n BackTopElement,\n ButtonElement,\n CaptureScreenElement,\n CarouselElement,\n CheckboxBoolElement,\n CheckboxGroupElement,\n CodeElement,\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 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 '.';\nimport type { ICustomElement, Transform } from 'custom-element-type';\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}\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 interface HTMLElementTagNameMap extends IntrinsicNekoElement {}\n}\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace JSX {\n export interface IntrinsicElements extends IntrinsicNekoElement {}\n }\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","ColorPalette","ColorPicker","Cron","DatePicker","Dropdown","Empty","FieldName","HighlightText","Img","Input","InputNumber","Md","Menu","Modal","OpenState","Pagination","Popover","Provider","Radio","Segmented","Select","Size","Skeleton","Spin","Status","Switch","Table","Tabs","Tag","Tree","Typography","customElement","dayjs","fromSchema","generateTheme","getCurrentElement","getOptions","hot","mdStyle","noShadowDOM","notification","theme","toneColor","withSolid"],"rangeMappings":"","mappings":"+JAEoBA,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,EAEXC,YAAY,mBAAZA,SAAY,EAKZC,WAAW,mBAAXA,SAAW,EAIJC,IAAI,mBAAJA,SAAI,EACJC,UAAU,mBAAVA,SAAU,EAEjBC,QAAQ,mBAARA,SAAQ,EAMDC,KAAK,mBAALA,SAAK,EAnCmBC,SAAS,mBAATA,WAAS,EAuCxCC,aAAa,mBAAbA,SAAa,EAINC,GAAG,mBAAHA,SAAG,EACHC,KAAK,mBAALA,SAAK,EAEZC,WAAW,mBAAXA,SAAW,EAIJC,EAAE,mBAAFA,SAAE,EAGTC,IAAI,mBAAJA,SAAI,EAQJC,KAAK,mBAALA,SAAK,EAIhBC,SAAS,mBAATA,WAAS,EAOSC,UAAU,mBAAVA,SAAU,EACVC,OAAO,mBAAPA,SAAO,EAwCPC,QAAQ,mBAARA,SAAQ,EAvCRC,KAAK,mBAALA,SAAK,EACLC,SAAS,mBAATA,SAAS,EAEhBC,MAAM,mBAANA,SAAM,EA7EoCC,IAAI,mBAAJA,MAAI,EAmFvCC,QAAQ,mBAARA,SAAQ,EACRC,IAAI,mBAAJA,SAAI,EApFqCC,MAAM,mBAANA,QAAM,EAqF/CC,MAAM,mBAANA,SAAM,EACNC,KAAK,mBAALA,SAAK,EACLC,IAAI,mBAAJA,SAAI,EACJC,GAAG,mBAAHA,SAAG,EASVC,IAAI,mBAAJA,SAAI,EAcGC,UAAU,mBAAVA,SAAU,EAGhBC,aAAa,mBAAbA,eAAa,EAFPC,KAAK,mBAALA,SAAK,EA5ELC,UAAU,mBAAVA,SAAU,EAyD5BC,aAAa,mBAAbA,eAAa,EAqBsCC,iBAAiB,mBAAjBA,mBAAiB,EA7ElDC,UAAU,mBAAVA,SAAU,EA6ErBC,GAAG,mBAAHA,KAAG,EA/DQC,OAAO,mBAAPA,SAAO,EA+DEC,WAAW,mBAAXA,aAAW,EA9C3BC,YAAY,mBAAZA,SAAY,EAsBZC,KAAK,mBAALA,SAAK,EAIhBC,SAAS,mBAATA,WAAS,EAoB+BC,SAAS,mBAATA,WAAS,sBAzHqB,yBAKjE,+BACoE,yBACA,8BACH,yBAKjE,iCACuE,2BAOvE,2BAC2D,uBAK3D,gCAKA,+BAC2D,uBACkB,8BAO7E,2BAC8D,wBAC/B,8BACA,8BAK/B,iCACwD,sBACM,wBAK9D,+BACqD,qBACzB,2BAQ5B,uBAOA,wBAKA,+BAC6E,6BACT,0BACY,wBACN,4BAO1E,yBACuE,2BACZ,uBACM,yBACH,wBACa,uBACnB,sBAOxD,wBAeA,uBAC6E,6BACnD,oCAC6C,yBACA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/input/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '..';\n\nexport interface InputProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 前缀 */\n prefixIcon?: JSX.Element;\n /** 后缀 */\n suffixIcon?: JSX.Element;\n /** 大写锁定图标, 可以结合密码输入框使用\n * @since 2.5.2\n */\n capsLockIcon?: JSX.Element;\n /** 禁用 */\n disabled?: boolean;\n /** 自动完成 */\n autoComplete?: string;\n /** 占位文本 */\n placeholder?: string;\n /** 组件尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 描述 */\n label?: JSX.Element;\n /** 状态 */\n status?: 'error' | 'warning' | 'success';\n /** 类型\n * @default 'text'\n */\n type?: 'email' | 'hidden' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url';\n /** HTML attribute: accept */\n accept?: string;\n /** 值 */\n value?: string | number;\n /** 默认值 */\n defaultValue?: string | number;\n /** 值变更时触发的函数 */\n onChange?: (value: InputProps['value']) => void;\n onKeyDown?(e: KeyboardEvent): void;\n onMouseDown?(e: MouseEvent): void;\n onFocus?(e: FocusEvent): void;\n onBlur?(e: FocusEvent): void;\n onKeyUp?(e: KeyboardEvent): void;\n /** 指定输入框展示值的格式 */\n formatter?: (value?: InputProps['value']) => InputProps['value'];\n /** 搭配 formatter 使用, 将转换后的值转回原来的值 */\n parser?: (value?: InputProps['value']) => InputProps['value'];\n}\n\nfunction Input(props: InputProps) {\n const { baseStyle } = theme;\n let inputRef: HTMLInputElement | undefined;\n const [x, setX] = createSignal<string>();\n const [capsLock, setCapsLock] = createSignal(false);\n\n function parserValue(val: InputProps['value']) {\n if (props.parser) {\n return isFunction(props.parser) ? props.parser(val) : props.parser;\n } else if (props.type === 'number' && typeof val === 'string') {\n const num = val.replace(/[^\\d]/g, '');\n\n return num.length ? parseFloat(num) : void 0;\n }\n return val;\n }\n\n function handleInput(e: Event & { target: HTMLInputElement }) {\n props.onChange?.(parserValue(e.target?.value));\n }\n function handleMouseDown(e: MouseEvent) {\n props.onMouseDown?.(e);\n }\n function handleKeyDown(e: KeyboardEvent) {\n if (props.capsLockIcon) {\n setCapsLock(e.getModifierState('CapsLock'));\n }\n props.onKeyDown?.(e);\n }\n function handleBlur(e: FocusEvent) {\n props.onBlur?.(e);\n }\n function handleKeyUp(e: KeyboardEvent) {\n props.onKeyUp?.(e);\n }\n\n const value = createMemo(() => {\n if (props.formatter) {\n return isFunction(props.formatter) ? props.formatter(props.value) : props.formatter;\n }\n return props.value;\n });\n\n createEffect(() => {\n if (props.label) {\n setX(`.label {--x: ${inputRef?.offsetLeft || 0}px;opacity:1;}`);\n }\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {x()}\n {css(props.css)}\n </style>\n <fieldset\n class={cx('fieldset', props.size, props.status, props.class)}\n disabled={props.disabled}\n >\n <Show when={props.prefixIcon}>\n <span class=\"prefix\">{props.prefixIcon}</span>\n </Show>\n <input\n ref={inputRef}\n class=\"input\"\n part=\"input\"\n onChange={handleInput}\n type={props.type}\n value={value()}\n autocomplete={props.autoComplete}\n accept={props.accept}\n placeholder={props.placeholder}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onBlur={handleBlur}\n />\n <Show when={props.label}>\n <label class=\"label\">{props.label}</label>\n </Show>\n <Show when={props.capsLockIcon && capsLock()}>\n <span class=\"caps-lock\">{props.capsLockIcon}</span>\n </Show>\n <Show when={props.suffixIcon}>\n <span class=\"suffix\">{props.suffixIcon}</span>\n </Show>\n </fieldset>\n </>\n );\n}\n\nexport type InputElement = CustomElement<InputProps>;\n\nexport const defaultInportProps = {\n class: void 0,\n css: void 0,\n suffixIcon: void 0,\n prefixIcon: void 0,\n capsLockIcon: void 0,\n size: void 0,\n disabled: void 0,\n status: void 0,\n type: void 0,\n label: void 0,\n value: void 0,\n defaultValue: void 0,\n formatter: void 0,\n parser: void 0,\n onChange: void 0,\n onMouseDown: void 0,\n onKeyDown: void 0,\n accept: void 0,\n autoComplete: void 0,\n placeholder: '请输入',\n};\n\ncustomElement<InputProps>('n-input', defaultInportProps, (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n size: el.size || 'normal',\n value: el.value || el.defaultValue || '',\n type: el.type || 'text',\n onChange(val?: number | string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(Input, props);\n});\n\nexport default Input;\n"],"names":["defaultInportProps","Input","props","inputRef","baseStyle","theme","x","setX","createSignal","capsLock","setCapsLock","handleInput","e","onChange","parserValue","val","parser","isFunction","type","num","replace","length","parseFloat","target","value","handleMouseDown","onMouseDown","handleKeyDown","capsLockIcon","getModifierState","onKeyDown","handleBlur","onBlur","handleKeyUp","onKeyUp","createMemo","formatter","createEffect","label","offsetLeft","style","css","Show","prefixIcon","suffixIcon","cx","size","status","class","disabled","autoComplete","accept","placeholder","defaultValue","customElement","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","detail","createComponent"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/input/index.tsx"],"sourcesContent":["import {\n Show,\n createComponent,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport theme from '../theme';\nimport type { BasicConfig, CustomElement } from '..';\n\nexport interface InputProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 前缀 */\n prefixIcon?: JSX.Element;\n /** 后缀 */\n suffixIcon?: JSX.Element;\n /** 大写锁定图标, 可以结合密码输入框使用\n * @since 2.5.2\n */\n capsLockIcon?: JSX.Element;\n /** 禁用 */\n disabled?: boolean;\n /** 自动完成 */\n autoComplete?: string;\n /** 占位文本 */\n placeholder?: string;\n /** 组件尺寸\n * @default 'normal'\n */\n size?: BasicConfig['size'];\n /** 描述 */\n label?: JSX.Element;\n /** 状态 */\n status?: 'error' | 'warning' | 'success';\n /** 类型\n * @default 'text'\n */\n type?: 'email' | 'hidden' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'url';\n /** HTML attribute: accept */\n accept?: string;\n /** 值 */\n value?: string | number;\n /** 默认值 */\n defaultValue?: string | number;\n /** 值变更时触发的函数 */\n onChange?: (value: InputProps['value']) => void;\n onKeyDown?(e: KeyboardEvent): void;\n onMouseDown?(e: MouseEvent): void;\n onFocus?(e: FocusEvent): void;\n onBlur?(e: FocusEvent): void;\n onKeyUp?(e: KeyboardEvent): void;\n /** 指定输入框展示值的格式 */\n formatter?: (value?: InputProps['value']) => InputProps['value'];\n /** 搭配 formatter 使用, 将转换后的值转回原来的值 */\n parser?: (value?: InputProps['value']) => InputProps['value'];\n}\n\nfunction Input(props: InputProps) {\n const { baseStyle } = theme;\n let inputRef: HTMLInputElement | undefined;\n const [x, setX] = createSignal<string>();\n const [capsLock, setCapsLock] = createSignal(false);\n\n function parserValue(val: InputProps['value']) {\n if (props.parser) {\n return isFunction(props.parser) ? props.parser(val) : props.parser;\n } else if (props.type === 'number' && typeof val === 'string') {\n const num = val.replace(/[^\\d]/g, '');\n\n return num.length ? parseFloat(num) : void 0;\n }\n return val;\n }\n\n function handleInput(e: Event & { target: HTMLInputElement }) {\n props.onChange?.(parserValue(e.target?.value));\n }\n function handleMouseDown(e: MouseEvent) {\n props.onMouseDown?.(e);\n }\n function handleKeyDown(e: KeyboardEvent) {\n if (props.capsLockIcon) {\n setCapsLock(e.getModifierState('CapsLock'));\n }\n props.onKeyDown?.(e);\n }\n function handleBlur(e: FocusEvent) {\n props.onBlur?.(e);\n }\n function handleKeyUp(e: KeyboardEvent) {\n props.onKeyUp?.(e);\n }\n\n const value = createMemo(() => {\n if (props.formatter) {\n return isFunction(props.formatter) ? props.formatter(props.value) : props.formatter;\n }\n return props.value;\n });\n\n createEffect(() => {\n if (props.label) {\n setX(`.label {--x: ${inputRef?.offsetLeft || 0}px;opacity:1;}`);\n }\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {style}\n {x()}\n {css(props.css)}\n </style>\n <fieldset\n class={cx('fieldset', props.size, props.status, props.class)}\n disabled={props.disabled}\n >\n <Show when={props.prefixIcon}>\n <span class=\"prefix\">{props.prefixIcon}</span>\n </Show>\n <input\n ref={inputRef}\n class=\"input\"\n part=\"input\"\n onChange={handleInput}\n type={props.type}\n value={value()}\n autocomplete={props.autoComplete}\n accept={props.accept}\n placeholder={props.placeholder}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onBlur={handleBlur}\n />\n <Show when={props.label}>\n <label class=\"label\">{props.label}</label>\n </Show>\n <Show when={props.capsLockIcon && capsLock()}>\n <span class=\"caps-lock\">{props.capsLockIcon}</span>\n </Show>\n <Show when={props.suffixIcon}>\n <span class=\"suffix\">{props.suffixIcon}</span>\n </Show>\n </fieldset>\n </>\n );\n}\n\nexport type InputElement = CustomElement<InputProps>;\n\nexport const defaultInportProps = {\n class: void 0,\n css: void 0,\n suffixIcon: void 0,\n prefixIcon: void 0,\n capsLockIcon: void 0,\n size: void 0,\n disabled: void 0,\n status: void 0,\n type: void 0,\n label: void 0,\n value: void 0,\n defaultValue: void 0,\n formatter: void 0,\n parser: void 0,\n onChange: void 0,\n onMouseDown: void 0,\n onKeyDown: void 0,\n accept: void 0,\n autoComplete: void 0,\n placeholder: '请输入',\n};\n\ncustomElement<InputProps>('n-input', defaultInportProps, (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n css: el.css,\n size: el.size || 'normal',\n value: el.value || el.defaultValue || '',\n type: el.type || 'text',\n onChange(val?: number | string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(Input, props);\n});\n\nexport default Input;\n"],"names":["defaultInportProps","Input","props","inputRef","baseStyle","theme","x","setX","createSignal","capsLock","setCapsLock","handleInput","e","onChange","parserValue","val","parser","isFunction","type","num","replace","length","parseFloat","target","value","handleMouseDown","onMouseDown","handleKeyDown","capsLockIcon","getModifierState","onKeyDown","handleBlur","onBlur","handleKeyUp","onKeyUp","createMemo","formatter","createEffect","label","offsetLeft","style","css","Show","prefixIcon","suffixIcon","cx","size","status","class","disabled","autoComplete","accept","placeholder","defaultValue","customElement","_","opt","el","element","mergeProps","dispatchEvent","CustomEvent","detail","createComponent"],"rangeMappings":"","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/input/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n .label {\n --x: 0;\n\n position: absolute;\n overflow: hidden;\n border-radius: var(--border-radius);\n padding: 0 4px;\n text-overflow: ellipsis;\n color: var(--text-secondary);\n opacity: 0;\n transition:\n transform var(--transition-duration),\n opacity var(--transition-duration),\n color var(--transition-duration),\n background-color var(--transition-duration);\n line-height: 1.45;\n pointer-events: none;\n transform-origin: left;\n max-inline-size: 100%;\n word-break: keep-all;\n }\n\n .normal {\n padding: 4px 10px;\n font-size: var(--font-size);\n line-height: 1.5;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 10px), 0, 1px);\n }\n }\n\n .large {\n padding: 6px 16px;\n font-size: var(--font-size-lg);\n line-height: 1.5;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 16px), 0, 1px);\n }\n }\n\n .small {\n padding: 2px;\n font-size: var(--font-size-sm);\n line-height: 20px;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 2px), 0, 1px);\n }\n }\n\n .input {\n overflow: hidden;\n border: none;\n font-size: inherit;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: inherit;\n inline-size: inherit;\n background: none;\n outline: none;\n appearance: none;\n flex: 1;\n\n &::placeholder {\n opacity: 0;\n transition:\n color var(--transition-duration),\n opacity var(--transition-duration);\n }\n\n &:focus::placeholder {\n opacity: 1;\n }\n\n &:not(:placeholder-shown) + .label,\n &:focus + .label {\n background: var(--component-bg);\n transform: translate3d(0, calc(-50% - 0.43em), 1px) scale(0.8);\n }\n\n &:focus + .label {\n color: var(--primary-color);\n }\n\n &:not(:placeholder-shown, :focus) + .label {\n color: var(--text-color);\n }\n }\n\n .fieldset {\n position: relative;\n display: flex;\n margin: 0;\n border: 1px solid var(--border-color);\n border-radius: var(--border-radius);\n color: var(--text-color);\n background-color: var(--component-bg);\n transition: all var(--transition-duration);\n inline-size: 100%;\n background-image: none;\n box-sizing: border-box;\n accent-color: var(--primary-color, #5794ff);\n\n &:hover {\n border-color: var(--primary-hover, #80b3ff);\n border-inline-end-width: 1px;\n }\n\n &:focus-within {\n border-color: var(--primary-hover, #80b3ff);\n border-inline-end-width: 1px;\n outline: 0;\n box-shadow: 0 0 0 2px var(--primary-outline);\n }\n\n &:invalid,\n &.error {\n --border-color: var(--error-border);\n --primary-hover: var(--error-hover);\n --primary-outline: var(--error-outline);\n --primary-color: var(--error-color);\n\n .label {\n --text-color: var(--error-color);\n }\n }\n\n &.success {\n --border-color: var(--success-border);\n --primary-hover: var(--success-hover);\n --primary-outline: var(--success-outline);\n --primary-color: var(--success-color);\n\n .label {\n --text-color: var(--success-color);\n }\n }\n\n &.warning {\n --border-color: var(--warning-border);\n --primary-hover: var(--warning-hover);\n --primary-outline: var(--warning-outline);\n --primary-color: var(--warning-color);\n\n .label {\n --text-color: var(--warning-color);\n }\n }\n\n &:disabled {\n --text-color: var(--disable-color);\n --border-color: var(--disable-border);\n --primary-hover: var(--disable-border);\n\n background-color: var(--disable-bg);\n cursor: not-allowed;\n\n .input {\n pointer-events: none;\n\n &:not(:placeholder-shown) + .label {\n background: var(--disable-border);\n }\n }\n }\n }\n\n .prefix {\n margin-inline-end: 4px;\n }\n\n .suffix,\n .caps-lock {\n margin-inline-start: 4px;\n }\n`;\n"],"names":["style","css"],"mappings":"kGAEaA,6CAAAA,qBAFO,eAEPA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkLzB,CAAC"}
1
+ {"version":3,"sources":["../../components/input/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n .label {\n --x: 0;\n\n position: absolute;\n overflow: hidden;\n border-radius: var(--border-radius);\n padding: 0 4px;\n text-overflow: ellipsis;\n color: var(--text-secondary);\n opacity: 0;\n transition:\n transform var(--transition-duration),\n opacity var(--transition-duration),\n color var(--transition-duration),\n background-color var(--transition-duration);\n line-height: 1.45;\n pointer-events: none;\n transform-origin: left;\n max-inline-size: 100%;\n word-break: keep-all;\n }\n\n .normal {\n padding: 4px 10px;\n font-size: var(--font-size);\n line-height: 1.5;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 10px), 0, 1px);\n }\n }\n\n .large {\n padding: 6px 16px;\n font-size: var(--font-size-lg);\n line-height: 1.5;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 16px), 0, 1px);\n }\n }\n\n .small {\n padding: 2px;\n font-size: var(--font-size-sm);\n line-height: 20px;\n\n .label {\n transform: translate3d(calc(var(--x, 0) - 2px), 0, 1px);\n }\n }\n\n .input {\n overflow: hidden;\n border: none;\n font-size: inherit;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: inherit;\n inline-size: inherit;\n background: none;\n outline: none;\n appearance: none;\n flex: 1;\n\n &::placeholder {\n opacity: 0;\n transition:\n color var(--transition-duration),\n opacity var(--transition-duration);\n }\n\n &:focus::placeholder {\n opacity: 1;\n }\n\n &:not(:placeholder-shown) + .label,\n &:focus + .label {\n background: var(--component-bg);\n transform: translate3d(0, calc(-50% - 0.43em), 1px) scale(0.8);\n }\n\n &:focus + .label {\n color: var(--primary-color);\n }\n\n &:not(:placeholder-shown, :focus) + .label {\n color: var(--text-color);\n }\n }\n\n .fieldset {\n position: relative;\n display: flex;\n margin: 0;\n border: 1px solid var(--border-color);\n border-radius: var(--border-radius);\n color: var(--text-color);\n background-color: var(--component-bg);\n transition: all var(--transition-duration);\n inline-size: 100%;\n background-image: none;\n box-sizing: border-box;\n accent-color: var(--primary-color, #5794ff);\n\n &:hover {\n border-color: var(--primary-hover, #80b3ff);\n border-inline-end-width: 1px;\n }\n\n &:focus-within {\n border-color: var(--primary-hover, #80b3ff);\n border-inline-end-width: 1px;\n outline: 0;\n box-shadow: 0 0 0 2px var(--primary-outline);\n }\n\n &:invalid,\n &.error {\n --border-color: var(--error-border);\n --primary-hover: var(--error-hover);\n --primary-outline: var(--error-outline);\n --primary-color: var(--error-color);\n\n .label {\n --text-color: var(--error-color);\n }\n }\n\n &.success {\n --border-color: var(--success-border);\n --primary-hover: var(--success-hover);\n --primary-outline: var(--success-outline);\n --primary-color: var(--success-color);\n\n .label {\n --text-color: var(--success-color);\n }\n }\n\n &.warning {\n --border-color: var(--warning-border);\n --primary-hover: var(--warning-hover);\n --primary-outline: var(--warning-outline);\n --primary-color: var(--warning-color);\n\n .label {\n --text-color: var(--warning-color);\n }\n }\n\n &:disabled {\n --text-color: var(--disable-color);\n --border-color: var(--disable-border);\n --primary-hover: var(--disable-border);\n\n background-color: var(--disable-bg);\n cursor: not-allowed;\n\n .input {\n pointer-events: none;\n\n &:not(:placeholder-shown) + .label {\n background: var(--disable-border);\n }\n }\n }\n }\n\n .prefix {\n margin-inline-end: 4px;\n }\n\n .suffix,\n .caps-lock {\n margin-inline-start: 4px;\n }\n`;\n"],"names":["style","css"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"kGAEaA,6CAAAA,qBAFO,eAEPA,EAAQC,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkLzB,CAAC"}
@@ -1,4 +1,4 @@
1
- "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return m}});const t=require("solid-js/web"),n=require("solid-js"),r=(e=require("@moneko/common/lib/passiveSupported"))&&e.__esModule?e:{default:e},o=require("@moneko/css"),u=require("solid-element"),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var i=o?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(r,u,i):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r}(require("../input"));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}const s=(0,o.css)`
1
+ "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return m}});const t=require("solid-js/web"),n=require("solid-js"),r=(e=require("@moneko/common/lib/passiveSupported"))&&e.__esModule?e:{default:e},o=require("@moneko/css"),u=require("solid-element"),i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(void 0);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var i=o?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(r,u,i):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r}(require("../input"));function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}const s=(0,o.css)`
2
2
  /** 隐藏原生加减控件 */
3
3
  .number[type='number'] {
4
4
  appearance: textfield;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/input-number/index.tsx"],"sourcesContent":["import { createComponent, createEffect, createSignal, mergeProps, onCleanup } from 'solid-js';\nimport { passiveSupported } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport Input, { defaultInportProps } from '../input';\nimport type { CustomElement, InputProps } from '..';\n\nconst style = css`\n /** 隐藏原生加减控件 */\n .number[type='number'] {\n appearance: textfield;\n }\n\n .number[type='number']::-webkit-inner-spin-button,\n .number[type='number']::-webkit-outer-spin-button {\n appearance: none;\n }\n`;\n\n/** API\n * @since 2.0.0\n */\nexport interface InputNumberProps extends Omit<InputProps, 'value' | 'defaultValue' | 'onChange'> {\n /** 值 */\n value?: number;\n /** 默认值\n * @default 0\n */\n defaultValue?: number;\n /** 最小值\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /** 最大值\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /** 值变更时触发的函数 */\n onChange?: (value?: number) => void;\n /** 每次改变步数,可以为小数\n * @default 1\n */\n step?: number;\n /** 数值精度\n * @default 2\n */\n precision?: number;\n}\nexport type InputNumberElement = CustomElement<InputNumberProps>;\n\nfunction InputNumber(props: InputNumberProps) {\n const [move, setMove] = createSignal(false);\n\n function onMouseDown(e: MouseEvent) {\n e.stopPropagation();\n setMove(true);\n }\n function onKeyDown(e: KeyboardEvent) {\n switch (e.key) {\n case 'ArrowUp':\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n mouseMove({ movementX: 0, movementY: -1 });\n break;\n case 'ArrowDown':\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n mouseMove({ movementX: 0, movementY: 1 });\n break;\n default:\n break;\n }\n }\n function mouseUp() {\n setMove(false);\n }\n const _ = mergeProps(\n {\n size: 'normal',\n value: '',\n defaultValue: 0,\n type: 'text',\n onKeyDown: onKeyDown,\n onMouseDown: onMouseDown,\n step: 1,\n precision: 2,\n max: Number.MAX_SAFE_INTEGER,\n min: Number.MIN_SAFE_INTEGER,\n },\n props,\n );\n\n function change(val?: string | number) {\n let _val = typeof val === 'string' ? parseFloat(val) : val;\n\n if (isNaN(_val as number)) {\n _val = '' as unknown as number;\n }\n if (typeof _val !== 'undefined') {\n if (_val < (_.min as number)) _val = _.min;\n if ((_val as number) > (_.max as number)) _val = _.max;\n }\n props.onChange?.(_val);\n }\n\n function mouseMove(e: { movementX: number; movementY: number }) {\n const { movementX, movementY } = e;\n const _val = _.value;\n const val = typeof _val === 'number' && !isNaN(_val) ? _val : Number(_val) || 0;\n\n change(Number(Number(val + (movementX - movementY) * (_.step as number)).toFixed(_.precision)));\n }\n\n createEffect(() => {\n if (move()) {\n document.body.addEventListener('mousemove', mouseMove, {\n passive: passiveSupported,\n });\n document.body.addEventListener('mouseup', mouseUp, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n document.body.removeEventListener('mousemove', mouseMove, false);\n document.body.removeEventListener('mouseup', mouseUp, passiveSupported);\n });\n });\n\n return (\n <Input\n {...(_ as InputProps)}\n class={cx('number', props.class)}\n onChange={change}\n css={style + (props.css || '')}\n />\n );\n}\n\ncustomElement<InputNumberProps>(\n 'n-input-number',\n {\n ...defaultInportProps,\n defaultValue: void 0,\n max: void 0,\n min: void 0,\n onChange: void 0,\n step: void 0,\n precision: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onChange(val?: number | string) {\n el.value = val;\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(InputNumber, props);\n },\n);\n\nexport default InputNumber;\n"],"names":["style","css","InputNumber","props","move","setMove","createSignal","mouseUp","_","mergeProps","size","value","defaultValue","type","onKeyDown","e","key","mouseMove","movementX","movementY","onMouseDown","stopPropagation","step","precision","max","Number","MAX_SAFE_INTEGER","min","MIN_SAFE_INTEGER","change","val","_val","parseFloat","isNaN","onChange","toFixed","createEffect","document","body","addEventListener","passive","passiveSupported","onCleanup","removeEventListener","Input","cx","class","customElement","defaultInportProps","opt","el","element","dispatchEvent","CustomEvent","detail","createComponent"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/input-number/index.tsx"],"sourcesContent":["import { createComponent, createEffect, createSignal, mergeProps, onCleanup } from 'solid-js';\nimport { passiveSupported } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport Input, { defaultInportProps } from '../input';\nimport type { CustomElement, InputProps } from '..';\n\nconst style = css`\n /** 隐藏原生加减控件 */\n .number[type='number'] {\n appearance: textfield;\n }\n\n .number[type='number']::-webkit-inner-spin-button,\n .number[type='number']::-webkit-outer-spin-button {\n appearance: none;\n }\n`;\n\n/** API\n * @since 2.0.0\n */\nexport interface InputNumberProps extends Omit<InputProps, 'value' | 'defaultValue' | 'onChange'> {\n /** 值 */\n value?: number;\n /** 默认值\n * @default 0\n */\n defaultValue?: number;\n /** 最小值\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /** 最大值\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /** 值变更时触发的函数 */\n onChange?: (value?: number) => void;\n /** 每次改变步数,可以为小数\n * @default 1\n */\n step?: number;\n /** 数值精度\n * @default 2\n */\n precision?: number;\n}\nexport type InputNumberElement = CustomElement<InputNumberProps>;\n\nfunction InputNumber(props: InputNumberProps) {\n const [move, setMove] = createSignal(false);\n\n function onMouseDown(e: MouseEvent) {\n e.stopPropagation();\n setMove(true);\n }\n function onKeyDown(e: KeyboardEvent) {\n switch (e.key) {\n case 'ArrowUp':\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n mouseMove({ movementX: 0, movementY: -1 });\n break;\n case 'ArrowDown':\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n mouseMove({ movementX: 0, movementY: 1 });\n break;\n default:\n break;\n }\n }\n function mouseUp() {\n setMove(false);\n }\n const _ = mergeProps(\n {\n size: 'normal',\n value: '',\n defaultValue: 0,\n type: 'text',\n onKeyDown: onKeyDown,\n onMouseDown: onMouseDown,\n step: 1,\n precision: 2,\n max: Number.MAX_SAFE_INTEGER,\n min: Number.MIN_SAFE_INTEGER,\n },\n props,\n );\n\n function change(val?: string | number) {\n let _val = typeof val === 'string' ? parseFloat(val) : val;\n\n if (isNaN(_val as number)) {\n _val = '' as unknown as number;\n }\n if (typeof _val !== 'undefined') {\n if (_val < (_.min as number)) _val = _.min;\n if ((_val as number) > (_.max as number)) _val = _.max;\n }\n props.onChange?.(_val);\n }\n\n function mouseMove(e: { movementX: number; movementY: number }) {\n const { movementX, movementY } = e;\n const _val = _.value;\n const val = typeof _val === 'number' && !isNaN(_val) ? _val : Number(_val) || 0;\n\n change(Number(Number(val + (movementX - movementY) * (_.step as number)).toFixed(_.precision)));\n }\n\n createEffect(() => {\n if (move()) {\n document.body.addEventListener('mousemove', mouseMove, {\n passive: passiveSupported,\n });\n document.body.addEventListener('mouseup', mouseUp, {\n passive: passiveSupported,\n });\n }\n onCleanup(() => {\n document.body.removeEventListener('mousemove', mouseMove, false);\n document.body.removeEventListener('mouseup', mouseUp, passiveSupported);\n });\n });\n\n return (\n <Input\n {...(_ as InputProps)}\n class={cx('number', props.class)}\n onChange={change}\n css={style + (props.css || '')}\n />\n );\n}\n\ncustomElement<InputNumberProps>(\n 'n-input-number',\n {\n ...defaultInportProps,\n defaultValue: void 0,\n max: void 0,\n min: void 0,\n onChange: void 0,\n step: void 0,\n precision: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onChange(val?: number | string) {\n el.value = val;\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n return createComponent(InputNumber, props);\n },\n);\n\nexport default InputNumber;\n"],"names":["style","css","InputNumber","props","move","setMove","createSignal","mouseUp","_","mergeProps","size","value","defaultValue","type","onKeyDown","e","key","mouseMove","movementX","movementY","onMouseDown","stopPropagation","step","precision","max","Number","MAX_SAFE_INTEGER","min","MIN_SAFE_INTEGER","change","val","_val","parseFloat","isNaN","onChange","toFixed","createEffect","document","body","addEventListener","passive","passiveSupported","onCleanup","removeEventListener","Input","cx","class","customElement","defaultInportProps","opt","el","element","dispatchEvent","CustomEvent","detail","createComponent"],"rangeMappings":";;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/katex/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"sources":["../../components/katex/index.ts"],"names":[],"rangeMappings":"","mappings":""}
package/lib/md/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return g}});const e=require("solid-js/web"),t=require("solid-js"),r=require("@moneko/css"),n=l(require("marked-completed")),o=require("solid-element");require("../code"),require("../img");const i=l(require("../md-style")),c=l(require("../theme"));function l(e){return e&&e.__esModule?e:{default:e}}const a=(0,e.template)("<style>"),s=(0,e.template)('<article class="n-md-box" part="box"><div class="n-md-body" part="body">'),u=(0,e.template)('<article part="box">');function d(e){return`<n-katex display-mode="true">${e}</n-katex>`}function h(e){return`<n-katex>${e}</n-katex>`}function f(e,t,r){return`<img role="img" src="${e}" alt="${r}" ${t?`title="${t}"`:""}></img>`}function m(e,t,r){return`<n-img role="img" src="${e}" alt="${r}" ${t?`title="${t}"`:""}></n-img>`}function p(o){let l;let p=new n.default.Renderer;p.katexBlock=d,p.katexInline=h;let{baseStyle:g}=c.default,v=(0,t.mergeProps)({pictureViewer:!0,text:"",tools:["copy"],getAnchorContainer:()=>window},o);(0,t.createEffect)(()=>{!function(e){var t;let{text:r,pictureViewer:o,langToolbar:i,...c}=e;p.image=o?m:f;let a=!!i?.length;p.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${a}" lang="${t}" ${c.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},t={data:(0,n.default)(r,{renderer:p,langToolbar:i,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0,...c})},l&&(l.innerHTML=t.data)}({text:v.text,langLineNumber:v.lineNumber,langToolbar:v.tools,pictureViewer:v.pictureViewer})});let x=[],b=[],w=[];function C(e){e.preventDefault(),e.stopPropagation();let t=e.target;t.hash?(l?.querySelector(decodeURIComponent(t.hash))?.scrollIntoView({behavior:"smooth",block:"nearest"}),x.forEach(e=>e.classList.remove("active")),t.classList.add("active")):window.open(t.href)}function $(e){e.forEach(e=>{let t;let r=e.target.getAttribute("id"),n=e.target.querySelectorAll("a");if(x.forEach(e=>{e.hash===`#${r}`?t=e:e.hash||n.forEach(r=>{r.href===e.href&&(t=e)})}),t){let r=w.indexOf(t);w.forEach(e=>{e.classList.remove("active")}),e.isIntersecting?w.push(t):-1!==r&&w.splice(r,1),w[0]&&(w[0].classList.add("active"),w[0].offsetParent?.scrollTo({top:w[0].offsetTop}))}})}return(0,t.createEffect)(()=>{let e;l&&v.text?.startsWith("[TOC]")&&(x=[...l.querySelectorAll(".n-md-toc a[href]")],b=[...l.querySelectorAll("h1, h2, h3, h4, h5, h6")],e=new IntersectionObserver($,{rootMargin:"-50px 0px",threshold:.5}),b.forEach(t=>e.observe(t)),x.forEach(e=>{e.addEventListener("click",C)})),(0,t.onCleanup)(()=>{e&&(b.forEach(t=>e.unobserve(t)),e.disconnect()),x.forEach(e=>{e.removeEventListener("click",C)})})}),[(()=>{let t=a();return(0,e.insert)(t,g,null),(0,e.insert)(t,i.default,null),(0,e.insert)(t,()=>(0,r.css)(v.css),null),t})(),(0,e.createComponent)(t.Switch,{get children(){return[(0,e.createComponent)(t.Match,{get when(){return v.children?.length},get children(){let r=s(),n=r.firstChild;return(0,e.insert)(n,(0,e.createComponent)(t.For,{get each(){return v.children},children:e=>e})),r}}),(0,e.createComponent)(t.Match,{get when(){return v.text},get children(){let t=u(),n=l;return"function"==typeof n?(0,e.use)(n,t):l=t,(0,e.effect)(()=>(0,e.className)(t,(0,r.cx)("n-md-box",v.class))),t}})]}})]}(0,o.customElement)("n-md",{class:void 0,pictureViewer:void 0,lineNumber:!0,text:void 0,tools:void 0,getAnchorContainer:void 0,css:void 0,children:void 0,notRender:void 0},(e,r)=>{let n=r.element,o=(0,t.mergeProps)({text:!e.notRender&&n.textContent||n.text,css:n.css,tools:n.tools,getAnchorContainer:n.getAnchorContainer},e);return(0,t.createEffect)(()=>{n.removeAttribute("css"),n.replaceChildren()}),(0,t.createComponent)(p,o)});const g=p;
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=a(require("@moneko/common/lib/frameCallback")),n=require("@moneko/css"),o=a(require("marked-completed")),i=require("solid-element");require("../code"),require("../img");const l=a(require("../md-style")),c=a(require("../theme"));function a(e){return e&&e.__esModule?e:{default:e}}const s=(0,e.template)("<style>"),u=(0,e.template)('<article class="n-md-box" part="box"><div class="n-md-body" part="body">'),d=(0,e.template)('<article part="box">');function h(e){return`<n-katex display-mode="true">${e}</n-katex>`}function m(e){return`<n-katex>${e}</n-katex>`}function f(e,t,r){return`<img role="img" src="${e}" alt="${r}" ${t?`title="${t}"`:""}></img>`}function p(e,t,r){return`<n-img role="img" src="${e}" alt="${r}" ${t?`title="${t}"`:""}></n-img>`}function g(i){let a;let g=new o.default.Renderer;g.katexBlock=h,g.katexInline=m;let{baseStyle:b}=c.default,v=(0,t.mergeProps)({pictureViewer:!0,text:"",tools:["copy"],getAnchorContainer:()=>window},i);(0,t.createEffect)(()=>{(0,r.default)(()=>(function(e){var t;let{text:r,pictureViewer:n,langToolbar:i,...l}=e;g.image=n?p:f;let c=!!i?.length;g.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${c}" lang="${t}" ${l.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},t={data:(0,o.default)(r,{renderer:g,langToolbar:i,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0,...l})},a&&(a.innerHTML=t.data)})({text:v.text,langLineNumber:v.lineNumber,langToolbar:v.tools,pictureViewer:v.pictureViewer}))});let x=[],C=[],w=[];function $(e){e.preventDefault(),e.stopPropagation();let t=e.target;t.hash?(a?.querySelector(decodeURIComponent(t.hash))?.scrollIntoView({behavior:"smooth",block:"nearest"}),x.forEach(e=>e.classList.remove("active")),t.classList.add("active")):window.open(t.href)}function k(e){e.forEach(e=>{let t;let r=e.target.getAttribute("id"),n=e.target.querySelectorAll("a");if(x.forEach(e=>{e.hash===`#${r}`?t=e:e.hash||n.forEach(r=>{r.href===e.href&&(t=e)})}),t){let r=w.indexOf(t);w.forEach(e=>{e.classList.remove("active")}),e.isIntersecting?w.push(t):-1!==r&&w.splice(r,1),w[0]&&(w[0].classList.add("active"),w[0].offsetParent?.scrollTo({top:w[0].offsetTop}))}})}return(0,t.createEffect)(()=>{let e;a&&v.text?.startsWith("[TOC]")&&(x=[...a.querySelectorAll(".n-md-toc a[href]")],C=[...a.querySelectorAll("h1, h2, h3, h4, h5, h6")],e=new IntersectionObserver(k,{rootMargin:"-50px 0px",threshold:.5}),C.forEach(t=>e.observe(t)),x.forEach(e=>{e.addEventListener("click",$)})),(0,t.onCleanup)(()=>{e&&(C.forEach(t=>e.unobserve(t)),e.disconnect()),x.forEach(e=>{e.removeEventListener("click",$)})})}),[(()=>{let t=s();return(0,e.insert)(t,b,null),(0,e.insert)(t,l.default,null),(0,e.insert)(t,()=>(0,n.css)(v.css),null),t})(),(0,e.createComponent)(t.Switch,{get children(){return[(0,e.createComponent)(t.Match,{get when(){return v.children?.length},get children(){let r=u(),n=r.firstChild;return(0,e.insert)(n,(0,e.createComponent)(t.For,{get each(){return v.children},children:e=>e})),r}}),(0,e.createComponent)(t.Match,{get when(){return v.text},get children(){let t=d(),r=a;return"function"==typeof r?(0,e.use)(r,t):a=t,(0,e.effect)(()=>(0,e.className)(t,(0,n.cx)("n-md-box",v.class))),t}})]}})]}(0,i.customElement)("n-md",{class:void 0,pictureViewer:void 0,lineNumber:!0,text:void 0,tools:void 0,getAnchorContainer:void 0,css:void 0,children:void 0,notRender:void 0},(e,r)=>{let n=r.element,o=(0,t.mergeProps)({text:!e.notRender&&n.textContent||n.text,css:n.css,tools:n.tools,getAnchorContainer:n.getAnchorContainer},e);return(0,t.createEffect)(()=>{n.removeAttribute("css"),n.replaceChildren()}),(0,t.createComponent)(g,o)});const b=g;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/md/index.tsx"],"sourcesContent":["import { For, Match, Switch, createComponent, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport marked from 'marked-completed';\nimport { customElement } from 'solid-element';\nimport '../code';\nimport '../img';\nimport mdStyle from '../md-style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nfunction katexBlock(code: string) {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n}\nfunction katexInline(code: string) {\n return `<n-katex>${code}</n-katex>`;\n}\nfunction img(src: string, title: string, alt: string) {\n return `<img role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></img>`;\n}\nfunction nImg(src: string, title: string, alt: string) {\n return `<n-img role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n}\nfunction MD(_props: MdProps) {\n let ref: HTMLDivElement | undefined;\n const renderer = new marked.Renderer();\n\n renderer.katexBlock = katexBlock;\n renderer.katexInline = katexInline;\n const { baseStyle } = theme;\n const props = mergeProps(\n {\n pictureViewer: true,\n text: '',\n tools: ['copy'],\n getAnchorContainer: () => window as unknown as HTMLElement,\n },\n _props,\n );\n\n function update(e: { data: string }) {\n if (ref) {\n ref.innerHTML = e.data;\n }\n }\n function postMessage(opt: {\n text: string;\n pictureViewer?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n }) {\n const { text, pictureViewer, langToolbar, ...options } = opt;\n\n renderer.image = pictureViewer ? nImg : img;\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" lang=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n update({\n data: marked(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n }),\n });\n }\n // const work = new Worker(new URL('./worker.ts', import.meta.url));\n\n // work.addEventListener('message', update);\n // work.postMessage({\n // text: props.text,\n // langLineNumber: props.lineNumber,\n // langToolbar: props.tools,\n // pictureViewer: props.pictureViewer,\n // });\n // onCleanup(() => {\n // work.terminate();\n // });\n createEffect(() => {\n postMessage({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n });\n });\n let list: HTMLAnchorElement[] = [];\n let heading: HTMLHeadingElement[] = [];\n const active: HTMLAnchorElement[] = [];\n\n function handleAnchor(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n const a = e.target as HTMLAnchorElement;\n\n if (a.hash) {\n ref?.querySelector(decodeURIComponent(a.hash))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n list.forEach((item) => item.classList.remove('active'));\n a.classList.add('active');\n } else {\n window.open(a.href);\n }\n }\n function observerEntry(entries: IntersectionObserverEntry[]) {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const all = entry.target.querySelectorAll('a');\n let a: HTMLAnchorElement | undefined;\n\n list.forEach((l) => {\n if (l.hash === `#${id}`) {\n a = l;\n } else if (!l.hash) {\n all.forEach((e) => {\n if (e.href === l.href) {\n a = l;\n }\n });\n }\n });\n if (a) {\n const idx = active.indexOf(a);\n\n active.forEach((e) => {\n e.classList.remove('active');\n });\n if (entry.isIntersecting) {\n active.push(a);\n } else if (idx !== -1) {\n active.splice(idx, 1);\n }\n if (active[0]) {\n active[0].classList.add('active');\n active[0].offsetParent?.scrollTo({\n top: active[0].offsetTop,\n });\n }\n }\n });\n }\n createEffect(() => {\n let observer: IntersectionObserver;\n\n if (ref && props.text?.startsWith('[TOC]')) {\n list = [...ref.querySelectorAll<HTMLAnchorElement>('.n-md-toc a[href]')];\n heading = [...ref.querySelectorAll<HTMLHeadingElement>('h1, h2, h3, h4, h5, h6')];\n\n observer = new IntersectionObserver(observerEntry, {\n rootMargin: '-50px 0px',\n threshold: 0.5,\n });\n\n heading.forEach((e) => observer.observe(e));\n list.forEach((e) => {\n e.addEventListener('click', handleAnchor);\n });\n }\n onCleanup(() => {\n if (observer) {\n heading.forEach((e) => observer.unobserve(e));\n observer.disconnect();\n }\n list.forEach((e) => {\n e.removeEventListener('click', handleAnchor);\n });\n });\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {mdStyle}\n {css(props.css)}\n </style>\n <Switch>\n <Match when={(props.children as [])?.length}>\n <article class=\"n-md-box\" part=\"box\">\n <div class=\"n-md-body\" part=\"body\">\n <For each={props.children as []}>{(e) => <>{e}</>}</For>\n </div>\n </article>\n </Match>\n <Match when={props.text}>\n <article ref={ref} class={cx('n-md-box', props.class)} part=\"box\" />\n </Match>\n </Switch>\n </>\n );\n}\n\nexport interface MdProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** md内容 */\n text?: string;\n /** 开启图片查看器\n * @since 2.0.8\n * @default true\n */\n pictureViewer?: boolean;\n /** 显示代码块行号\n * @default true\n */\n lineNumber?: boolean;\n /** 开启代码块工具条\n * @default ['copy']\n */\n tools?: 'copy'[];\n /** 指定滚动的容器\n * @default () => window\n */\n getAnchorContainer?: () => HTMLElement;\n /** 不进行解析\n * @default false\n */\n notRender?: boolean;\n children?: JSX.Element;\n}\n\nexport type MdElement = CustomElement<MdProps>;\n\ncustomElement<MdProps>(\n 'n-md',\n {\n class: void 0,\n pictureViewer: void 0,\n lineNumber: true,\n text: void 0,\n tools: void 0,\n getAnchorContainer: void 0,\n css: void 0,\n children: void 0,\n notRender: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: (!_.notRender && el.textContent) || el.text,\n css: el.css,\n tools: el.tools,\n getAnchorContainer: el.getAnchorContainer,\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.replaceChildren();\n });\n return createComponent(MD, props);\n },\n);\nexport default MD;\n"],"names":["katexBlock","code","katexInline","img","src","title","alt","nImg","MD","_props","ref","renderer","marked","Renderer","baseStyle","theme","props","mergeProps","pictureViewer","text","tools","getAnchorContainer","window","createEffect","postMessage","opt","e","langToolbar","options","image","toolbar","length","lang","langLineNumber","encodeURIComponent","data","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","innerHTML","lineNumber","list","heading","active","handleAnchor","preventDefault","stopPropagation","a","target","hash","querySelector","decodeURIComponent","scrollIntoView","behavior","block","forEach","item","classList","remove","add","open","href","observerEntry","entries","entry","id","getAttribute","all","querySelectorAll","l","idx","indexOf","isIntersecting","push","splice","offsetParent","scrollTo","top","offsetTop","observer","startsWith","IntersectionObserver","rootMargin","threshold","observe","addEventListener","onCleanup","unobserve","disconnect","removeEventListener","mdStyle","css","Switch","Match","children","For","cx","class","customElement","notRender","_","el","element","textContent","removeAttribute","replaceChildren","createComponent"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/md/index.tsx"],"sourcesContent":["import { For, Match, Switch, createComponent, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { frameCallback } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport marked from 'marked-completed';\nimport { customElement } from 'solid-element';\nimport '../code';\nimport '../img';\nimport mdStyle from '../md-style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nfunction katexBlock(code: string) {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n}\nfunction katexInline(code: string) {\n return `<n-katex>${code}</n-katex>`;\n}\nfunction img(src: string, title: string, alt: string) {\n return `<img role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></img>`;\n}\nfunction nImg(src: string, title: string, alt: string) {\n return `<n-img role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n}\nfunction MD(_props: MdProps) {\n let ref: HTMLDivElement | undefined;\n const renderer = new marked.Renderer();\n\n renderer.katexBlock = katexBlock;\n renderer.katexInline = katexInline;\n const { baseStyle } = theme;\n const props = mergeProps(\n {\n pictureViewer: true,\n text: '',\n tools: ['copy'],\n getAnchorContainer: () => window as unknown as HTMLElement,\n },\n _props,\n );\n\n function update(e: { data: string }) {\n if (ref) {\n ref.innerHTML = e.data;\n }\n }\n function postMessage(opt: {\n text: string;\n pictureViewer?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n }) {\n const { text, pictureViewer, langToolbar, ...options } = opt;\n\n renderer.image = pictureViewer ? nImg : img;\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" lang=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n update({\n data: marked(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n }),\n });\n }\n // const work = new Worker(new URL('./worker.ts', import.meta.url));\n\n // work.addEventListener('message', update);\n // work.postMessage({\n // text: props.text,\n // langLineNumber: props.lineNumber,\n // langToolbar: props.tools,\n // pictureViewer: props.pictureViewer,\n // });\n // onCleanup(() => {\n // work.terminate();\n // });\n createEffect(() => {\n const call = () =>\n postMessage({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n });\n\n frameCallback(call);\n });\n let list: HTMLAnchorElement[] = [];\n let heading: HTMLHeadingElement[] = [];\n const active: HTMLAnchorElement[] = [];\n\n function handleAnchor(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n const a = e.target as HTMLAnchorElement;\n\n if (a.hash) {\n ref?.querySelector(decodeURIComponent(a.hash))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n list.forEach((item) => item.classList.remove('active'));\n a.classList.add('active');\n } else {\n window.open(a.href);\n }\n }\n function observerEntry(entries: IntersectionObserverEntry[]) {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const all = entry.target.querySelectorAll('a');\n let a: HTMLAnchorElement | undefined;\n\n list.forEach((l) => {\n if (l.hash === `#${id}`) {\n a = l;\n } else if (!l.hash) {\n all.forEach((e) => {\n if (e.href === l.href) {\n a = l;\n }\n });\n }\n });\n if (a) {\n const idx = active.indexOf(a);\n\n active.forEach((e) => {\n e.classList.remove('active');\n });\n if (entry.isIntersecting) {\n active.push(a);\n } else if (idx !== -1) {\n active.splice(idx, 1);\n }\n if (active[0]) {\n active[0].classList.add('active');\n active[0].offsetParent?.scrollTo({\n top: active[0].offsetTop,\n });\n }\n }\n });\n }\n createEffect(() => {\n let observer: IntersectionObserver;\n\n if (ref && props.text?.startsWith('[TOC]')) {\n list = [...ref.querySelectorAll<HTMLAnchorElement>('.n-md-toc a[href]')];\n heading = [...ref.querySelectorAll<HTMLHeadingElement>('h1, h2, h3, h4, h5, h6')];\n\n observer = new IntersectionObserver(observerEntry, {\n rootMargin: '-50px 0px',\n threshold: 0.5,\n });\n\n heading.forEach((e) => observer.observe(e));\n list.forEach((e) => {\n e.addEventListener('click', handleAnchor);\n });\n }\n onCleanup(() => {\n if (observer) {\n heading.forEach((e) => observer.unobserve(e));\n observer.disconnect();\n }\n list.forEach((e) => {\n e.removeEventListener('click', handleAnchor);\n });\n });\n });\n\n return (\n <>\n <style>\n {baseStyle()}\n {mdStyle}\n {css(props.css)}\n </style>\n <Switch>\n <Match when={(props.children as [])?.length}>\n <article class=\"n-md-box\" part=\"box\">\n <div class=\"n-md-body\" part=\"body\">\n <For each={props.children as []}>{(e) => e}</For>\n </div>\n </article>\n </Match>\n <Match when={props.text}>\n <article ref={ref} class={cx('n-md-box', props.class)} part=\"box\" />\n </Match>\n </Switch>\n </>\n );\n}\n\nexport interface MdProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** md内容 */\n text?: string;\n /** 开启图片查看器\n * @since 2.0.8\n * @default true\n */\n pictureViewer?: boolean;\n /** 显示代码块行号\n * @default true\n */\n lineNumber?: boolean;\n /** 开启代码块工具条\n * @default ['copy']\n */\n tools?: 'copy'[];\n /** 指定滚动的容器\n * @default () => window\n */\n getAnchorContainer?: () => HTMLElement;\n /** 不进行解析\n * @default false\n */\n notRender?: boolean;\n children?: JSX.Element;\n}\n\nexport type MdElement = CustomElement<MdProps>;\n\ncustomElement<MdProps>(\n 'n-md',\n {\n class: void 0,\n pictureViewer: void 0,\n lineNumber: true,\n text: void 0,\n tools: void 0,\n getAnchorContainer: void 0,\n css: void 0,\n children: void 0,\n notRender: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: (!_.notRender && el.textContent) || el.text,\n css: el.css,\n tools: el.tools,\n getAnchorContainer: el.getAnchorContainer,\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.replaceChildren();\n });\n return createComponent(MD, props);\n },\n);\nexport default MD;\n"],"names":["katexBlock","code","katexInline","img","src","title","alt","nImg","MD","_props","ref","renderer","marked","Renderer","baseStyle","theme","props","mergeProps","pictureViewer","text","tools","getAnchorContainer","window","createEffect","frameCallback","postMessage","opt","e","langToolbar","options","image","toolbar","length","lang","langLineNumber","encodeURIComponent","data","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","innerHTML","lineNumber","list","heading","active","handleAnchor","preventDefault","stopPropagation","a","target","hash","querySelector","decodeURIComponent","scrollIntoView","behavior","block","forEach","item","classList","remove","add","open","href","observerEntry","entries","entry","id","getAttribute","all","querySelectorAll","l","idx","indexOf","isIntersecting","push","splice","offsetParent","scrollTo","top","offsetTop","observer","startsWith","IntersectionObserver","rootMargin","threshold","observe","addEventListener","onCleanup","unobserve","disconnect","removeEventListener","mdStyle","css","Switch","Match","children","For","cx","class","customElement","notRender","_","el","element","textContent","removeAttribute","replaceChildren","createComponent"],"rangeMappings":"","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/md/worker.ts"],"sourcesContent":["self.importScripts(new URL('marked-completed/marked.min.js', import.meta.url).toString());\n\nconst renderer = new self.marked.Renderer();\n\nrenderer.katexBlock = function (code: string) {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n};\nrenderer.katexInline = function (code: string) {\n return `<n-katex>${code}</n-katex>`;\n};\nfunction img(src: string, title: string, alt: string) {\n return `<img role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></img>`;\n}\nfunction nImg(src: string, title: string, alt: string) {\n return `<n-img role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n}\nself.addEventListener(\n 'message',\n function (e) {\n let result;\n\n try {\n const { text, pictureViewer, ...options } = e.data;\n const langLineNumber = options.langLineNumber;\n\n renderer.image = pictureViewer ? nImg : img;\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n const toolbar = !!options.langToolbar?.length;\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" lang=\"${lang}\" ${\n langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n result = self.marked(text, {\n renderer: renderer,\n langToolbar: false,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n });\n } catch (error) {\n result = error;\n }\n self.postMessage(result);\n },\n false,\n);\n"],"names":["self","importScripts","URL","toString","renderer","marked","Renderer","img","src","title","alt","nImg","katexBlock","code","katexInline","addEventListener","e","result","text","pictureViewer","options","data","langLineNumber","image","lang","toolbar","langToolbar","length","encodeURIComponent","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","error","postMessage"],"mappings":"aAAAA,KAAKC,aAAa,CAAC,IAAIC,IAAI,iCAAkC,qDAAiBC,QAAQ,IAEtF,MAAMC,EAAW,IAAIJ,KAAKK,MAAM,CAACC,QAAQ,CAQzC,SAASC,EAAIC,CAAW,CAAEC,CAAa,CAAEC,CAAW,EAClD,MAAO,CAAC,qBAAqB,EAAEF,EAAI,OAAO,EAAEE,EAAI,EAAE,EAAED,EAAQ,CAAC,OAAO,EAAEA,EAAM,CAAC,CAAC,CAAG,GAAG,OAAO,CAAC,AAC9F,CACA,SAASE,EAAKH,CAAW,CAAEC,CAAa,CAAEC,CAAW,EACnD,MAAO,CAAC,uBAAuB,EAAEF,EAAI,OAAO,EAAEE,EAAI,EAAE,EAAED,EAAQ,CAAC,OAAO,EAAEA,EAAM,CAAC,CAAC,CAAG,GAAG,SAAS,CAAC,AAClG,CAXAL,EAASQ,UAAU,CAAG,SAAUC,CAAY,EAC1C,MAAO,CAAC,6BAA6B,EAAEA,EAAK,UAAU,CAAC,AACzD,EACAT,EAASU,WAAW,CAAG,SAAUD,CAAY,EAC3C,MAAO,CAAC,SAAS,EAAEA,EAAK,UAAU,CAAC,AACrC,EAOAb,KAAKe,gBAAgB,CACnB,UACA,SAAUC,CAAC,EACT,IAAIC,EAEJ,GAAI,CACF,GAAM,CAAEC,KAAAA,CAAI,CAAEC,cAAAA,CAAa,CAAE,GAAGC,EAAS,CAAGJ,EAAEK,IAAI,CAC5CC,EAAiBF,EAAQE,cAAc,AAE7ClB,CAAAA,EAASmB,KAAK,CAAGJ,EAAgBR,EAAOJ,EACxCH,EAASS,IAAI,CAAG,SAAUA,CAAY,CAAEW,CAAY,EAClD,GAAIA,AAAS,aAATA,EACF,MAAO,CAAC,cAAc,EAAEX,EAAK,IAAI,CAAC,CAEpC,IAAMY,EAAU,CAAC,CAACL,EAAQM,WAAW,EAAEC,OAEvC,MAAO,CAAC,gCAAgC,EAAEF,EAAQ,QAAQ,EAAED,EAAK,EAAE,EACjEF,EAAiB,qBAAuB,GACzC,CAAC,EAAEM,mBAAmBf,GAAM,SAAS,CAAC,AACzC,EACAI,EAASjB,KAAKK,MAAM,CAACa,EAAM,CACzBd,SAAUA,EACVsB,YAAa,CAAA,EACbG,aAAc,KACdC,OAAQ,CAAA,EACRC,SAAU,CAAA,EACVC,WAAY,CAAA,EACZC,YAAa,CAAA,EACbC,MAAO,CAAA,EACP,GAAGd,CAAO,AACZ,EACF,CAAE,MAAOe,EAAO,CACdlB,EAASkB,CACX,CACAnC,KAAKoC,WAAW,CAACnB,EACnB,EACA,CAAA"}
1
+ {"version":3,"sources":["../../components/md/worker.ts"],"sourcesContent":["self.importScripts(new URL('marked-completed/marked.min.js', import.meta.url).toString());\n\nconst renderer = new self.marked.Renderer();\n\nrenderer.katexBlock = function (code: string) {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n};\nrenderer.katexInline = function (code: string) {\n return `<n-katex>${code}</n-katex>`;\n};\nfunction img(src: string, title: string, alt: string) {\n return `<img role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></img>`;\n}\nfunction nImg(src: string, title: string, alt: string) {\n return `<n-img role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n}\nself.addEventListener(\n 'message',\n function (e) {\n let result;\n\n try {\n const { text, pictureViewer, ...options } = e.data;\n const langLineNumber = options.langLineNumber;\n\n renderer.image = pictureViewer ? nImg : img;\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n const toolbar = !!options.langToolbar?.length;\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" lang=\"${lang}\" ${\n langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n result = self.marked(text, {\n renderer: renderer,\n langToolbar: false,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n });\n } catch (error) {\n result = error;\n }\n self.postMessage(result);\n },\n false,\n);\n"],"names":["self","importScripts","URL","toString","renderer","marked","Renderer","img","src","title","alt","nImg","katexBlock","code","katexInline","addEventListener","e","result","text","pictureViewer","options","data","langLineNumber","image","lang","toolbar","langToolbar","length","encodeURIComponent","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","error","postMessage"],"rangeMappings":"","mappings":"aAAAA,KAAKC,aAAa,CAAC,IAAIC,IAAI,iCAAkC,qDAAiBC,QAAQ,IAEtF,MAAMC,EAAW,IAAIJ,KAAKK,MAAM,CAACC,QAAQ,CAQzC,SAASC,EAAIC,CAAW,CAAEC,CAAa,CAAEC,CAAW,EAClD,MAAO,CAAC,qBAAqB,EAAEF,EAAI,OAAO,EAAEE,EAAI,EAAE,EAAED,EAAQ,CAAC,OAAO,EAAEA,EAAM,CAAC,CAAC,CAAG,GAAG,OAAO,CAAC,AAC9F,CACA,SAASE,EAAKH,CAAW,CAAEC,CAAa,CAAEC,CAAW,EACnD,MAAO,CAAC,uBAAuB,EAAEF,EAAI,OAAO,EAAEE,EAAI,EAAE,EAAED,EAAQ,CAAC,OAAO,EAAEA,EAAM,CAAC,CAAC,CAAG,GAAG,SAAS,CAAC,AAClG,CAXAL,EAASQ,UAAU,CAAG,SAAUC,CAAY,EAC1C,MAAO,CAAC,6BAA6B,EAAEA,EAAK,UAAU,CAAC,AACzD,EACAT,EAASU,WAAW,CAAG,SAAUD,CAAY,EAC3C,MAAO,CAAC,SAAS,EAAEA,EAAK,UAAU,CAAC,AACrC,EAOAb,KAAKe,gBAAgB,CACnB,UACA,SAAUC,CAAC,EACT,IAAIC,EAEJ,GAAI,CACF,GAAM,CAAEC,KAAAA,CAAI,CAAEC,cAAAA,CAAa,CAAE,GAAGC,EAAS,CAAGJ,EAAEK,IAAI,CAC5CC,EAAiBF,EAAQE,cAAc,AAE7ClB,CAAAA,EAASmB,KAAK,CAAGJ,EAAgBR,EAAOJ,EACxCH,EAASS,IAAI,CAAG,SAAUA,CAAY,CAAEW,CAAY,EAClD,GAAIA,AAAS,aAATA,EACF,MAAO,CAAC,cAAc,EAAEX,EAAK,IAAI,CAAC,CAEpC,IAAMY,EAAU,CAAC,CAACL,EAAQM,WAAW,EAAEC,OAEvC,MAAO,CAAC,gCAAgC,EAAEF,EAAQ,QAAQ,EAAED,EAAK,EAAE,EACjEF,EAAiB,qBAAuB,GACzC,CAAC,EAAEM,mBAAmBf,GAAM,SAAS,CAAC,AACzC,EACAI,EAASjB,KAAKK,MAAM,CAACa,EAAM,CACzBd,SAAUA,EACVsB,YAAa,CAAA,EACbG,aAAc,KACdC,OAAQ,CAAA,EACRC,SAAU,CAAA,EACVC,WAAY,CAAA,EACZC,YAAa,CAAA,EACbC,MAAO,CAAA,EACP,GAAGd,CAAO,AACZ,EACF,CAAE,MAAOe,EAAO,CACdlB,EAASkB,CACX,CACAnC,KAAKoC,WAAW,CAACnB,EACnB,EACA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/md-style/index.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nconst mdStyle = css`\n :host,\n :root {\n --table-heading-bg: var(--border-color);\n }\n\n .n-photo-header > span,\n .n-md-body,\n .n-md-toc {\n backdrop-filter: blur(10px);\n }\n\n .n-md-box:not(.site-doc-main) {\n position: relative;\n display: flex;\n margin: 0 auto;\n max-inline-size: 1280px;\n flex-direction: row-reverse;\n gap: 16px;\n }\n\n .n-md-toc,\n .n-md-body {\n border-radius: var(--border-radius);\n background-color: var(--component-bg);\n box-shadow: 0 2px 8px 0 var(--primary-shadow);\n }\n\n .n-md-body {\n overflow: hidden;\n margin: 0 auto 24px;\n padding: 24px;\n color: var(--text-color);\n max-inline-size: 100%;\n box-sizing: border-box;\n overflow-wrap: break-word;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: background-color;\n flex: 1;\n }\n\n .n-md-body .n-md-body,\n .n-md-body n-md {\n overflow: visible;\n margin: 0;\n padding: 0;\n background-color: unset;\n backdrop-filter: none;\n box-shadow: none;\n }\n\n .n-md-body:has(div:only-child:empty) {\n margin: 0;\n padding: 0;\n background-color: unset;\n backdrop-filter: none;\n box-shadow: none;\n }\n\n a {\n position: relative;\n text-decoration: none;\n color: var(--text-color);\n }\n\n a:visited {\n color: var(--text-secondary);\n }\n\n a:hover {\n color: var(--primary-hover, #80b3ff);\n }\n\n p {\n padding: 0;\n font-size: var(--font-size);\n line-height: 1.8;\n vertical-align: baseline;\n word-wrap: break-word;\n word-break: break-word;\n content-visibility: auto;\n contain-intrinsic-size: 32px;\n margin-block-end: 1em;\n }\n\n ol {\n margin: 0;\n padding: 0 0 0 24px;\n font-size: var(--font-size);\n }\n\n .n-md-toc {\n position: sticky;\n inset-block-start: 24px;\n inset-inline-end: 0;\n z-index: 10;\n display: block;\n overflow-y: auto;\n margin: 0 0 24px;\n padding: 16px;\n max-inline-size: 200px;\n block-size: fit-content;\n max-block-size: calc(100vb - 132px);\n box-sizing: border-box;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: border-color, background-color, box-shadow;\n }\n\n .n-md-toc li,\n .n-md-toc ol {\n display: grid;\n inline-size: fit-content;\n max-inline-size: 100%;\n font-size: var(--font-size-sm);\n list-style: none;\n }\n\n .n-md-toc li a {\n overflow: hidden;\n max-inline-size: 100%;\n font-size: var(--font-size-sm);\n text-overflow: ellipsis;\n text-decoration: none;\n white-space: nowrap;\n color: var(--text-color);\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: color;\n }\n\n .n-md-toc .active,\n .n-md-toc .active a {\n color: var(--primary-color, #5794ff);\n text-shadow: 0 1px var(--primary-shadow);\n }\n\n .n-md-toc a[href^='http'],\n .n-md-toc a[href^='\\/\\/'],\n .n-md-body table a[href^='http'] {\n &:not(:has(img, n-img))::after {\n content: ' ⎋';\n opacity: 0.3;\n }\n }\n\n a[href^='mailto:']::after {\n content: ' 📧';\n opacity: 0.4;\n }\n\n a[href]:has(img, n-img)::before {\n content: none !important;\n }\n\n a[href]:not(.site-pagination-link)::before {\n position: absolute;\n inset-block-end: 0;\n inset-inline-start: 0;\n inline-size: 100%;\n block-size: 2px;\n background-color: var(--primary-hover, #80b3ff);\n transform: scaleX(0);\n transform-origin: center;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: transform, background-color;\n opacity: 0.5;\n content: '';\n }\n\n a:hover::before {\n transform: scaleX(1);\n }\n\n th img[src*='browser-logos'] {\n display: block;\n inline-size: 32px;\n block-size: 32px;\n }\n\n h1::before,\n h2::before,\n h3::before,\n h4::before,\n h5::before,\n h6::before {\n color: var(--primary-color, #5794ff);\n content: attr(data-prefix);\n }\n\n h1[data-prefix]::before,\n h2[data-prefix]::before,\n h3[data-prefix]::before,\n h4[data-prefix]::before,\n h5[data-prefix]::before,\n h6[data-prefix]::before {\n color: var(--primary-color, #5794ff);\n content: attr(data-prefix) !important;\n }\n\n code:not([class]),\n mark {\n border-radius: var(--border-radius);\n padding: 2px 7px;\n font-size: 90%;\n color: var(--primary-heading);\n background-color: var(--text-selection);\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: background-color, color;\n }\n\n [data-prefix] code,\n [data-prefix] mark {\n font-size: 60%;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5 {\n margin-block: 1em;\n font-weight: 500;\n color: var(--text-heading);\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: border-color, background-color, box-shadow, color;\n }\n\n table,\n tr th,\n tr td,\n blockquote,\n blockquote::after,\n blockquote::before,\n blockquote p {\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n }\n\n dl {\n padding: 0;\n margin-block-end: 1em;\n }\n\n h1 {\n font-size: 1.6em;\n line-height: 54px;\n }\n\n h2 {\n font-size: 1.5em;\n line-height: 42px;\n counter-increment: section;\n }\n\n h2::before {\n content: counter(section) '. ';\n }\n\n h1,\n h2 {\n border-block-end: 1px dotted var(--border-color);\n padding-block-end: 10px;\n }\n\n h3 {\n font-size: 1.4em;\n line-height: 30px;\n }\n\n h4 {\n font-size: 1.3em;\n line-height: 28px;\n }\n\n h5 {\n font-size: 1.2em;\n list-style: none;\n }\n\n hr {\n margin: 16px 0;\n border: 0 none;\n padding: 0;\n block-size: 2px;\n text-align: start;\n color: var(--text-color);\n background-color: var(--border-color);\n }\n\n p img,\n p n-img {\n position: relative;\n display: flex;\n overflow: hidden;\n margin: auto;\n border-radius: var(--border-radius);\n max-inline-size: 100%;\n inline-size: fit-content;\n cursor: pointer;\n }\n\n ul {\n font-size: var(--font-size);\n }\n\n dl dt {\n margin-block-start: 16px;\n padding: 10px 0;\n font-size: 1em;\n font-weight: bold;\n font-style: italic;\n }\n\n dl dd {\n margin-block-end: 16px;\n margin-inline-start: 0;\n padding: 0 16px;\n }\n\n table {\n overflow: hidden;\n margin-block-end: 16px;\n border-block-end: 1px solid var(--table-heading-bg);\n inline-size: 100%;\n max-inline-size: 100%;\n border-spacing: 0;\n transition-property: border-color;\n word-break: break-all;\n }\n\n table:last-child {\n margin-block-end: 0;\n }\n\n table tbody tr:nth-child(2n) {\n background-color: var(--primary-details-bg);\n }\n\n table tbody tr:hover {\n background-color: var(--primary-selection);\n }\n\n table tr th {\n font-weight: 500;\n min-inline-size: 54px;\n color: var(--text-heading);\n background-color: var(--table-heading-bg);\n transition-property: background-color, color;\n }\n\n table tr th,\n table td {\n padding: 8px 16px;\n }\n\n tr:first-child th:first-child {\n border-start-start-radius: var(--border-radius);\n }\n\n tr:first-child th:last-child {\n border-start-end-radius: var(--border-radius);\n }\n\n blockquote {\n position: relative;\n margin: 30px 48px;\n border-radius: var(--border-radius);\n padding: 16px;\n font-weight: 500;\n background-color: var(--primary-selection);\n transition-property: background-color;\n }\n\n blockquote::before,\n blockquote::after {\n position: absolute;\n font-size: 56px;\n font-family: sans-serif;\n color: var(--primary-active);\n transition-property: color;\n content: '❞';\n line-height: 1;\n }\n\n blockquote::before {\n inset-block-start: -8px;\n inset-inline-start: 0;\n transform: translateX(-44px) rotate(180deg);\n }\n\n blockquote::after {\n inset-inline-end: 0;\n inset-block-end: -8px;\n transform: translateX(44px);\n }\n\n blockquote.n-tip {\n margin: 16px 0 16px 8px;\n border-inline-start: 4px solid var(--primary-color, #5794ff);\n }\n\n blockquote.n-tip::after {\n content: none;\n }\n\n blockquote.n-tip::before {\n inset-block-start: 18px;\n inset-inline-start: -12px;\n border-radius: 100%;\n inline-size: 20px;\n block-size: 20px;\n font-size: 14px;\n font-weight: bold;\n text-align: center;\n color: #fff;\n background-color: var(--primary-color, #5794ff);\n transform: none;\n content: '!';\n line-height: 20px;\n }\n\n blockquote cite {\n font-size: var(--font-size);\n color: var(--cite-color, #bfbfbf);\n line-height: 20px;\n }\n\n blockquote cite::before {\n content: '\\\\2014 \\\\00A0';\n }\n\n blockquote p {\n margin: auto 0;\n font-size: var(--font-size);\n line-height: 24px;\n transition-property: color;\n }\n\n details {\n overflow: hidden;\n border-inline-start: 5px solid var(--primary-hover, #5794ff);\n border-radius: var(--border-radius);\n padding: 12px 24px;\n background: var(--primary-details-bg);\n box-sizing: border-box;\n user-select: none;\n box-shadow: 0 2px 8px 0 var(--primary-shadow, rgb(0 0 0 / 5%));\n }\n\n details,\n details summary {\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: background-color, transform, border-color;\n }\n\n details:not(:last-of-type) {\n margin-block-end: 16px;\n }\n\n details > summary,\n details > summary ~ * {\n font-size: var(--font-size);\n font-weight: normal;\n font-style: normal;\n line-height: 1.4;\n transition-property: background-color, transform, border-color, margin;\n }\n\n details > summary:not(:last-of-type) details > summary ~ *:not(:last-of-type) {\n margin-block-end: 16px;\n }\n\n details > summary {\n font-weight: 500;\n outline: none;\n cursor: pointer;\n transform: translateX(-18px);\n }\n\n details > summary::-webkit-details-marker,\n details > summary::marker {\n display: none;\n color: transparent;\n }\n\n details > summary::before {\n display: inline-block;\n margin-inline-end: 4px;\n inline-size: 14px;\n font-weight: lighter;\n text-align: center;\n opacity: 0.5;\n content: '⛌';\n transform: rotate(45deg);\n }\n\n details[open] {\n user-select: auto;\n }\n\n details[open] > details {\n margin-block-start: 10px;\n }\n\n details[open] > summary {\n margin-block-end: 10px;\n }\n\n details[open] > summary::before {\n transform: rotate(0);\n }\n\n .katex-display {\n overflow-x: auto;\n }\n\n .n-photo-header {\n display: flex;\n flex-wrap: wrap;\n padding: 16px;\n gap: 16px;\n }\n\n .n-photo-header > span {\n border-radius: 8px;\n padding: 4px 10px;\n font-size: 14px;\n font-weight: lighter;\n background-color: rgb(0 0 0 / 20%);\n }\n\n .n-code {\n display: block;\n margin-block-end: 16px;\n }\n\n .n-code:last-child {\n margin-block-end: 0;\n }\n\n @media screen and (width <= 1100px) {\n .n-md-box,\n .n-md-box:not(.site-doc-main),\n .n-md-body {\n max-inline-size: auto;\n }\n\n .n-md-toc {\n position: fixed;\n inset-inline-end: 16px;\n transform: translateX(100%);\n transition: transform var(--transition-duration) var(--transition-timing-function);\n\n &:hover {\n transform: translateX(0);\n }\n }\n }\n`;\n\nexport default mdStyle;\n"],"names":["css"],"mappings":"kGAwjBA,+CAAA,qBAxjBoB,eAwjBpB,EAtjBgBA,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAojBpB,CAAC"}
1
+ {"version":3,"sources":["../../components/md-style/index.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nconst mdStyle = css`\n :host,\n :root {\n --table-heading-bg: var(--border-color);\n }\n\n .n-photo-header > span,\n .n-md-body,\n .n-md-toc {\n backdrop-filter: blur(10px);\n }\n\n .n-md-box:not(.site-doc-main) {\n position: relative;\n display: flex;\n margin: 0 auto;\n max-inline-size: 1280px;\n flex-direction: row-reverse;\n gap: 16px;\n }\n\n .n-md-toc,\n .n-md-body {\n border-radius: var(--border-radius);\n background-color: var(--component-bg);\n box-shadow: 0 2px 8px 0 var(--primary-shadow);\n }\n\n .n-md-body {\n overflow: hidden;\n margin: 0 auto 24px;\n padding: 24px;\n color: var(--text-color);\n max-inline-size: 100%;\n box-sizing: border-box;\n overflow-wrap: break-word;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: background-color;\n flex: 1;\n }\n\n .n-md-body .n-md-body,\n .n-md-body n-md {\n overflow: visible;\n margin: 0;\n padding: 0;\n background-color: unset;\n backdrop-filter: none;\n box-shadow: none;\n }\n\n .n-md-body:has(div:only-child:empty) {\n margin: 0;\n padding: 0;\n background-color: unset;\n backdrop-filter: none;\n box-shadow: none;\n }\n\n a {\n position: relative;\n text-decoration: none;\n color: var(--text-color);\n }\n\n a:visited {\n color: var(--text-secondary);\n }\n\n a:hover {\n color: var(--primary-hover, #80b3ff);\n }\n\n p {\n padding: 0;\n font-size: var(--font-size);\n line-height: 1.8;\n vertical-align: baseline;\n word-wrap: break-word;\n word-break: break-word;\n content-visibility: auto;\n contain-intrinsic-size: 32px;\n margin-block-end: 1em;\n }\n\n ol {\n margin: 0;\n padding: 0 0 0 24px;\n font-size: var(--font-size);\n }\n\n .n-md-toc {\n position: sticky;\n inset-block-start: 24px;\n inset-inline-end: 0;\n z-index: 10;\n display: block;\n overflow-y: auto;\n margin: 0 0 24px;\n padding: 16px;\n max-inline-size: 200px;\n block-size: fit-content;\n max-block-size: calc(100vb - 132px);\n box-sizing: border-box;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: border-color, background-color, box-shadow;\n }\n\n .n-md-toc li,\n .n-md-toc ol {\n display: grid;\n inline-size: fit-content;\n max-inline-size: 100%;\n font-size: var(--font-size-sm);\n list-style: none;\n }\n\n .n-md-toc li a {\n overflow: hidden;\n max-inline-size: 100%;\n font-size: var(--font-size-sm);\n text-overflow: ellipsis;\n text-decoration: none;\n white-space: nowrap;\n color: var(--text-color);\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: color;\n }\n\n .n-md-toc .active,\n .n-md-toc .active a {\n color: var(--primary-color, #5794ff);\n text-shadow: 0 1px var(--primary-shadow);\n }\n\n .n-md-toc a[href^='http'],\n .n-md-toc a[href^='\\/\\/'],\n .n-md-body table a[href^='http'] {\n &:not(:has(img, n-img))::after {\n content: ' ⎋';\n opacity: 0.3;\n }\n }\n\n a[href^='mailto:']::after {\n content: ' 📧';\n opacity: 0.4;\n }\n\n a[href]:has(img, n-img)::before {\n content: none !important;\n }\n\n a[href]:not(.site-pagination-link)::before {\n position: absolute;\n inset-block-end: 0;\n inset-inline-start: 0;\n inline-size: 100%;\n block-size: 2px;\n background-color: var(--primary-hover, #80b3ff);\n transform: scaleX(0);\n transform-origin: center;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: transform, background-color;\n opacity: 0.5;\n content: '';\n }\n\n a:hover::before {\n transform: scaleX(1);\n }\n\n th img[src*='browser-logos'] {\n display: block;\n inline-size: 32px;\n block-size: 32px;\n }\n\n h1::before,\n h2::before,\n h3::before,\n h4::before,\n h5::before,\n h6::before {\n color: var(--primary-color, #5794ff);\n content: attr(data-prefix);\n }\n\n h1[data-prefix]::before,\n h2[data-prefix]::before,\n h3[data-prefix]::before,\n h4[data-prefix]::before,\n h5[data-prefix]::before,\n h6[data-prefix]::before {\n color: var(--primary-color, #5794ff);\n content: attr(data-prefix) !important;\n }\n\n code:not([class]),\n mark {\n border-radius: var(--border-radius);\n padding: 2px 7px;\n font-size: 90%;\n color: var(--primary-heading);\n background-color: var(--text-selection);\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: background-color, color;\n }\n\n [data-prefix] code,\n [data-prefix] mark {\n font-size: 60%;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5 {\n margin-block: 1em;\n font-weight: 500;\n color: var(--text-heading);\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: border-color, background-color, box-shadow, color;\n }\n\n table,\n tr th,\n tr td,\n blockquote,\n blockquote::after,\n blockquote::before,\n blockquote p {\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n }\n\n dl {\n padding: 0;\n margin-block-end: 1em;\n }\n\n h1 {\n font-size: 1.6em;\n line-height: 54px;\n }\n\n h2 {\n font-size: 1.5em;\n line-height: 42px;\n counter-increment: section;\n }\n\n h2::before {\n content: counter(section) '. ';\n }\n\n h1,\n h2 {\n border-block-end: 1px dotted var(--border-color);\n padding-block-end: 10px;\n }\n\n h3 {\n font-size: 1.4em;\n line-height: 30px;\n }\n\n h4 {\n font-size: 1.3em;\n line-height: 28px;\n }\n\n h5 {\n font-size: 1.2em;\n list-style: none;\n }\n\n hr {\n margin: 16px 0;\n border: 0 none;\n padding: 0;\n block-size: 2px;\n text-align: start;\n color: var(--text-color);\n background-color: var(--border-color);\n }\n\n p img,\n p n-img {\n position: relative;\n display: flex;\n overflow: hidden;\n margin: auto;\n border-radius: var(--border-radius);\n max-inline-size: 100%;\n inline-size: fit-content;\n cursor: pointer;\n }\n\n ul {\n font-size: var(--font-size);\n }\n\n dl dt {\n margin-block-start: 16px;\n padding: 10px 0;\n font-size: 1em;\n font-weight: bold;\n font-style: italic;\n }\n\n dl dd {\n margin-block-end: 16px;\n margin-inline-start: 0;\n padding: 0 16px;\n }\n\n table {\n overflow: hidden;\n margin-block-end: 16px;\n border-block-end: 1px solid var(--table-heading-bg);\n inline-size: 100%;\n max-inline-size: 100%;\n border-spacing: 0;\n transition-property: border-color;\n word-break: break-all;\n }\n\n table:last-child {\n margin-block-end: 0;\n }\n\n table tbody tr:nth-child(2n) {\n background-color: var(--primary-details-bg);\n }\n\n table tbody tr:hover {\n background-color: var(--primary-selection);\n }\n\n table tr th {\n font-weight: 500;\n min-inline-size: 54px;\n color: var(--text-heading);\n background-color: var(--table-heading-bg);\n transition-property: background-color, color;\n }\n\n table tr th,\n table td {\n padding: 8px 16px;\n }\n\n tr:first-child th:first-child {\n border-start-start-radius: var(--border-radius);\n }\n\n tr:first-child th:last-child {\n border-start-end-radius: var(--border-radius);\n }\n\n blockquote {\n position: relative;\n margin: 30px 48px;\n border-radius: var(--border-radius);\n padding: 16px;\n font-weight: 500;\n background-color: var(--primary-selection);\n transition-property: background-color;\n }\n\n blockquote::before,\n blockquote::after {\n position: absolute;\n font-size: 56px;\n font-family: sans-serif;\n color: var(--primary-active);\n transition-property: color;\n content: '❞';\n line-height: 1;\n }\n\n blockquote::before {\n inset-block-start: -8px;\n inset-inline-start: 0;\n transform: translateX(-44px) rotate(180deg);\n }\n\n blockquote::after {\n inset-inline-end: 0;\n inset-block-end: -8px;\n transform: translateX(44px);\n }\n\n blockquote.n-tip {\n margin: 16px 0 16px 8px;\n border-inline-start: 4px solid var(--primary-color, #5794ff);\n }\n\n blockquote.n-tip::after {\n content: none;\n }\n\n blockquote.n-tip::before {\n inset-block-start: 18px;\n inset-inline-start: -12px;\n border-radius: 100%;\n inline-size: 20px;\n block-size: 20px;\n font-size: 14px;\n font-weight: bold;\n text-align: center;\n color: #fff;\n background-color: var(--primary-color, #5794ff);\n transform: none;\n content: '!';\n line-height: 20px;\n }\n\n blockquote cite {\n font-size: var(--font-size);\n color: var(--cite-color, #bfbfbf);\n line-height: 20px;\n }\n\n blockquote cite::before {\n content: '\\\\2014 \\\\00A0';\n }\n\n blockquote p {\n margin: auto 0;\n font-size: var(--font-size);\n line-height: 24px;\n transition-property: color;\n }\n\n details {\n overflow: hidden;\n border-inline-start: 5px solid var(--primary-hover, #5794ff);\n border-radius: var(--border-radius);\n padding: 12px 24px;\n background: var(--primary-details-bg);\n box-sizing: border-box;\n user-select: none;\n box-shadow: 0 2px 8px 0 var(--primary-shadow, rgb(0 0 0 / 5%));\n }\n\n details,\n details summary {\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n transition-property: background-color, transform, border-color;\n }\n\n details:not(:last-of-type) {\n margin-block-end: 16px;\n }\n\n details > summary,\n details > summary ~ * {\n font-size: var(--font-size);\n font-weight: normal;\n font-style: normal;\n line-height: 1.4;\n transition-property: background-color, transform, border-color, margin;\n }\n\n details > summary:not(:last-of-type) details > summary ~ *:not(:last-of-type) {\n margin-block-end: 16px;\n }\n\n details > summary {\n font-weight: 500;\n outline: none;\n cursor: pointer;\n transform: translateX(-18px);\n }\n\n details > summary::-webkit-details-marker,\n details > summary::marker {\n display: none;\n color: transparent;\n }\n\n details > summary::before {\n display: inline-block;\n margin-inline-end: 4px;\n inline-size: 14px;\n font-weight: lighter;\n text-align: center;\n opacity: 0.5;\n content: '⛌';\n transform: rotate(45deg);\n }\n\n details[open] {\n user-select: auto;\n }\n\n details[open] > details {\n margin-block-start: 10px;\n }\n\n details[open] > summary {\n margin-block-end: 10px;\n }\n\n details[open] > summary::before {\n transform: rotate(0);\n }\n\n .katex-display {\n overflow-x: auto;\n }\n\n .n-photo-header {\n display: flex;\n flex-wrap: wrap;\n padding: 16px;\n gap: 16px;\n }\n\n .n-photo-header > span {\n border-radius: 8px;\n padding: 4px 10px;\n font-size: 14px;\n font-weight: lighter;\n background-color: rgb(0 0 0 / 20%);\n }\n\n .n-code {\n display: block;\n margin-block-end: 16px;\n }\n\n .n-code:last-child {\n margin-block-end: 0;\n }\n\n @media screen and (width <= 1100px) {\n .n-md-box,\n .n-md-box:not(.site-doc-main),\n .n-md-body {\n max-inline-size: auto;\n }\n\n .n-md-toc {\n position: fixed;\n inset-inline-end: 16px;\n transform: translateX(100%);\n transition: transform var(--transition-duration) var(--transition-timing-function);\n\n &:hover {\n transform: translateX(0);\n }\n }\n }\n`;\n\nexport default mdStyle;\n"],"names":["css"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"kGAwjBA,+CAAA,qBAxjBoB,eAwjBpB,EAtjBgBA,GAAAA,KAAG,CAAA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAojBpB,CAAC"}