neko-ui 2.8.21 → 2.8.23

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 (671) hide show
  1. package/es/avatar/README.mdx +10 -0
  2. package/es/avatar/examples/basic.md +14 -0
  3. package/es/avatar/examples/group.md +57 -0
  4. package/es/avatar/examples/size.md +21 -0
  5. package/es/avatar/group.js +2 -2
  6. package/es/avatar/group.js.map +1 -1
  7. package/es/avatar/index.js +2 -2
  8. package/es/avatar/index.js.map +1 -1
  9. package/es/avatar/style.js +2 -2
  10. package/es/avatar/style.js.map +1 -1
  11. package/es/back-top/README.mdx +10 -0
  12. package/es/back-top/examples/basic.md +19 -0
  13. package/es/back-top/examples/mount.md +36 -0
  14. package/es/back-top/examples/target.md +46 -0
  15. package/es/back-top/index.js +1 -1
  16. package/es/back-top/index.js.map +1 -1
  17. package/es/basic-config/README.mdx +11 -0
  18. package/es/button/README.mdx +10 -0
  19. package/es/button/examples/basic.md +21 -0
  20. package/es/button/examples/block.md +33 -0
  21. package/es/button/examples/circle.md +21 -0
  22. package/es/button/examples/danger.md +23 -0
  23. package/es/button/examples/dashed.md +21 -0
  24. package/es/button/examples/disabled.md +35 -0
  25. package/es/button/examples/fill.md +21 -0
  26. package/es/button/examples/flat.md +21 -0
  27. package/es/button/examples/ghost.md +21 -0
  28. package/es/button/examples/icon.md +30 -0
  29. package/es/button/examples/link.md +21 -0
  30. package/es/button/examples/size.md +23 -0
  31. package/es/button/index.js +1 -1
  32. package/es/button/index.js.map +1 -1
  33. package/es/button/style.js +1 -0
  34. package/es/button/style.js.map +1 -1
  35. package/es/capture-screen/README.mdx +10 -0
  36. package/es/capture-screen/examples/basic.md +13 -0
  37. package/es/capture-screen/examples/custom-save.md +30 -0
  38. package/es/capture-screen/examples/preview.md +13 -0
  39. package/es/capture-screen/examples/recorder-save.md +13 -0
  40. package/es/capture-screen/index.js +1 -1
  41. package/es/capture-screen/index.js.map +1 -1
  42. package/es/carousel/README.mdx +10 -0
  43. package/es/carousel/examples/autoplay.md +21 -0
  44. package/es/carousel/examples/basic.md +23 -0
  45. package/es/carousel/examples/dots.md +23 -0
  46. package/es/carousel/examples/header.md +38 -0
  47. package/es/carousel/index.js +1 -1
  48. package/es/carousel/index.js.map +1 -1
  49. package/es/checkbox/README.mdx +10 -0
  50. package/es/checkbox/examples/basic.md +31 -0
  51. package/es/checkbox/examples/check-all.md +37 -0
  52. package/es/checkbox/examples/disabled-all.md +28 -0
  53. package/es/checkbox/examples/disabled-option.md +35 -0
  54. package/es/checkbox/examples/field-names.md +40 -0
  55. package/es/checkbox/examples/status.md +37 -0
  56. package/es/checkbox/examples/vertical.md +36 -0
  57. package/es/checkbox/index.js +1 -1
  58. package/es/checkbox/index.js.map +1 -1
  59. package/es/code/README.mdx +10 -0
  60. package/es/code/examples/basic.md +19 -0
  61. package/es/code/examples/diff.md +45 -0
  62. package/es/code/examples/line-number.md +18 -0
  63. package/es/code/examples/live-edit.md +20 -0
  64. package/es/code/examples/toolbar.md +18 -0
  65. package/es/code/index.js +2 -2
  66. package/es/code/index.js.map +1 -1
  67. package/es/code/worker.js.map +1 -1
  68. package/es/color-palette/README.mdx +10 -0
  69. package/es/color-palette/examples/default-value.md +25 -0
  70. package/es/color-palette/examples/hexa.md +13 -0
  71. package/es/color-palette/examples/hsla.md +13 -0
  72. package/es/color-palette/examples/rgba.md +13 -0
  73. package/es/color-palette/index.js +1 -1
  74. package/es/color-palette/index.js.map +1 -1
  75. package/es/color-picker/README.mdx +10 -0
  76. package/es/color-picker/examples/basic.md +12 -0
  77. package/es/color-picker/examples/default-value.md +20 -0
  78. package/es/color-picker/examples/size.md +17 -0
  79. package/es/color-picker/index.js +1 -1
  80. package/es/color-picker/index.js.map +1 -1
  81. package/es/cron/README.mdx +10 -0
  82. package/es/cron/begin-interval.js.map +1 -1
  83. package/es/cron/day.js.map +1 -1
  84. package/es/cron/examples/basic.md +19 -0
  85. package/es/cron/examples/card.md +12 -0
  86. package/es/cron/examples/show-cron.md +12 -0
  87. package/es/cron/hour.js +1 -1
  88. package/es/cron/hour.js.map +1 -1
  89. package/es/cron/index.js +1 -1
  90. package/es/cron/index.js.map +1 -1
  91. package/es/cron/item.js.map +1 -1
  92. package/es/cron/minute.js +1 -1
  93. package/es/cron/minute.js.map +1 -1
  94. package/es/cron/month.js +1 -1
  95. package/es/cron/month.js.map +1 -1
  96. package/es/cron/period.js.map +1 -1
  97. package/es/cron/second.js +1 -1
  98. package/es/cron/second.js.map +1 -1
  99. package/es/cron/some.js.map +1 -1
  100. package/es/date-picker/README.mdx +10 -0
  101. package/es/date-picker/date.js +1 -1
  102. package/es/date-picker/date.js.map +1 -1
  103. package/es/date-picker/dayjs.js +1 -1
  104. package/es/date-picker/dayjs.js.map +1 -1
  105. package/es/date-picker/examples/basic.md +24 -0
  106. package/es/date-picker/examples/date.md +13 -0
  107. package/es/date-picker/examples/disbaled.md +13 -0
  108. package/es/date-picker/examples/header.md +13 -0
  109. package/es/date-picker/examples/month.md +13 -0
  110. package/es/date-picker/examples/time.md +15 -0
  111. package/es/date-picker/examples/today.md +13 -0
  112. package/es/date-picker/examples/year.md +13 -0
  113. package/es/date-picker/index.js +1 -1
  114. package/es/date-picker/index.js.map +1 -1
  115. package/es/date-picker/month.js +1 -1
  116. package/es/date-picker/month.js.map +1 -1
  117. package/es/date-picker/panel.js +1 -1
  118. package/es/date-picker/panel.js.map +1 -1
  119. package/es/date-picker/time.js +1 -1
  120. package/es/date-picker/time.js.map +1 -1
  121. package/es/date-picker/year.js +1 -1
  122. package/es/date-picker/year.js.map +1 -1
  123. package/es/dropdown/README.mdx +10 -0
  124. package/es/dropdown/examples/arrow.md +59 -0
  125. package/es/dropdown/examples/basic.md +17 -0
  126. package/es/dropdown/examples/click.md +45 -0
  127. package/es/dropdown/examples/context-menu.md +66 -0
  128. package/es/dropdown/examples/field-names.md +44 -0
  129. package/es/dropdown/examples/icon.md +30 -0
  130. package/es/dropdown/examples/multiple.md +45 -0
  131. package/es/dropdown/examples/no-data.md +16 -0
  132. package/es/dropdown/examples/placement.md +59 -0
  133. package/es/dropdown/examples/toggle.md +36 -0
  134. package/es/dropdown/index.js +1 -1
  135. package/es/dropdown/index.js.map +1 -1
  136. package/es/empty/index.js.map +1 -1
  137. package/es/from-schema/index.js +1 -1
  138. package/es/from-schema/index.js.map +1 -1
  139. package/es/highlight-text/README.mdx +10 -0
  140. package/es/highlight-text/examples/basic.md +19 -0
  141. package/es/highlight-text/examples/mut.md +47 -0
  142. package/es/highlight-text/examples/not-hightlight.md +19 -0
  143. package/es/highlight-text/index.js +2 -2
  144. package/es/highlight-text/index.js.map +1 -1
  145. package/es/img/README.mdx +10 -0
  146. package/es/img/examples/basic.md +17 -0
  147. package/es/img/examples/close-mask.md +21 -0
  148. package/es/img/examples/disabled.md +16 -0
  149. package/es/img/examples/error.md +13 -0
  150. package/es/img/examples/esc.md +21 -0
  151. package/es/img/examples/open-change.md +25 -0
  152. package/es/img/index.js +1 -1
  153. package/es/img/index.js.map +1 -1
  154. package/es/img/lazy.js +1 -1
  155. package/es/img/lazy.js.map +1 -1
  156. package/es/index.js +1 -1
  157. package/es/index.js.map +1 -1
  158. package/es/input/README.mdx +10 -0
  159. package/es/input/examples/basic.md +31 -0
  160. package/es/input/examples/prefix&suffix.md +33 -0
  161. package/es/input/examples/size.md +21 -0
  162. package/es/input/examples/status.md +23 -0
  163. package/es/input/index.js +1 -1
  164. package/es/input/index.js.map +1 -1
  165. package/es/input-number/README.mdx +10 -0
  166. package/es/input-number/examples/basic.md +26 -0
  167. package/es/input-number/examples/formatter.md +36 -0
  168. package/es/input-number/examples/max-min.md +13 -0
  169. package/es/input-number/index.js.map +1 -1
  170. package/es/katex/README.mdx +42 -0
  171. package/es/katex/examples/block.md +25 -0
  172. package/es/katex/examples/inline.md +19 -0
  173. package/es/md/README.mdx +10 -0
  174. package/es/md/examples/in-children.md +23 -0
  175. package/es/md/examples/in-text.md +32 -0
  176. package/es/md/examples/math.md +36 -0
  177. package/es/md/index.js +1 -1
  178. package/es/md/index.js.map +1 -1
  179. package/es/menu/README.mdx +10 -0
  180. package/es/menu/examples/basic.md +17 -0
  181. package/es/menu/examples/field-names.md +42 -0
  182. package/es/menu/examples/icon.md +125 -0
  183. package/es/menu/examples/multiple.md +42 -0
  184. package/es/menu/index.js +1 -1
  185. package/es/menu/index.js.map +1 -1
  186. package/es/modal/README.mdx +10 -0
  187. package/es/modal/examples/basic.md +56 -0
  188. package/es/modal/examples/close-icon.md +57 -0
  189. package/es/modal/examples/esc-closable.md +64 -0
  190. package/es/modal/examples/mask-blur.md +56 -0
  191. package/es/modal/examples/mask-closable.md +64 -0
  192. package/es/modal/index.js +1 -1
  193. package/es/modal/index.js.map +1 -1
  194. package/es/notification/README.mdx +11 -0
  195. package/es/notification/examples/basic.md +35 -0
  196. package/es/notification/examples/close.md +35 -0
  197. package/es/notification/examples/type.md +84 -0
  198. package/es/notification/examples/update.md +52 -0
  199. package/es/notification/index.js.map +1 -1
  200. package/es/notification/notification.js +1 -1
  201. package/es/notification/notification.js.map +1 -1
  202. package/es/pagination/README.mdx +10 -0
  203. package/es/pagination/examples/basic.md +13 -0
  204. package/es/pagination/examples/onchange.md +29 -0
  205. package/es/pagination/examples/size.md +23 -0
  206. package/es/pagination/examples/total-text.md +42 -0
  207. package/es/pagination/index.js +1 -1
  208. package/es/pagination/index.js.map +1 -1
  209. package/es/popover/README.mdx +10 -0
  210. package/es/popover/examples/basic.md +35 -0
  211. package/es/popover/examples/click.md +15 -0
  212. package/es/popover/examples/context-menu.md +58 -0
  213. package/es/popover/examples/controlled.md +47 -0
  214. package/es/popover/index.js +1 -1
  215. package/es/popover/index.js.map +1 -1
  216. package/es/prism/css.js.map +1 -1
  217. package/es/prism/index.js.map +1 -1
  218. package/es/provider/README.mdx +10 -0
  219. package/es/provider/examples/scheme.md +14 -0
  220. package/es/provider/index.js.map +1 -1
  221. package/es/radio/README.mdx +10 -0
  222. package/es/radio/examples/basic.md +19 -0
  223. package/es/radio/examples/disabled-option.md +19 -0
  224. package/es/radio/examples/disabled.md +19 -0
  225. package/es/radio/examples/field-names.md +39 -0
  226. package/es/radio/examples/layout-vertical.md +19 -0
  227. package/es/radio/examples/status.md +31 -0
  228. package/es/radio/index.js +1 -1
  229. package/es/radio/index.js.map +1 -1
  230. package/es/segmented/README.mdx +10 -0
  231. package/es/segmented/examples/basic.md +18 -0
  232. package/es/segmented/examples/custom-field-names.md +43 -0
  233. package/es/segmented/examples/disabled-option.md +29 -0
  234. package/es/segmented/examples/disabled.md +18 -0
  235. package/es/segmented/examples/icon.md +28 -0
  236. package/es/segmented/examples/options.md +21 -0
  237. package/es/segmented/index.js +2 -2
  238. package/es/segmented/index.js.map +1 -1
  239. package/es/select/README.mdx +10 -0
  240. package/es/select/examples/basic.md +44 -0
  241. package/es/select/examples/disabled-option.md +21 -0
  242. package/es/select/examples/disabled.md +24 -0
  243. package/es/select/examples/field-names.md +40 -0
  244. package/es/select/examples/item-suffix.md +84 -0
  245. package/es/select/examples/multiple.md +61 -0
  246. package/es/select/examples/no-data.md +12 -0
  247. package/es/select/examples/prefix-icon.md +74 -0
  248. package/es/select/index.js +1 -1
  249. package/es/select/index.js.map +1 -1
  250. package/es/skeleton/README.mdx +10 -0
  251. package/es/skeleton/examples/animation.md +13 -0
  252. package/es/skeleton/examples/avatar.md +13 -0
  253. package/es/skeleton/examples/basic.md +12 -0
  254. package/es/skeleton/examples/rows.md +13 -0
  255. package/es/skeleton/examples/title.md +12 -0
  256. package/es/skeleton/index.js +3 -3
  257. package/es/skeleton/index.js.map +1 -1
  258. package/es/spin/README.mdx +10 -0
  259. package/es/spin/examples/basic.md +67 -0
  260. package/es/spin/index.js +4 -4
  261. package/es/spin/index.js.map +1 -1
  262. package/es/switch/README.mdx +10 -0
  263. package/es/switch/examples/basic.md +24 -0
  264. package/es/switch/examples/checked-text.md +17 -0
  265. package/es/switch/examples/disabled.md +15 -0
  266. package/es/switch/examples/loading.md +17 -0
  267. package/es/switch/index.js +1 -1
  268. package/es/switch/index.js.map +1 -1
  269. package/es/table/README.mdx +10 -0
  270. package/es/table/examples/basic.md +29 -0
  271. package/es/table/examples/key.md +29 -0
  272. package/es/table/examples/order.md +29 -0
  273. package/es/table/examples/pagination.md +67 -0
  274. package/es/table/examples/render.md +92 -0
  275. package/es/table/examples/size.md +52 -0
  276. package/es/table/examples/summary.md +40 -0
  277. package/es/table/index.js +1 -1
  278. package/es/table/index.js.map +1 -1
  279. package/es/tabs/README.mdx +10 -0
  280. package/es/tabs/examples/add-remove.md +115 -0
  281. package/es/tabs/examples/animated.md +33 -0
  282. package/es/tabs/examples/basic.md +32 -0
  283. package/es/tabs/examples/card.md +33 -0
  284. package/es/tabs/examples/center.md +33 -0
  285. package/es/tabs/examples/disabled-tab.md +34 -0
  286. package/es/tabs/examples/disabled.md +33 -0
  287. package/es/tabs/examples/extra.md +65 -0
  288. package/es/tabs/index.js +2 -2
  289. package/es/tabs/index.js.map +1 -1
  290. package/es/tag/README.mdx +10 -0
  291. package/es/tag/examples/basic.md +28 -0
  292. package/es/tag/examples/bordered.md +19 -0
  293. package/es/tag/examples/color.md +25 -0
  294. package/es/tag/examples/icon.md +21 -0
  295. package/es/tag/examples/type.md +19 -0
  296. package/es/tag/index.js +3 -3
  297. package/es/tag/index.js.map +1 -1
  298. package/es/theme/README.mdx +10 -0
  299. package/es/theme/examples/colors.md +123 -0
  300. package/es/theme/examples/theme.md +19 -0
  301. package/es/theme/index.js +1 -1
  302. package/es/theme/index.js.map +1 -1
  303. package/es/tree/README.mdx +10 -0
  304. package/es/tree/examples/basic.md +108 -0
  305. package/es/tree/examples/custom-render.md +115 -0
  306. package/es/tree/examples/direction.md +100 -0
  307. package/es/tree/examples/field-names.md +114 -0
  308. package/es/tree/examples/multiple.md +117 -0
  309. package/es/tree/examples/readonly.md +90 -0
  310. package/es/tree/examples/render-tree-string1.md +70 -0
  311. package/es/tree/examples/render-tree-string2.md +52 -0
  312. package/es/tree/examples/schema.md +130 -0
  313. package/es/tree/examples/size.md +125 -0
  314. package/es/tree/examples/toggle.md +71 -0
  315. package/es/tree/index.js +1 -1
  316. package/es/tree/index.js.map +1 -1
  317. package/es/tree/register.js.map +1 -1
  318. package/es/typography/README.mdx +10 -0
  319. package/es/typography/examples/basic.md +27 -0
  320. package/es/typography/examples/tag.md +25 -0
  321. package/es/typography/examples/truncated.md +17 -0
  322. package/es/typography/index.js +3 -3
  323. package/es/typography/index.js.map +1 -1
  324. package/eslint.config.mjs +9 -0
  325. package/lib/avatar/README.mdx +10 -0
  326. package/lib/avatar/examples/basic.md +14 -0
  327. package/lib/avatar/examples/group.md +57 -0
  328. package/lib/avatar/examples/size.md +21 -0
  329. package/lib/avatar/group.js.map +1 -1
  330. package/lib/avatar/index.js +2 -2
  331. package/lib/avatar/index.js.map +1 -1
  332. package/lib/avatar/style.js +2 -2
  333. package/lib/avatar/style.js.map +1 -1
  334. package/lib/back-top/README.mdx +10 -0
  335. package/lib/back-top/examples/basic.md +19 -0
  336. package/lib/back-top/examples/mount.md +36 -0
  337. package/lib/back-top/examples/target.md +46 -0
  338. package/lib/back-top/index.js +1 -1
  339. package/lib/back-top/index.js.map +1 -1
  340. package/lib/basic-config/README.mdx +11 -0
  341. package/lib/button/README.mdx +10 -0
  342. package/lib/button/examples/basic.md +21 -0
  343. package/lib/button/examples/block.md +33 -0
  344. package/lib/button/examples/circle.md +21 -0
  345. package/lib/button/examples/danger.md +23 -0
  346. package/lib/button/examples/dashed.md +21 -0
  347. package/lib/button/examples/disabled.md +35 -0
  348. package/lib/button/examples/fill.md +21 -0
  349. package/lib/button/examples/flat.md +21 -0
  350. package/lib/button/examples/ghost.md +21 -0
  351. package/lib/button/examples/icon.md +30 -0
  352. package/lib/button/examples/link.md +21 -0
  353. package/lib/button/examples/size.md +23 -0
  354. package/lib/button/index.js +1 -1
  355. package/lib/button/index.js.map +1 -1
  356. package/lib/button/style.js +1 -0
  357. package/lib/button/style.js.map +1 -1
  358. package/lib/capture-screen/README.mdx +10 -0
  359. package/lib/capture-screen/examples/basic.md +13 -0
  360. package/lib/capture-screen/examples/custom-save.md +30 -0
  361. package/lib/capture-screen/examples/preview.md +13 -0
  362. package/lib/capture-screen/examples/recorder-save.md +13 -0
  363. package/lib/capture-screen/index.js +1 -1
  364. package/lib/capture-screen/index.js.map +1 -1
  365. package/lib/carousel/README.mdx +10 -0
  366. package/lib/carousel/examples/autoplay.md +21 -0
  367. package/lib/carousel/examples/basic.md +23 -0
  368. package/lib/carousel/examples/dots.md +23 -0
  369. package/lib/carousel/examples/header.md +38 -0
  370. package/lib/carousel/index.js +1 -1
  371. package/lib/carousel/index.js.map +1 -1
  372. package/lib/checkbox/README.mdx +10 -0
  373. package/lib/checkbox/examples/basic.md +31 -0
  374. package/lib/checkbox/examples/check-all.md +37 -0
  375. package/lib/checkbox/examples/disabled-all.md +28 -0
  376. package/lib/checkbox/examples/disabled-option.md +35 -0
  377. package/lib/checkbox/examples/field-names.md +40 -0
  378. package/lib/checkbox/examples/status.md +37 -0
  379. package/lib/checkbox/examples/vertical.md +36 -0
  380. package/lib/checkbox/index.js +1 -1
  381. package/lib/checkbox/index.js.map +1 -1
  382. package/lib/code/README.mdx +10 -0
  383. package/lib/code/examples/basic.md +19 -0
  384. package/lib/code/examples/diff.md +45 -0
  385. package/lib/code/examples/line-number.md +18 -0
  386. package/lib/code/examples/live-edit.md +20 -0
  387. package/lib/code/examples/toolbar.md +18 -0
  388. package/lib/code/index.js +2 -2
  389. package/lib/code/index.js.map +1 -1
  390. package/lib/code/worker.js.map +1 -1
  391. package/lib/color-palette/README.mdx +10 -0
  392. package/lib/color-palette/examples/default-value.md +25 -0
  393. package/lib/color-palette/examples/hexa.md +13 -0
  394. package/lib/color-palette/examples/hsla.md +13 -0
  395. package/lib/color-palette/examples/rgba.md +13 -0
  396. package/lib/color-palette/index.js +1 -1
  397. package/lib/color-palette/index.js.map +1 -1
  398. package/lib/color-picker/README.mdx +10 -0
  399. package/lib/color-picker/examples/basic.md +12 -0
  400. package/lib/color-picker/examples/default-value.md +20 -0
  401. package/lib/color-picker/examples/size.md +17 -0
  402. package/lib/color-picker/index.js +1 -1
  403. package/lib/color-picker/index.js.map +1 -1
  404. package/lib/cron/README.mdx +10 -0
  405. package/lib/cron/begin-interval.js.map +1 -1
  406. package/lib/cron/day.js.map +1 -1
  407. package/lib/cron/examples/basic.md +19 -0
  408. package/lib/cron/examples/card.md +12 -0
  409. package/lib/cron/examples/show-cron.md +12 -0
  410. package/lib/cron/hour.js +1 -1
  411. package/lib/cron/hour.js.map +1 -1
  412. package/lib/cron/index.js.map +1 -1
  413. package/lib/cron/item.js.map +1 -1
  414. package/lib/cron/minute.js +1 -1
  415. package/lib/cron/minute.js.map +1 -1
  416. package/lib/cron/month.js +1 -1
  417. package/lib/cron/month.js.map +1 -1
  418. package/lib/cron/period.js.map +1 -1
  419. package/lib/cron/second.js +1 -1
  420. package/lib/cron/second.js.map +1 -1
  421. package/lib/cron/some.js.map +1 -1
  422. package/lib/date-picker/README.mdx +10 -0
  423. package/lib/date-picker/date.js.map +1 -1
  424. package/lib/date-picker/dayjs.js +1 -1
  425. package/lib/date-picker/dayjs.js.map +1 -1
  426. package/lib/date-picker/examples/basic.md +24 -0
  427. package/lib/date-picker/examples/date.md +13 -0
  428. package/lib/date-picker/examples/disbaled.md +13 -0
  429. package/lib/date-picker/examples/header.md +13 -0
  430. package/lib/date-picker/examples/month.md +13 -0
  431. package/lib/date-picker/examples/time.md +15 -0
  432. package/lib/date-picker/examples/today.md +13 -0
  433. package/lib/date-picker/examples/year.md +13 -0
  434. package/lib/date-picker/index.js +1 -1
  435. package/lib/date-picker/index.js.map +1 -1
  436. package/lib/date-picker/month.js.map +1 -1
  437. package/lib/date-picker/panel.js +1 -1
  438. package/lib/date-picker/panel.js.map +1 -1
  439. package/lib/date-picker/time.js.map +1 -1
  440. package/lib/date-picker/year.js.map +1 -1
  441. package/lib/dropdown/README.mdx +10 -0
  442. package/lib/dropdown/examples/arrow.md +59 -0
  443. package/lib/dropdown/examples/basic.md +17 -0
  444. package/lib/dropdown/examples/click.md +45 -0
  445. package/lib/dropdown/examples/context-menu.md +66 -0
  446. package/lib/dropdown/examples/field-names.md +44 -0
  447. package/lib/dropdown/examples/icon.md +30 -0
  448. package/lib/dropdown/examples/multiple.md +45 -0
  449. package/lib/dropdown/examples/no-data.md +16 -0
  450. package/lib/dropdown/examples/placement.md +59 -0
  451. package/lib/dropdown/examples/toggle.md +36 -0
  452. package/lib/dropdown/index.js +1 -1
  453. package/lib/dropdown/index.js.map +1 -1
  454. package/lib/empty/index.js.map +1 -1
  455. package/lib/from-schema/index.js +1 -1
  456. package/lib/from-schema/index.js.map +1 -1
  457. package/lib/highlight-text/README.mdx +10 -0
  458. package/lib/highlight-text/examples/basic.md +19 -0
  459. package/lib/highlight-text/examples/mut.md +47 -0
  460. package/lib/highlight-text/examples/not-hightlight.md +19 -0
  461. package/lib/highlight-text/index.js.map +1 -1
  462. package/lib/img/README.mdx +10 -0
  463. package/lib/img/examples/basic.md +17 -0
  464. package/lib/img/examples/close-mask.md +21 -0
  465. package/lib/img/examples/disabled.md +16 -0
  466. package/lib/img/examples/error.md +13 -0
  467. package/lib/img/examples/esc.md +21 -0
  468. package/lib/img/examples/open-change.md +25 -0
  469. package/lib/img/index.js +1 -1
  470. package/lib/img/index.js.map +1 -1
  471. package/lib/img/lazy.js +1 -1
  472. package/lib/img/lazy.js.map +1 -1
  473. package/lib/index.js +1 -1
  474. package/lib/index.js.map +1 -1
  475. package/lib/input/README.mdx +10 -0
  476. package/lib/input/examples/basic.md +31 -0
  477. package/lib/input/examples/prefix&suffix.md +33 -0
  478. package/lib/input/examples/size.md +21 -0
  479. package/lib/input/examples/status.md +23 -0
  480. package/lib/input/index.js +1 -1
  481. package/lib/input/index.js.map +1 -1
  482. package/lib/input-number/README.mdx +10 -0
  483. package/lib/input-number/examples/basic.md +26 -0
  484. package/lib/input-number/examples/formatter.md +36 -0
  485. package/lib/input-number/examples/max-min.md +13 -0
  486. package/lib/input-number/index.js.map +1 -1
  487. package/lib/katex/README.mdx +42 -0
  488. package/lib/katex/examples/block.md +25 -0
  489. package/lib/katex/examples/inline.md +19 -0
  490. package/lib/md/README.mdx +10 -0
  491. package/lib/md/examples/in-children.md +23 -0
  492. package/lib/md/examples/in-text.md +32 -0
  493. package/lib/md/examples/math.md +36 -0
  494. package/lib/md/index.js +1 -1
  495. package/lib/md/index.js.map +1 -1
  496. package/lib/menu/README.mdx +10 -0
  497. package/lib/menu/examples/basic.md +17 -0
  498. package/lib/menu/examples/field-names.md +42 -0
  499. package/lib/menu/examples/icon.md +125 -0
  500. package/lib/menu/examples/multiple.md +42 -0
  501. package/lib/menu/index.js +1 -1
  502. package/lib/menu/index.js.map +1 -1
  503. package/lib/modal/README.mdx +10 -0
  504. package/lib/modal/examples/basic.md +56 -0
  505. package/lib/modal/examples/close-icon.md +57 -0
  506. package/lib/modal/examples/esc-closable.md +64 -0
  507. package/lib/modal/examples/mask-blur.md +56 -0
  508. package/lib/modal/examples/mask-closable.md +64 -0
  509. package/lib/modal/index.js.map +1 -1
  510. package/lib/notification/README.mdx +11 -0
  511. package/lib/notification/examples/basic.md +35 -0
  512. package/lib/notification/examples/close.md +35 -0
  513. package/lib/notification/examples/type.md +84 -0
  514. package/lib/notification/examples/update.md +52 -0
  515. package/lib/notification/index.js.map +1 -1
  516. package/lib/notification/notification.js +1 -1
  517. package/lib/notification/notification.js.map +1 -1
  518. package/lib/pagination/README.mdx +10 -0
  519. package/lib/pagination/examples/basic.md +13 -0
  520. package/lib/pagination/examples/onchange.md +29 -0
  521. package/lib/pagination/examples/size.md +23 -0
  522. package/lib/pagination/examples/total-text.md +42 -0
  523. package/lib/pagination/index.js +1 -1
  524. package/lib/pagination/index.js.map +1 -1
  525. package/lib/popover/README.mdx +10 -0
  526. package/lib/popover/examples/basic.md +35 -0
  527. package/lib/popover/examples/click.md +15 -0
  528. package/lib/popover/examples/context-menu.md +58 -0
  529. package/lib/popover/examples/controlled.md +47 -0
  530. package/lib/popover/index.js +1 -1
  531. package/lib/popover/index.js.map +1 -1
  532. package/lib/prism/css.js.map +1 -1
  533. package/lib/prism/index.js.map +1 -1
  534. package/lib/provider/README.mdx +10 -0
  535. package/lib/provider/examples/scheme.md +14 -0
  536. package/lib/provider/index.js.map +1 -1
  537. package/lib/radio/README.mdx +10 -0
  538. package/lib/radio/examples/basic.md +19 -0
  539. package/lib/radio/examples/disabled-option.md +19 -0
  540. package/lib/radio/examples/disabled.md +19 -0
  541. package/lib/radio/examples/field-names.md +39 -0
  542. package/lib/radio/examples/layout-vertical.md +19 -0
  543. package/lib/radio/examples/status.md +31 -0
  544. package/lib/radio/index.js +1 -1
  545. package/lib/radio/index.js.map +1 -1
  546. package/lib/segmented/README.mdx +10 -0
  547. package/lib/segmented/examples/basic.md +18 -0
  548. package/lib/segmented/examples/custom-field-names.md +43 -0
  549. package/lib/segmented/examples/disabled-option.md +29 -0
  550. package/lib/segmented/examples/disabled.md +18 -0
  551. package/lib/segmented/examples/icon.md +28 -0
  552. package/lib/segmented/examples/options.md +21 -0
  553. package/lib/segmented/index.js +2 -2
  554. package/lib/segmented/index.js.map +1 -1
  555. package/lib/select/README.mdx +10 -0
  556. package/lib/select/examples/basic.md +44 -0
  557. package/lib/select/examples/disabled-option.md +21 -0
  558. package/lib/select/examples/disabled.md +24 -0
  559. package/lib/select/examples/field-names.md +40 -0
  560. package/lib/select/examples/item-suffix.md +84 -0
  561. package/lib/select/examples/multiple.md +61 -0
  562. package/lib/select/examples/no-data.md +12 -0
  563. package/lib/select/examples/prefix-icon.md +74 -0
  564. package/lib/select/index.js +1 -1
  565. package/lib/select/index.js.map +1 -1
  566. package/lib/skeleton/README.mdx +10 -0
  567. package/lib/skeleton/examples/animation.md +13 -0
  568. package/lib/skeleton/examples/avatar.md +13 -0
  569. package/lib/skeleton/examples/basic.md +12 -0
  570. package/lib/skeleton/examples/rows.md +13 -0
  571. package/lib/skeleton/examples/title.md +12 -0
  572. package/lib/skeleton/index.js.map +1 -1
  573. package/lib/spin/README.mdx +10 -0
  574. package/lib/spin/examples/basic.md +67 -0
  575. package/lib/spin/index.js +3 -3
  576. package/lib/spin/index.js.map +1 -1
  577. package/lib/switch/README.mdx +10 -0
  578. package/lib/switch/examples/basic.md +24 -0
  579. package/lib/switch/examples/checked-text.md +17 -0
  580. package/lib/switch/examples/disabled.md +15 -0
  581. package/lib/switch/examples/loading.md +17 -0
  582. package/lib/switch/index.js +1 -1
  583. package/lib/switch/index.js.map +1 -1
  584. package/lib/table/README.mdx +10 -0
  585. package/lib/table/examples/basic.md +29 -0
  586. package/lib/table/examples/key.md +29 -0
  587. package/lib/table/examples/order.md +29 -0
  588. package/lib/table/examples/pagination.md +67 -0
  589. package/lib/table/examples/render.md +92 -0
  590. package/lib/table/examples/size.md +52 -0
  591. package/lib/table/examples/summary.md +40 -0
  592. package/lib/table/index.js +1 -1
  593. package/lib/table/index.js.map +1 -1
  594. package/lib/tabs/README.mdx +10 -0
  595. package/lib/tabs/examples/add-remove.md +115 -0
  596. package/lib/tabs/examples/animated.md +33 -0
  597. package/lib/tabs/examples/basic.md +32 -0
  598. package/lib/tabs/examples/card.md +33 -0
  599. package/lib/tabs/examples/center.md +33 -0
  600. package/lib/tabs/examples/disabled-tab.md +34 -0
  601. package/lib/tabs/examples/disabled.md +33 -0
  602. package/lib/tabs/examples/extra.md +65 -0
  603. package/lib/tabs/index.js +2 -2
  604. package/lib/tabs/index.js.map +1 -1
  605. package/lib/tag/README.mdx +10 -0
  606. package/lib/tag/examples/basic.md +28 -0
  607. package/lib/tag/examples/bordered.md +19 -0
  608. package/lib/tag/examples/color.md +25 -0
  609. package/lib/tag/examples/icon.md +21 -0
  610. package/lib/tag/examples/type.md +19 -0
  611. package/lib/tag/index.js +3 -3
  612. package/lib/tag/index.js.map +1 -1
  613. package/lib/theme/README.mdx +10 -0
  614. package/lib/theme/examples/colors.md +123 -0
  615. package/lib/theme/examples/theme.md +19 -0
  616. package/lib/theme/index.js +1 -1
  617. package/lib/theme/index.js.map +1 -1
  618. package/lib/tree/README.mdx +10 -0
  619. package/lib/tree/examples/basic.md +108 -0
  620. package/lib/tree/examples/custom-render.md +115 -0
  621. package/lib/tree/examples/direction.md +100 -0
  622. package/lib/tree/examples/field-names.md +114 -0
  623. package/lib/tree/examples/multiple.md +117 -0
  624. package/lib/tree/examples/readonly.md +90 -0
  625. package/lib/tree/examples/render-tree-string1.md +70 -0
  626. package/lib/tree/examples/render-tree-string2.md +52 -0
  627. package/lib/tree/examples/schema.md +130 -0
  628. package/lib/tree/examples/size.md +125 -0
  629. package/lib/tree/examples/toggle.md +71 -0
  630. package/lib/tree/index.js +1 -1
  631. package/lib/tree/index.js.map +1 -1
  632. package/lib/tree/register.js.map +1 -1
  633. package/lib/typography/README.mdx +10 -0
  634. package/lib/typography/examples/basic.md +27 -0
  635. package/lib/typography/examples/tag.md +25 -0
  636. package/lib/typography/examples/truncated.md +17 -0
  637. package/lib/typography/index.js.map +1 -1
  638. package/package.json +18 -18
  639. package/types/avatar/group.d.ts +1 -1
  640. package/types/back-top/index.d.ts +1 -1
  641. package/types/capture-screen/index.d.ts +1 -1
  642. package/types/color-palette/index.d.ts +1 -1
  643. package/types/color-picker/index.d.ts +1 -1
  644. package/types/cron/begin-interval.d.ts +3 -3
  645. package/types/cron/index.d.ts +5 -5
  646. package/types/cron/item.d.ts +4 -4
  647. package/types/cron/period.d.ts +3 -3
  648. package/types/cron/some.d.ts +3 -3
  649. package/types/date-picker/date.d.ts +2 -2
  650. package/types/date-picker/index.d.ts +2 -2
  651. package/types/date-picker/month.d.ts +2 -2
  652. package/types/date-picker/panel.d.ts +3 -3
  653. package/types/date-picker/time.d.ts +2 -2
  654. package/types/date-picker/year.d.ts +2 -2
  655. package/types/dropdown/index.d.ts +1 -1
  656. package/types/empty/index.d.ts +1 -1
  657. package/types/from-schema/index.d.ts +4 -4
  658. package/types/index.d.ts +12 -12
  659. package/types/md/index.d.ts +1 -1
  660. package/types/modal/index.d.ts +1 -1
  661. package/types/notification/index.d.ts +1 -1
  662. package/types/pagination/index.d.ts +1 -1
  663. package/types/provider/index.d.ts +1 -1
  664. package/types/segmented/index.d.ts +1 -1
  665. package/types/select/index.d.ts +1 -1
  666. package/types/table/index.d.ts +1 -1
  667. package/types/tabs/index.d.ts +1 -1
  668. package/types/tree/index.d.ts +1 -1
  669. package/umd/assets/svg/favicon.svg +1 -0
  670. package/umd/index.js +2 -2
  671. package/umd/js/46e8f96158e59015.js +1 -0
package/es/input/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{use as e}from"solid-js/web";import{template as t}from"solid-js/web";import{setAttribute as o}from"solid-js/web";import{memo as l}from"solid-js/web";import{insert as r}from"solid-js/web";import{effect as n}from"solid-js/web";import{delegateEvents as s}from"solid-js/web";import{createComponent as i}from"solid-js/web";import{className as a}from"solid-js/web";import{addEventListener as u}from"solid-js/web";let d=t("<style> "),c=t("<style>"),p=t('<span class="prefix">'),f=t('<label class="label">'),v=t('<span class="caps-lock">'),m=t('<span class="suffix">'),h=t('<fieldset><input class="input" part="input">');import{Show as w,createEffect as b,createMemo as g,createSignal as y,mergeProps as $}from"solid-js";import _ from"@moneko/common/lib/isFunction";import{css as x,cx as C}from"@moneko/css";import{customElement as k}from"solid-element";import{style as I}from"./style";import j from"../theme";function L(t){let s;let{baseStyle:$}=j,[k,L]=y(),[D,K]=y(!1);function z(e){var o;null==t.onChange||t.onChange.call(t,function(e){if(t.parser)return _(t.parser)?t.parser(e):t.parser;if("number"===t.type&&"string"==typeof e){let t=e.replace(/[^\d]/g,"");return t.length?parseFloat(t):void 0}return e}(null==(o=e.target)?void 0:o.value))}function E(e){null==t.onMouseDown||t.onMouseDown.call(t,e)}function M(e){t.capsLockIcon&&K(e.getModifierState("CapsLock")),null==t.onKeyDown||t.onKeyDown.call(t,e)}function B(e){null==t.onBlur||t.onBlur.call(t,e)}function F(e){null==t.onKeyUp||t.onKeyUp.call(t,e)}let P=g(()=>t.formatter?_(t.formatter)?t.formatter(t.value):t.formatter:t.value);return b(()=>{t.label&&L(`.label {--x: ${(null==s?void 0:s.offsetLeft)||0}px;opacity:1;}`)}),[(()=>{let e=d(),t=e.firstChild;return n(()=>t.data=$()),e})(),(()=>{let e=c();return e.textContent=I,e})(),(()=>{let e=d(),t=e.firstChild;return n(()=>t.data=k()),e})(),i(w,{get when(){return t.css},get children(){let e=d(),o=e.firstChild;return n(()=>o.data=x(t.css)),e}}),(()=>{let d=h(),c=d.firstChild,b=s;return r(d,i(w,{get when(){return t.prefixIcon},get children(){let e=p();return r(e,()=>t.prefixIcon),e}}),c),u(c,"blur",B),u(c,"keyup",F,!0),u(c,"keydown",M,!0),u(c,"mousedown",E,!0),u(c,"change",z),"function"==typeof b?e(b,c):s=c,r(d,i(w,{get when(){return t.label},get children(){let e=f();return r(e,()=>t.label),e}}),null),r(d,i(w,{get when(){return l(()=>!!t.capsLockIcon)()&&D()},get children(){let e=v();return r(e,()=>t.capsLockIcon),e}}),null),r(d,i(w,{get when(){return t.suffixIcon},get children(){let e=m();return r(e,()=>t.suffixIcon),e}}),null),n(e=>{let l=C("fieldset",t.size,t.status,t.class),r=t.disabled,n=t.type,s=t.autoComplete,i=t.accept,u=t.placeholder;return l!==e._v$&&a(d,e._v$=l),r!==e._v$2&&(d.disabled=e._v$2=r),n!==e._v$3&&o(c,"type",e._v$3=n),s!==e._v$4&&o(c,"autocomplete",e._v$4=s),i!==e._v$5&&o(c,"accept",e._v$5=i),u!==e._v$6&&o(c,"placeholder",e._v$6=u),e},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0}),n(()=>c.value=P()),d})()]}export const defaultInportProps={class:void 0,css:void 0,suffixIcon:void 0,prefixIcon:void 0,capsLockIcon:void 0,size:void 0,disabled:void 0,status:void 0,type:void 0,label:void 0,value:void 0,defaultValue:void 0,formatter:void 0,parser:void 0,onChange:void 0,onMouseDown:void 0,onKeyDown:void 0,accept:void 0,autoComplete:void 0,placeholder:"请输入"};k("n-input",defaultInportProps,(e,t)=>{let o=t.element;return i(L,$({css:o.css,size:o.size||"normal",value:o.value||o.defaultValue||"",type:o.type||"text",onChange(e){o.dispatchEvent(new CustomEvent("change",{detail:e}))}},e))});export default L;s(["keydown","keyup","mousedown"]);
1
+ import{use as e}from"solid-js/web";import{template as t}from"solid-js/web";import{setAttribute as o}from"solid-js/web";import{memo as l}from"solid-js/web";import{insert as r}from"solid-js/web";import{effect as n}from"solid-js/web";import{delegateEvents as s}from"solid-js/web";import{createComponent as i}from"solid-js/web";import{className as a}from"solid-js/web";import{addEventListener as u}from"solid-js/web";let d=t("<style> "),c=t("<style>"),p=t('<span class="prefix">'),f=t('<label class="label">'),v=t('<span class="caps-lock">'),m=t('<span class="suffix">'),h=t('<fieldset><input class="input" part="input">');import{createEffect as w,createMemo as b,createSignal as g,mergeProps as y,Show as $}from"solid-js";import _ from"@moneko/common/lib/isFunction";import{css as x,cx as C}from"@moneko/css";import{customElement as k}from"solid-element";import I from"../theme";import{style as j}from"./style";function L(t){let s;let{baseStyle:y}=I,[k,L]=g(),[D,K]=g(!1);function z(e){var o;null==t.onChange||t.onChange.call(t,function(e){if(t.parser)return _(t.parser)?t.parser(e):t.parser;if("number"===t.type&&"string"==typeof e){let t=e.replace(/[^\d]/g,"");return t.length?parseFloat(t):void 0}return e}(null==(o=e.target)?void 0:o.value))}function E(e){null==t.onMouseDown||t.onMouseDown.call(t,e)}function M(e){t.capsLockIcon&&K(e.getModifierState("CapsLock")),null==t.onKeyDown||t.onKeyDown.call(t,e)}function B(e){null==t.onBlur||t.onBlur.call(t,e)}function F(e){null==t.onKeyUp||t.onKeyUp.call(t,e)}let P=b(()=>t.formatter?_(t.formatter)?t.formatter(t.value):t.formatter:t.value);return w(()=>{t.label&&L(`.label {--x: ${(null==s?void 0:s.offsetLeft)||0}px;opacity:1;}`)}),[(()=>{let e=d(),t=e.firstChild;return n(()=>t.data=y()),e})(),(()=>{let e=c();return e.textContent=j,e})(),(()=>{let e=d(),t=e.firstChild;return n(()=>t.data=k()),e})(),i($,{get when(){return t.css},get children(){let e=d(),o=e.firstChild;return n(()=>o.data=x(t.css)),e}}),(()=>{let d=h(),c=d.firstChild,w=s;return r(d,i($,{get when(){return t.prefixIcon},get children(){let e=p();return r(e,()=>t.prefixIcon),e}}),c),u(c,"blur",B),u(c,"keyup",F,!0),u(c,"keydown",M,!0),u(c,"mousedown",E,!0),u(c,"change",z),"function"==typeof w?e(w,c):s=c,r(d,i($,{get when(){return t.label},get children(){let e=f();return r(e,()=>t.label),e}}),null),r(d,i($,{get when(){return l(()=>!!t.capsLockIcon)()&&D()},get children(){let e=v();return r(e,()=>t.capsLockIcon),e}}),null),r(d,i($,{get when(){return t.suffixIcon},get children(){let e=m();return r(e,()=>t.suffixIcon),e}}),null),n(e=>{let l=C("fieldset",t.size,t.status,t.class),r=t.disabled,n=t.type,s=t.autoComplete,i=t.accept,u=t.placeholder;return l!==e._v$&&a(d,e._v$=l),r!==e._v$2&&(d.disabled=e._v$2=r),n!==e._v$3&&o(c,"type",e._v$3=n),s!==e._v$4&&o(c,"autocomplete",e._v$4=s),i!==e._v$5&&o(c,"accept",e._v$5=i),u!==e._v$6&&o(c,"placeholder",e._v$6=u),e},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0}),n(()=>c.value=P()),d})()]}export const defaultInportProps={class:void 0,css:void 0,suffixIcon:void 0,prefixIcon:void 0,capsLockIcon:void 0,size:void 0,disabled:void 0,status:void 0,type:void 0,label:void 0,value:void 0,defaultValue:void 0,formatter:void 0,parser:void 0,onChange:void 0,onMouseDown:void 0,onKeyDown:void 0,accept:void 0,autoComplete:void 0,placeholder:"请输入"};k("n-input",defaultInportProps,(e,t)=>{let o=t.element;return i(L,y({css:o.css,size:o.size||"normal",value:o.value||o.defaultValue||"",type:o.type||"text",onChange(e){o.dispatchEvent(new CustomEvent("change",{detail:e}))}},e))});export default L;s(["keydown","keyup","mousedown"]);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/input/index.tsx"],"sourcesContent":["import { Show, createEffect, createMemo, createSignal, mergeProps } 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 textContent={baseStyle()} />\n <style textContent={style} />\n <style textContent={x()} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\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 <Input {...props} />;\n});\n\nexport default Input;\n"],"names":["Show","createEffect","createMemo","createSignal","mergeProps","isFunction","css","cx","customElement","style","theme","Input","props","inputRef","baseStyle","x","setX","capsLock","setCapsLock","handleInput","e","onChange","parserValue","val","parser","type","num","replace","length","parseFloat","target","value","handleMouseDown","onMouseDown","handleKeyDown","capsLockIcon","getModifierState","onKeyDown","handleBlur","onBlur","handleKeyUp","onKeyUp","formatter","label","offsetLeft","prefixIcon","suffixIcon","size","status","class","disabled","autoComplete","accept","placeholder","defaultInportProps","defaultValue","_","opt","el","element","dispatchEvent","CustomEvent","detail"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/input/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, mergeProps, Show } from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { BasicConfig, CustomElement } from '..';\nimport theme from '../theme';\n\nimport { style } from './style';\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 textContent={baseStyle()} />\n <style textContent={style} />\n <style textContent={x()} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\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 <Input {...props} />;\n});\n\nexport default Input;\n"],"names":["createEffect","createMemo","createSignal","mergeProps","Show","isFunction","css","cx","customElement","theme","style","Input","props","inputRef","baseStyle","x","setX","capsLock","setCapsLock","handleInput","e","onChange","parserValue","val","parser","type","num","replace","length","parseFloat","target","value","handleMouseDown","onMouseDown","handleKeyDown","capsLockIcon","getModifierState","onKeyDown","handleBlur","onBlur","handleKeyUp","onKeyUp","formatter","label","offsetLeft","prefixIcon","suffixIcon","size","status","class","disabled","autoComplete","accept","placeholder","defaultInportProps","defaultValue","_","opt","el","element","dispatchEvent","CustomEvent","detail"],"mappings":"0mBAAA,QAASA,gBAAAA,CAAY,CAAEC,cAAAA,CAAU,CAAEC,gBAAAA,CAAY,CAAEC,cAAAA,CAAU,CAAEC,QAAAA,CAAI,KAAQ,UAAW,AACpF,QAASC,MAAkB,+BAAiB,AAC5C,QAASC,OAAAA,CAAG,CAAEC,MAAAA,CAAE,KAAQ,aAAc,AACtC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAG9C,QAAOC,MAAW,UAAW,AAE7B,QAASC,SAAAA,CAAK,KAAQ,SAAU,CAoDhC,SAASC,EAAMC,CAAiB,MAE1BC,EADJ,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGL,EAEhB,CAACM,EAAGC,EAAK,CAAGd,IACZ,CAACe,EAAUC,EAAY,CAAGhB,EAAa,CAAA,GAa7C,SAASiB,EAAYC,CAAwC,MAC9BA,QAA7BR,EAAMS,QAAQ,EAAdT,EAAMS,QAAQ,MAAdT,EAAiBU,AAZnB,SAAqBC,CAAwB,EAC3C,GAAIX,EAAMY,MAAM,CACd,OAAOnB,EAAWO,EAAMY,MAAM,EAAIZ,EAAMY,MAAM,CAACD,GAAOX,EAAMY,MAAM,CAC7D,GAAIZ,AAAe,WAAfA,EAAMa,IAAI,EAAiB,AAAe,UAAf,OAAOF,EAAkB,CAC7D,IAAMG,EAAMH,EAAII,OAAO,CAAC,SAAU,IAElC,OAAOD,EAAIE,MAAM,CAAGC,WAAWH,GAAO,KAAK,CAC7C,CACA,OAAOH,CACT,SAG+BH,EAAAA,EAAEU,MAAM,SAARV,EAAUW,KAAK,EAC9C,CACA,SAASC,EAAgBZ,CAAa,QACpCR,EAAMqB,WAAW,EAAjBrB,EAAMqB,WAAW,MAAjBrB,EAAoBQ,EACtB,CACA,SAASc,EAAcd,CAAgB,EACjCR,EAAMuB,YAAY,EACpBjB,EAAYE,EAAEgB,gBAAgB,CAAC,mBAEjCxB,EAAMyB,SAAS,EAAfzB,EAAMyB,SAAS,MAAfzB,EAAkBQ,EACpB,CACA,SAASkB,EAAWlB,CAAa,QAC/BR,EAAM2B,MAAM,EAAZ3B,EAAM2B,MAAM,MAAZ3B,EAAeQ,EACjB,CACA,SAASoB,EAAYpB,CAAgB,QACnCR,EAAM6B,OAAO,EAAb7B,EAAM6B,OAAO,MAAb7B,EAAgBQ,EAClB,CAEA,IAAMW,EAAQ9B,EAAW,IACvB,AAAIW,EAAM8B,SAAS,CACVrC,EAAWO,EAAM8B,SAAS,EAAI9B,EAAM8B,SAAS,CAAC9B,EAAMmB,KAAK,EAAInB,EAAM8B,SAAS,CAE9E9B,EAAMmB,KAAK,EASpB,OANA/B,EAAa,KACPY,EAAM+B,KAAK,EACb3B,EAAK,CAAC,aAAa,EAAEH,OAAAA,SAAAA,EAAU+B,UAAU,GAAI,EAAE,cAAc,CAAC,CAElE,uDAIwB9B,gDACAJ,2DACAK,aACnBX,qBAAWQ,EAAMN,GAAG,8DACCA,EAAIM,EAAMN,GAAG,yCAU1BO,eAJNT,qBAAWQ,EAAMiC,UAAU,0CACJjC,EAAMiC,UAAU,qBAe9BP,eADCE,oBADEN,sBADEF,mBANHb,+BAHLN,UAcNT,qBAAWQ,EAAM+B,KAAK,0CACC/B,EAAM+B,KAAK,mBAElCvC,qBAAWQ,QAAAA,EAAMuB,YAAY,KAAIlB,6CACPL,EAAMuB,YAAY,mBAE5C/B,qBAAWQ,EAAMkC,UAAU,0CACJlC,EAAMkC,UAAU,yBA5BjCvC,EAAG,WAAYK,EAAMmC,IAAI,CAAEnC,EAAMoC,MAAM,CAAEpC,EAAMqC,KAAK,IACjDrC,EAAMsC,QAAQ,GAUhBtC,EAAMa,IAAI,GAEFb,EAAMuC,YAAY,GACxBvC,EAAMwC,MAAM,GACPxC,EAAMyC,WAAW,kTAHvBtB,WAqBjB,CAIA,OAAO,MAAMuB,mBAAqB,CAChCL,MAAO,KAAK,EACZ3C,IAAK,KAAK,EACVwC,WAAY,KAAK,EACjBD,WAAY,KAAK,EACjBV,aAAc,KAAK,EACnBY,KAAM,KAAK,EACXG,SAAU,KAAK,EACfF,OAAQ,KAAK,EACbvB,KAAM,KAAK,EACXkB,MAAO,KAAK,EACZZ,MAAO,KAAK,EACZwB,aAAc,KAAK,EACnBb,UAAW,KAAK,EAChBlB,OAAQ,KAAK,EACbH,SAAU,KAAK,EACfY,YAAa,KAAK,EAClBI,UAAW,KAAK,EAChBe,OAAQ,KAAK,EACbD,aAAc,KAAK,EACnBE,YAAa,KACf,CAAE,CAEF7C,EAA0B,UAAW8C,mBAAoB,CAACE,EAAGC,KAC3D,IAAMC,EAAKD,EAAIE,OAAO,CAkBtB,SAAQhD,EAjBMR,EACZ,CACEG,IAAKoD,EAAGpD,GAAG,CACXyC,KAAMW,EAAGX,IAAI,EAAI,SACjBhB,MAAO2B,EAAG3B,KAAK,EAAI2B,EAAGH,YAAY,EAAI,GACtC9B,KAAMiC,EAAGjC,IAAI,EAAI,OACjBJ,SAASE,CAAqB,EAC5BmC,EAAGE,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQvC,CACV,GAEJ,CACF,EACAiC,GAIJ,EAEA,gBAAe7C,CAAM"}
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: 数据录入
3
+ title: 数字输入框
4
+ subtitle: n-input-number
5
+ icon: ①
6
+ ---
7
+
8
+ # 数字输入框
9
+
10
+ > 在页面中进行数字输入, 可以通过按下鼠标后拖动来快速调整数值
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: 基本使用
3
+ description: 可以通过 `value` 设置值, 通过 `change` 事件获取值变更的消息
4
+ order: 1
5
+ ---
6
+
7
+ ```html
8
+ <n-input-number label="获取焦点时按住鼠标左键开始拖动试试" value="0"></n-input-number>
9
+ <script>
10
+ const el = container.querySelector('n-input-number');
11
+
12
+ el.onchange = function (e) {
13
+ console.log('html', e.detail);
14
+ };
15
+ </script>
16
+ ```
17
+
18
+ ```jsx
19
+ <n-input-number
20
+ label="获取焦点时按住鼠标左键开始拖动试试"
21
+ value={0}
22
+ onChange={(e) => {
23
+ console.log('jsx', e.detail);
24
+ }}
25
+ />
26
+ ```
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: 自定义格式
3
+ description: 通过 `formatter` 和 `parser` 来自定义输入栏显示内容
4
+ order: 2
5
+ ---
6
+
7
+ ```html
8
+ <n-input-number label="完成度" min="0" max="1" step="0.01"></n-input-number>
9
+ <script>
10
+ const el = container.querySelector('n-input-number');
11
+
12
+ el.formatter = function (v = 0) {
13
+ return `${Number((v * 100).toFixed(2))}%`;
14
+ };
15
+ el.parser = function (v = '') {
16
+ return Number(v.replace(/%$/, '') || '0') / 100;
17
+ };
18
+ </script>
19
+ ```
20
+
21
+ ```jsx
22
+ <n-input-number
23
+ label="完成度"
24
+ min={0}
25
+ max={1}
26
+ step={0.01}
27
+ formatter={() =>
28
+ (v = 0) =>
29
+ `${Number((v * 100).toFixed(2))}%`
30
+ }
31
+ parser={() =>
32
+ (v = '0%') =>
33
+ Number(v.replace(/%$/, '')) / 100
34
+ }
35
+ />
36
+ ```
@@ -0,0 +1,13 @@
1
+ ---
2
+ title: 最大值 & 最小值
3
+ description: 通过设置 `min` 来约束最小值; 通过设置 `max` 来约束最大值
4
+ order: 3
5
+ ---
6
+
7
+ ```html
8
+ <n-input-number label="范围" placeholder="请输入0~100以内的数值" min="0" max="100"></n-input-number>
9
+ ```
10
+
11
+ ```jsx
12
+ <n-input-number label="范围" placeholder="请输入0~100以内的数值" min={0} max={100} />
13
+ ```
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/input-number/index.tsx"],"sourcesContent":["import { 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 <InputNumber {...props} />;\n },\n);\n\nexport default InputNumber;\n"],"names":["createEffect","createSignal","mergeProps","onCleanup","passiveSupported","css","cx","customElement","Input","defaultInportProps","style","InputNumber","props","move","setMove","mouseUp","_","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","document","body","addEventListener","passive","removeEventListener","class","opt","el","element","dispatchEvent","CustomEvent","detail"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/input-number/index.tsx"],"sourcesContent":["import { createEffect, createSignal, mergeProps, onCleanup } from 'solid-js';\nimport { passiveSupported } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement, InputProps } from '..';\nimport Input, { defaultInportProps } from '../input';\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 mouseMove({ movementX: 0, movementY: -1 });\n break;\n case 'ArrowDown':\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!)) {\n _val = '' as unknown as number;\n }\n if (typeof _val !== 'undefined') {\n if (_val < _.min) _val = _.min;\n if (_val > _.max) _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).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 <InputNumber {...props} />;\n },\n);\n\nexport default InputNumber;\n"],"names":["createEffect","createSignal","mergeProps","onCleanup","passiveSupported","css","cx","customElement","Input","defaultInportProps","style","InputNumber","props","move","setMove","mouseUp","_","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","document","body","addEventListener","passive","removeEventListener","class","opt","el","element","dispatchEvent","CustomEvent","detail"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ ---
2
+ type: 数据展示
3
+ title: 数学公式
4
+ subtitle: n-katex
5
+ icon: ∛
6
+ ---
7
+
8
+ export const katex = import('n-katex');
9
+
10
+ # 数学公式
11
+
12
+ > 使用该组件你需要安装 **[n-katex](https://www.npmjs.com/package/n-katex)**
13
+
14
+ ## Install
15
+
16
+ ```shell
17
+ yarn add n-katex -S
18
+ # or
19
+ npm install n-katex
20
+ ```
21
+
22
+ ## 在 jsx 中使用
23
+
24
+ ```jsx
25
+ import 'n-katex';
26
+
27
+ <n-katex>{'\\underbrace{a+b+\\dots+n}_{m2}'}</n-katex>;
28
+ ```
29
+
30
+ ## 在 html5 中使用
31
+
32
+ ```html
33
+ <!-- 引入 CDN 资源 -->
34
+ <script src="https://cdn.jsdelivr.net/npm/n-katex@1.0.5/umd/index.js"></script>
35
+ <!-- 使用 -->
36
+ <body>
37
+ 行内公式
38
+ <n-katex>\underbrace{a+b+\dots+n}_{m2}</n-katex>
39
+ </body>
40
+ ```
41
+
42
+ > [点击查看 KaTex 完整配置项](https://katex.org/docs/options.html)
@@ -0,0 +1,25 @@
1
+ ---
2
+ title: 块级公式
3
+ description: 单独使用一块区域作为公式展示
4
+ order: 2
5
+ ---
6
+
7
+ ```html
8
+ <n-katex display-mode="true" fleqn="true">
9
+ \begin{array}{c}
10
+ S= \binom{N}{n},A_{k}=\binom{M}{k}\cdot \binom{N-M}{n-k} \\
11
+ P\left ( A_{k}\right ) = \frac{\binom{M}{k}\cdot \binom{N-M}{n-k}}{\binom{N}{n}}
12
+ \end{array}
13
+ </n-katex>
14
+ ```
15
+
16
+ ```jsx
17
+ <n-katex display-mode="true" fleqn="false">
18
+ {`
19
+ \\begin{array}{c}
20
+ S= \\binom{N}{n},A_{k}=\\binom{M}{k}\\cdot \\binom{N-M}{n-k} \\\\
21
+ P\\left ( A_{k}\\right ) = \\frac{\\binom{M}{k}\\cdot \\binom{N-M}{n-k}}{\\binom{N}{n}}
22
+ \\end{array}
23
+ `}
24
+ </n-katex>
25
+ ```
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: 内联公式
3
+ description: 在行内与其余内容置于一处的效果
4
+ order: 1
5
+ ---
6
+
7
+ ```html
8
+ <p>
9
+ 行内公式
10
+ <n-katex>\underbrace{a+b+\dots+n}_{m2}</n-katex>
11
+ </p>
12
+ ```
13
+
14
+ ```jsx
15
+ <p>
16
+ 行内公式
17
+ <n-katex>{'\\underbrace{a+b+\\dots+n}_{m2}'}</n-katex>
18
+ </p>
19
+ ```
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: 数据展示
3
+ title: Markdown
4
+ subtitle: n-md
5
+ icon: 🔱
6
+ ---
7
+
8
+ # Markdown
9
+
10
+ > 在 web 页面中渲染 markdown 文档
@@ -0,0 +1,23 @@
1
+ ---
2
+ title: 直接在写在标签内
3
+ description: 直接在标签内写 `markdown` 内容
4
+ order: 1
5
+ ---
6
+
7
+ ```html
8
+ <n-md>
9
+ #### 第一种方式
10
+
11
+ !> 直接在写在标签内
12
+ </n-md>
13
+ ```
14
+
15
+ ```jsx
16
+ <n-md>
17
+ {`
18
+ #### 第一种方式
19
+
20
+ !> 直接在写在标签内
21
+ `}
22
+ </n-md>
23
+ ```
@@ -0,0 +1,32 @@
1
+ ---
2
+ title: 通过属性传递
3
+ description: 在 `text` 属性上传递 `markdown` 内容
4
+ order: 2
5
+ ---
6
+
7
+ ```html
8
+ <n-md></n-md>
9
+ <script>
10
+ const el = container.querySelector('n-md');
11
+ el.text = `
12
+ #### 第二种方式 (开启了图片查看器)
13
+
14
+ !> 写在 text 属性上
15
+
16
+ ![图片](https://react-photo-view.vercel.app/_next/static/media/5.7ace37c7.jpg)
17
+ `;
18
+ </script>
19
+ ```
20
+
21
+ ```jsx
22
+ <n-md
23
+ picture-viewer={false}
24
+ text={`
25
+ #### 第二种方式 (关闭了图片查看器)
26
+
27
+ !> 写在 text 属性上
28
+
29
+ ![图片](https://react-photo-view.vercel.app/_next/static/media/3.70695fb9.jpg)
30
+ `}
31
+ />
32
+ ```
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: 数学公式
3
+ description: 通过 `$` 包裹的将渲染为行内公式, 通过 `$$` 包裹的将渲染为块级公式
4
+ order: 3
5
+ ---
6
+
7
+ ```html
8
+ <n-md>
9
+ 内联公式$\left(\LARGE{AB}\right)$
10
+ 内联公式$\xcancel{ABC}$
11
+
12
+ $$
13
+ \begin{equation}
14
+ x = a_0 + \cfrac{1}{a_1
15
+ + \cfrac{1}{a_2
16
+ + \cfrac{1}{a_3 + \cfrac{1}{a_4} } } }
17
+ \end{equation}
18
+ $$
19
+ </n-md>
20
+ ```
21
+
22
+ ```jsx
23
+ <n-md
24
+ text={`
25
+ 内联公式$\\left(\\LARGE{AB}\\right)$
26
+ 内联公式$\\xcancel{ABC}$
27
+
28
+ $$
29
+ \\begin{equation}
30
+ x = a_0 + \\cfrac{1}{a_1
31
+ + \\cfrac{1}{a_2
32
+ + \\cfrac{1}{a_3 + \\cfrac{1}{a_4} } } }
33
+ \\end{equation}
34
+ $$`}
35
+ />
36
+ ```
package/es/md/index.js CHANGED
@@ -1,2 +1,2 @@
1
- function e(e,t,r,o,n,i,l){try{var a=e[i](l),s=a.value}catch(e){r(e);return}a.done?t(s):Promise.resolve(s).then(o,n)}function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}import{use as r}from"solid-js/web";import{template as o}from"solid-js/web";import{insert as n}from"solid-js/web";import{effect as i}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{className as a}from"solid-js/web";let s=o("<style> "),c=o("<style>"),d=o('<article class="n-md-box" part="box"><div class="n-md-body" part="body">'),u=o('<article part="box">');import{For as m,Match as h,Show as f,Switch as p,createEffect as v,mergeProps as b,onCleanup as g}from"solid-js";import w from"@moneko/common/lib/frameCallback";import{css as x,cx as y}from"@moneko/css";import{customElement as k}from"solid-element";import"../code";import"../img";import C from"../md-style";import $ from"../theme";function E(o){let k,E;let{baseStyle:L}=$,P=b({webWorker:!1,pictureViewer:!0,lazyPicture:!0,text:"",tools:["copy"],getAnchorContainer:()=>window},o);function j(){return new Worker("https://cdn.jsdelivr.net/npm/neko-ui@latest/es/md/worker.js")}let A=P.webWorker?j():void 0;function O(e){E&&(E.innerHTML=e.data)}function z(){var r;return r=function*(e){let{text:r,pictureViewer:o,lazyPicture:n,langToolbar:i}=e,l=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)t.indexOf(r=i[o])>=0||(n[r]=e[r]);return n}(e,["text","pictureViewer","lazyPicture","langToolbar"]),a=(yield import("marked-completed")).default;k||((k=new a.Renderer).katexBlock=e=>`<n-katex display-mode="true">${e}</n-katex>`,k.katexInline=e=>`<n-katex>${e}</n-katex>`),k.image=(e,t,r)=>`<n-img lazy="${n}" disabled="${!o}" role="img" src="${e}" alt="${r}" ${t?`title="${t}"`:""}></n-img>`;let s=!!(null==i?void 0:i.length);k.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${s}" language="${t}" ${l.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},O({data:a(r,t({renderer:k,langToolbar:i,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0},l))})},(z=function(){var t=this,o=arguments;return new Promise(function(n,i){var l=r.apply(t,o);function a(t){e(l,n,i,a,s,"next",t)}function s(t){e(l,n,i,a,s,"throw",t)}a(void 0)})}).apply(this,arguments)}v(()=>{P.webWorker&&(A||(A=j()),A.addEventListener("message",O))}),v(()=>{A?A.postMessage(JSON.stringify({text:P.text,langLineNumber:P.lineNumber,langToolbar:P.tools,pictureViewer:P.pictureViewer,lazyPicture:P.lazyPicture})):w(()=>(function(e){return z.apply(this,arguments)})({text:P.text,langLineNumber:P.lineNumber,langToolbar:P.tools,pictureViewer:P.pictureViewer,lazyPicture:P.lazyPicture}))}),g(()=>{A&&(A.removeEventListener("message",O),A.terminate())});let N=[],T=[],V=[];function I(e){e.preventDefault(),e.stopPropagation();let t=e.target;if(t.hash){var r;null==E||null==(r=E.querySelector(decodeURIComponent(t.hash)))||r.scrollIntoView({behavior:"smooth",block:"nearest"}),N.forEach(e=>e.classList.remove("active")),t.classList.add("active")}else window.open(t.href)}function W(e){e.forEach(e=>{let t;let r=e.target.getAttribute("id"),o=e.target.querySelectorAll("a");if(N.forEach(e=>{e.hash===`#${r}`?t=e:e.hash||o.forEach(r=>{r.href===e.href&&(t=e)})}),t){let r=V.indexOf(t);if(V.forEach(e=>{e.classList.remove("active")}),e.isIntersecting?V.push(t):-1!==r&&V.splice(r,1),V[0]){var n;V[0].classList.add("active"),null==(n=V[0].offsetParent)||n.scrollTo({top:V[0].offsetTop})}}})}return v(()=>{var e;let t;E&&(null==(e=P.text)?void 0:e.startsWith("[TOC]"))&&(N=[...E.querySelectorAll(".n-md-toc a[href]")],T=[...E.querySelectorAll("h1, h2, h3, h4, h5, h6")],t=new IntersectionObserver(W,{rootMargin:"-50px 0px",threshold:.5}),T.forEach(e=>t.observe(e)),N.forEach(e=>{e.addEventListener("click",I)})),g(()=>{t&&(T.forEach(e=>t.unobserve(e)),t.disconnect()),N.forEach(e=>{e.removeEventListener("click",I)})})}),[(()=>{let e=s(),t=e.firstChild;return i(()=>t.data=L()),e})(),(()=>{let e=c();return e.textContent=C,e})(),l(f,{get when(){return P.css},get children(){let e=s(),t=e.firstChild;return i(()=>t.data=x(P.css)),e}}),l(p,{get children(){return[l(h,{get when(){var R;return null==(R=P.children)?void 0:R.length},get children(){let e=d();return n(e.firstChild,l(m,{get each(){return P.children},children:e=>e})),e}}),l(h,{get when(){return P.text},get children(){let e=u(),t=E;return"function"==typeof t?r(t,e):E=e,i(()=>a(e,y("n-md-box",P.class))),e}})]}})]}k("n-md",{class:void 0,pictureViewer:void 0,lazyPicture:void 0,lineNumber:!0,text:void 0,tools:void 0,getAnchorContainer:void 0,css:void 0,children:void 0,notRender:void 0,webWorker:void 0},(e,t)=>{let r=t.element,o=b({text:!e.notRender&&r.textContent||r.text,css:r.css,tools:r.tools,getAnchorContainer:r.getAnchorContainer},e);return v(()=>{r.removeAttribute("css"),r.replaceChildren()}),l(E,o)});export default E;
1
+ function e(e,t,r,o,n,i,l){try{var a=e[i](l),s=a.value}catch(e){r(e);return}a.done?t(s):Promise.resolve(s).then(o,n)}function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}import{use as r}from"solid-js/web";import{template as o}from"solid-js/web";import"solid-js/web";import{insert as n}from"solid-js/web";import{effect as i}from"solid-js/web";import{createComponent as l}from"solid-js/web";import{className as a}from"solid-js/web";let s=o("<style> "),c=o("<style>"),d=o('<article class="n-md-box" part="box"><div class="n-md-body" part="body">'),u=o('<article part="box">');import{createEffect as m,For as h,Match as f,mergeProps as p,onCleanup as v,Show as b,Switch as g}from"solid-js";import w from"@moneko/common/lib/frameCallback";import{css as x,cx as y}from"@moneko/css";import{customElement as k}from"solid-element";import C from"../md-style";import $ from"../theme";import"../code";import"../img";function j(o){let k,j;let{baseStyle:E}=$,L=p({webWorker:!1,pictureViewer:!0,lazyPicture:!0,text:"",tools:["copy"],getAnchorContainer:()=>window},o);function P(){return new Worker("https://cdn.jsdelivr.net/npm/neko-ui@latest/es/md/worker.js")}let A=L.webWorker?P():void 0;function O(e){j&&(j.innerHTML=e.data)}function z(){var r;return r=function*(e){let{text:r,pictureViewer:o,lazyPicture:n,langToolbar:i}=e,l=function(e,t){if(null==e)return{};var r,o,n={},i=Object.keys(e);for(o=0;o<i.length;o++)t.indexOf(r=i[o])>=0||(n[r]=e[r]);return n}(e,["text","pictureViewer","lazyPicture","langToolbar"]),a=(yield import("marked-completed")).default;k||((k=new a.Renderer).katexBlock=e=>`<n-katex display-mode="true">${e}</n-katex>`,k.katexInline=e=>`<n-katex>${e}</n-katex>`),k.image=(e,t,r)=>`<n-img lazy="${n}" disabled="${!o}" role="img" src="${e}" alt="${r}" ${t?`title="${t}"`:""}></n-img>`;let s=!!(null==i?void 0:i.length);k.code=function(e,t){return"treeview"===t?`<n-tree data="${e}" />`:`<n-code class="n-code" toolbar="${s}" language="${t}" ${l.langLineNumber?'line-number="true"':""}>${encodeURIComponent(e)}</n-code>`},O({data:a(r,t({renderer:k,langToolbar:i,headerPrefix:"# ",breaks:!0,pedantic:!1,smartLists:!0,smartypants:!0,xhtml:!0},l))})},(z=function(){var t=this,o=arguments;return new Promise(function(n,i){var l=r.apply(t,o);function a(t){e(l,n,i,a,s,"next",t)}function s(t){e(l,n,i,a,s,"throw",t)}a(void 0)})}).apply(this,arguments)}m(()=>{L.webWorker&&(A||(A=P()),A.addEventListener("message",O))}),m(()=>{A?A.postMessage(JSON.stringify({text:L.text,langLineNumber:L.lineNumber,langToolbar:L.tools,pictureViewer:L.pictureViewer,lazyPicture:L.lazyPicture})):w(()=>(function(e){return z.apply(this,arguments)})({text:L.text,langLineNumber:L.lineNumber,langToolbar:L.tools,pictureViewer:L.pictureViewer,lazyPicture:L.lazyPicture}))}),v(()=>{A&&(A.removeEventListener("message",O),A.terminate())});let N=[],T=[],V=[];function I(e){e.preventDefault(),e.stopPropagation();let t=e.target;if(t.hash){var r;null==j||null==(r=j.querySelector(decodeURIComponent(t.hash)))||r.scrollIntoView({behavior:"smooth",block:"nearest"}),N.forEach(e=>{e.classList.remove("active")}),t.classList.add("active")}else window.open(t.href)}function W(e){e.forEach(e=>{let t;let r=e.target.getAttribute("id"),o=e.target.querySelectorAll("a");if(N.forEach(e=>{e.hash===`#${r}`?t=e:e.hash||o.forEach(r=>{r.href===e.href&&(t=e)})}),t){let r=V.indexOf(t);if(V.forEach(e=>{e.classList.remove("active")}),e.isIntersecting?V.push(t):-1!==r&&V.splice(r,1),V[0]){var n;V[0].classList.add("active"),null==(n=V[0].offsetParent)||n.scrollTo({top:V[0].offsetTop})}}})}return m(()=>{let e;j&&L.text.startsWith("[TOC]")&&(N=[...j.querySelectorAll(".n-md-toc a[href]")],T=[...j.querySelectorAll("h1, h2, h3, h4, h5, h6")],e=new IntersectionObserver(W,{rootMargin:"-50px 0px",threshold:.5}),T.forEach(t=>{e.observe(t)}),N.forEach(e=>{e.addEventListener("click",I)})),v(()=>{e&&(T.forEach(t=>{e.unobserve(t)}),e.disconnect()),N.forEach(e=>{e.removeEventListener("click",I)})})}),[(()=>{let e=s(),t=e.firstChild;return i(()=>t.data=E()),e})(),(()=>{let e=c();return e.textContent=C,e})(),l(b,{get when(){return L.css},get children(){let e=s(),t=e.firstChild;return i(()=>t.data=x(L.css)),e}}),l(g,{get children(){return[l(f,{get when(){return(L.children||[]).length>0},get children(){let e=d();return n(e.firstChild,l(h,{get each(){return L.children},children:e=>e})),e}}),l(f,{get when(){return L.text},get children(){let e=u(),t=j;return"function"==typeof t?r(t,e):j=e,i(()=>a(e,y("n-md-box",L.class))),e}})]}})]}k("n-md",{class:void 0,pictureViewer:void 0,lazyPicture:void 0,lineNumber:!0,text:void 0,tools:void 0,getAnchorContainer:void 0,css:void 0,children:void 0,notRender:void 0,webWorker:void 0},(e,t)=>{let r=t.element,o=p({text:!e.notRender&&r.textContent||r.text,css:r.css,tools:r.tools,getAnchorContainer:r.getAnchorContainer},e);return m(()=>{r.removeAttribute("css"),r.replaceChildren()}),l(j,o)});export default j;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/md/index.tsx"],"sourcesContent":["import { For, Match, Show, Switch, createEffect, mergeProps, onCleanup } from 'solid-js';\nimport { frameCallback } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport '../code';\nimport '../img';\nimport mdStyle from '../md-style';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nfunction MD(_props: MdProps) {\n let renderer: marked.Renderer | undefined;\n let ref: HTMLDivElement | undefined;\n const { baseStyle } = theme;\n const props = mergeProps(\n {\n webWorker: false,\n pictureViewer: true,\n lazyPicture: true,\n text: '',\n tools: ['copy'],\n getAnchorContainer: () => window as unknown as HTMLElement,\n },\n _props,\n );\n\n function initWorker() {\n return new Worker('https://cdn.jsdelivr.net/npm/neko-ui@latest/es/md/worker.js');\n }\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function update(e: { data: string }) {\n if (ref) {\n ref.innerHTML = e.data;\n }\n }\n async function postMessage(opt: {\n text: string;\n pictureViewer?: boolean;\n lazyPicture?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n }) {\n const { text, pictureViewer, lazyPicture, langToolbar, ...options } = opt;\n const marked = (await import('marked-completed')).default;\n\n if (!renderer) {\n renderer = new marked.Renderer();\n\n renderer.katexBlock = (code: string) => {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n };\n renderer.katexInline = (code: string) => {\n return `<n-katex>${code}</n-katex>`;\n };\n }\n\n renderer.image = (src: string, title: string, alt: string) => {\n return `<n-img lazy=\"${lazyPicture}\" disabled=\"${!pictureViewer}\" role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n };\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" language=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n update({\n data: marked(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n }),\n });\n }\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n }),\n );\n } else {\n const call = () =>\n postMessage({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n });\n\n frameCallback(call);\n }\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n });\n let list: HTMLAnchorElement[] = [];\n let heading: HTMLHeadingElement[] = [];\n const active: HTMLAnchorElement[] = [];\n\n function handleAnchor(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n const a = e.target as HTMLAnchorElement;\n\n if (a.hash) {\n ref?.querySelector(decodeURIComponent(a.hash))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n list.forEach((item) => item.classList.remove('active'));\n a.classList.add('active');\n } else {\n window.open(a.href);\n }\n }\n function observerEntry(entries: IntersectionObserverEntry[]) {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const all = entry.target.querySelectorAll('a');\n let a: HTMLAnchorElement | undefined;\n\n list.forEach((l) => {\n if (l.hash === `#${id}`) {\n a = l;\n } else if (!l.hash) {\n all.forEach((e) => {\n if (e.href === l.href) {\n a = l;\n }\n });\n }\n });\n if (a) {\n const idx = active.indexOf(a);\n\n active.forEach((e) => {\n e.classList.remove('active');\n });\n if (entry.isIntersecting) {\n active.push(a);\n } else if (idx !== -1) {\n active.splice(idx, 1);\n }\n if (active[0]) {\n active[0].classList.add('active');\n active[0].offsetParent?.scrollTo({\n top: active[0].offsetTop,\n });\n }\n }\n });\n }\n createEffect(() => {\n let observer: IntersectionObserver;\n\n if (ref && props.text?.startsWith('[TOC]')) {\n list = [...ref.querySelectorAll<HTMLAnchorElement>('.n-md-toc a[href]')];\n heading = [...ref.querySelectorAll<HTMLHeadingElement>('h1, h2, h3, h4, h5, h6')];\n observer = new IntersectionObserver(observerEntry, {\n rootMargin: '-50px 0px',\n threshold: 0.5,\n });\n heading.forEach((e) => observer.observe(e));\n list.forEach((e) => {\n e.addEventListener('click', handleAnchor);\n });\n }\n onCleanup(() => {\n if (observer) {\n heading.forEach((e) => observer.unobserve(e));\n observer.disconnect();\n }\n list.forEach((e) => {\n e.removeEventListener('click', handleAnchor);\n });\n });\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={mdStyle} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Switch>\n <Match when={(props.children as [])?.length}>\n <article class=\"n-md-box\" part=\"box\">\n <div class=\"n-md-body\" part=\"body\">\n <For each={props.children as []}>{(e) => e}</For>\n </div>\n </article>\n </Match>\n <Match when={props.text}>\n <article ref={ref} class={cx('n-md-box', props.class)} part=\"box\" />\n </Match>\n </Switch>\n </>\n );\n}\n\nexport interface MdProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** md内容 */\n text?: string;\n /** 开启图片查看器\n * @since 2.0.8\n * @default true\n */\n pictureViewer?: boolean;\n /** 开启图片懒加载\n * @since 2.8.3\n * @default true\n */\n lazyPicture?: boolean;\n /** 显示代码块行号\n * @default true\n */\n lineNumber?: boolean;\n /** 开启代码块工具条\n * @default ['copy']\n */\n tools?: 'copy'[];\n /** 指定滚动的容器\n * @default () => window\n */\n getAnchorContainer?: () => HTMLElement;\n /** 不进行解析\n * @default false\n */\n notRender?: boolean;\n children?: JSX.Element;\n /**\n * 使用 web worker\n */\n webWorker?: boolean;\n}\n\nexport type MdElement = CustomElement<MdProps>;\n\ncustomElement<MdProps>(\n 'n-md',\n {\n class: void 0,\n pictureViewer: void 0,\n lazyPicture: void 0,\n lineNumber: true,\n text: void 0,\n tools: void 0,\n getAnchorContainer: void 0,\n css: void 0,\n children: void 0,\n notRender: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: (!_.notRender && el.textContent) || el.text,\n css: el.css,\n tools: el.tools,\n getAnchorContainer: el.getAnchorContainer,\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.replaceChildren();\n });\n return <MD {...props} />;\n },\n);\nexport default MD;\n"],"names":["For","Match","Show","Switch","createEffect","mergeProps","onCleanup","frameCallback","css","cx","customElement","mdStyle","theme","MD","_props","renderer","ref","baseStyle","props","webWorker","pictureViewer","lazyPicture","text","tools","getAnchorContainer","window","initWorker","Worker","worker","update","e","innerHTML","data","postMessage","opt","langToolbar","options","marked","default","Renderer","katexBlock","code","katexInline","image","src","title","alt","toolbar","length","lang","langLineNumber","encodeURIComponent","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","addEventListener","JSON","stringify","lineNumber","removeEventListener","terminate","list","heading","active","handleAnchor","preventDefault","stopPropagation","a","target","hash","querySelector","decodeURIComponent","scrollIntoView","behavior","block","forEach","item","classList","remove","add","open","href","observerEntry","entries","entry","id","getAttribute","all","querySelectorAll","l","idx","indexOf","isIntersecting","push","splice","offsetParent","scrollTo","top","offsetTop","observer","startsWith","IntersectionObserver","rootMargin","threshold","observe","unobserve","disconnect","children","class","notRender","_","el","element","textContent","removeAttribute","replaceChildren"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/md/index.tsx"],"sourcesContent":["import { createEffect, For, Match, mergeProps, onCleanup, Show, Switch } from 'solid-js';\nimport { frameCallback } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport mdStyle from '../md-style';\nimport theme from '../theme';\n\nimport '../code';\nimport '../img';\n\nfunction MD(_props: MdProps) {\n let renderer: marked.Renderer | undefined;\n let ref: HTMLDivElement | undefined;\n const { baseStyle } = theme;\n const props = mergeProps(\n {\n webWorker: false,\n pictureViewer: true,\n lazyPicture: true,\n text: '',\n tools: ['copy'],\n getAnchorContainer: () => window as unknown as HTMLElement,\n },\n _props,\n );\n\n function initWorker() {\n return new Worker('https://cdn.jsdelivr.net/npm/neko-ui@latest/es/md/worker.js');\n }\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function update(e: { data: string }) {\n if (ref) {\n ref.innerHTML = e.data;\n }\n }\n async function postMessage(opt: {\n text: string;\n pictureViewer?: boolean;\n lazyPicture?: boolean;\n langToolbar?: string[];\n langLineNumber?: boolean;\n }) {\n const { text, pictureViewer, lazyPicture, langToolbar, ...options } = opt;\n const marked = (await import('marked-completed')).default;\n\n if (!renderer) {\n renderer = new marked.Renderer();\n\n renderer.katexBlock = (code: string) => {\n return `<n-katex display-mode=\"true\">${code}</n-katex>`;\n };\n renderer.katexInline = (code: string) => {\n return `<n-katex>${code}</n-katex>`;\n };\n }\n\n renderer.image = (src: string, title: string, alt: string) => {\n return `<n-img lazy=\"${lazyPicture}\" disabled=\"${!pictureViewer}\" role=\"img\" src=\"${src}\" alt=\"${alt}\" ${title ? `title=\"${title}\"` : ''}></n-img>`;\n };\n const toolbar = !!langToolbar?.length;\n\n renderer.code = function (code: string, lang: string) {\n if (lang === 'treeview') {\n return `<n-tree data=\"${code}\" />`;\n }\n\n return `<n-code class=\"n-code\" toolbar=\"${toolbar}\" language=\"${lang}\" ${\n options.langLineNumber ? 'line-number=\"true\"' : ''\n }>${encodeURIComponent(code)}</n-code>`;\n };\n\n update({\n data: marked(text, {\n renderer: renderer,\n langToolbar: langToolbar,\n headerPrefix: '# ',\n breaks: true,\n pedantic: false,\n smartLists: true,\n smartypants: true,\n xhtml: true,\n ...options,\n }),\n });\n }\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n }),\n );\n } else {\n const call = () =>\n postMessage({\n text: props.text,\n langLineNumber: props.lineNumber,\n langToolbar: props.tools,\n pictureViewer: props.pictureViewer,\n lazyPicture: props.lazyPicture,\n });\n\n frameCallback(call);\n }\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n });\n let list: HTMLAnchorElement[] = [];\n let heading: HTMLHeadingElement[] = [];\n const active: HTMLAnchorElement[] = [];\n\n function handleAnchor(e: Event) {\n e.preventDefault();\n e.stopPropagation();\n const a = e.target as HTMLAnchorElement;\n\n if (a.hash) {\n ref?.querySelector(decodeURIComponent(a.hash))?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n list.forEach((item) => {\n item.classList.remove('active');\n });\n a.classList.add('active');\n } else {\n window.open(a.href);\n }\n }\n function observerEntry(entries: IntersectionObserverEntry[]) {\n entries.forEach((entry) => {\n const id = entry.target.getAttribute('id');\n const all = entry.target.querySelectorAll('a');\n let a: HTMLAnchorElement | undefined;\n\n list.forEach((l) => {\n if (l.hash === `#${id}`) {\n a = l;\n } else if (!l.hash) {\n all.forEach((e) => {\n if (e.href === l.href) {\n a = l;\n }\n });\n }\n });\n if (a) {\n const idx = active.indexOf(a);\n\n active.forEach((e) => {\n e.classList.remove('active');\n });\n if (entry.isIntersecting) {\n active.push(a);\n } else if (idx !== -1) {\n active.splice(idx, 1);\n }\n if (active[0]) {\n active[0].classList.add('active');\n active[0].offsetParent?.scrollTo({\n top: active[0].offsetTop,\n });\n }\n }\n });\n }\n createEffect(() => {\n let observer: IntersectionObserver;\n\n if (ref && props.text.startsWith('[TOC]')) {\n list = [...ref.querySelectorAll<HTMLAnchorElement>('.n-md-toc a[href]')];\n heading = [...ref.querySelectorAll<HTMLHeadingElement>('h1, h2, h3, h4, h5, h6')];\n observer = new IntersectionObserver(observerEntry, {\n rootMargin: '-50px 0px',\n threshold: 0.5,\n });\n heading.forEach((e) => {\n observer.observe(e);\n });\n list.forEach((e) => {\n e.addEventListener('click', handleAnchor);\n });\n }\n onCleanup(() => {\n if (observer) {\n heading.forEach((e) => {\n observer.unobserve(e);\n });\n observer.disconnect();\n }\n list.forEach((e) => {\n e.removeEventListener('click', handleAnchor);\n });\n });\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={mdStyle} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Switch>\n <Match when={(props.children || []).length > 0}>\n <article class=\"n-md-box\" part=\"box\">\n <div class=\"n-md-body\" part=\"body\">\n <For each={props.children as []}>{(e) => e}</For>\n </div>\n </article>\n </Match>\n <Match when={props.text}>\n <article ref={ref} class={cx('n-md-box', props.class)} part=\"box\" />\n </Match>\n </Switch>\n </>\n );\n}\n\nexport interface MdProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** md内容 */\n text?: string;\n /** 开启图片查看器\n * @since 2.0.8\n * @default true\n */\n pictureViewer?: boolean;\n /** 开启图片懒加载\n * @since 2.8.3\n * @default true\n */\n lazyPicture?: boolean;\n /** 显示代码块行号\n * @default true\n */\n lineNumber?: boolean;\n /** 开启代码块工具条\n * @default ['copy']\n */\n tools?: 'copy'[];\n /** 指定滚动的容器\n * @default () => window\n */\n getAnchorContainer?: () => HTMLElement;\n /** 不进行解析\n * @default false\n */\n notRender?: boolean;\n children?: JSX.Element;\n /**\n * 使用 web worker\n */\n webWorker?: boolean;\n}\n\nexport type MdElement = CustomElement<MdProps>;\n\ncustomElement<MdProps>(\n 'n-md',\n {\n class: void 0,\n pictureViewer: void 0,\n lazyPicture: void 0,\n lineNumber: true,\n text: void 0,\n tools: void 0,\n getAnchorContainer: void 0,\n css: void 0,\n children: void 0,\n notRender: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n text: (!_.notRender && el.textContent) || el.text,\n css: el.css,\n tools: el.tools,\n getAnchorContainer: el.getAnchorContainer,\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('css');\n el.replaceChildren();\n });\n return <MD {...props} />;\n },\n);\nexport default MD;\n"],"names":["createEffect","For","Match","mergeProps","onCleanup","Show","Switch","frameCallback","css","cx","customElement","mdStyle","theme","MD","_props","renderer","ref","baseStyle","props","webWorker","pictureViewer","lazyPicture","text","tools","getAnchorContainer","window","initWorker","Worker","worker","update","e","innerHTML","data","postMessage","opt","langToolbar","options","marked","default","Renderer","katexBlock","code","katexInline","image","src","title","alt","toolbar","length","lang","langLineNumber","encodeURIComponent","headerPrefix","breaks","pedantic","smartLists","smartypants","xhtml","addEventListener","JSON","stringify","lineNumber","removeEventListener","terminate","list","heading","active","handleAnchor","preventDefault","stopPropagation","a","target","hash","querySelector","decodeURIComponent","scrollIntoView","behavior","block","forEach","item","classList","remove","add","open","href","observerEntry","entries","entry","id","getAttribute","all","querySelectorAll","l","idx","indexOf","isIntersecting","push","splice","offsetParent","scrollTo","top","offsetTop","observer","startsWith","IntersectionObserver","rootMargin","threshold","observe","unobserve","disconnect","children","class","notRender","_","el","element","textContent","removeAttribute","replaceChildren"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: 通用
3
+ title: 导航菜单
4
+ subtitle: n-menu
5
+ icon: ☰
6
+ ---
7
+
8
+ # Menu 导航菜单
9
+
10
+ > 为页面和功能提供导航的菜单列表。
@@ -0,0 +1,17 @@
1
+ ---
2
+ title: 最简单的用法
3
+ order: 1
4
+ ---
5
+
6
+ ```html
7
+ <n-menu></n-menu>
8
+ <script>
9
+ const el = container.querySelector('n-menu');
10
+
11
+ el.items = ['A', 'B', { value: 'C', disabled: true }, 'D'];
12
+ </script>
13
+ ```
14
+
15
+ ```jsx
16
+ <n-menu items={['A', 'B', { value: 'C', disabled: true }, 'D']} />
17
+ ```
@@ -0,0 +1,42 @@
1
+ ---
2
+ title: 自定义字段名
3
+ description: 自定义节点 'label'、'value'、'options' 的字段
4
+ order: 4
5
+ ---
6
+
7
+ ```html
8
+ <n-menu></n-menu>
9
+ <script>
10
+ const el = container.querySelector('n-menu');
11
+
12
+ el.fieldNames = {
13
+ label: 'name',
14
+ options: 'children',
15
+ children: 'options',
16
+ };
17
+ el.items = [
18
+ {
19
+ value: '1',
20
+ name: '动物',
21
+ children: ['牛', '马'],
22
+ },
23
+ ];
24
+ </script>
25
+ ```
26
+
27
+ ```jsx
28
+ <n-menu
29
+ field-names={{
30
+ label: 'name',
31
+ options: 'children',
32
+ children: 'options',
33
+ }}
34
+ items={[
35
+ {
36
+ value: '1',
37
+ name: '动物',
38
+ children: ['牛', '马'],
39
+ },
40
+ ]}
41
+ />
42
+ ```