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
@@ -0,0 +1,125 @@
1
+ ---
2
+ title: 带图标的选项
3
+ description: 给每一项添加独特的图标
4
+ order: 3
5
+ ---
6
+
7
+ ```html
8
+ <n-menu></n-menu>
9
+ <script>
10
+ const el = container.querySelector('n-menu');
11
+
12
+ el.openKeys = ['一级菜单'];
13
+ el.onchange = function (e) {
14
+ console.log(e.detail);
15
+ };
16
+ el.addEventListener('openchange', function (e) {
17
+ el.openKeys = e.detail;
18
+ });
19
+ el.items = [
20
+ {
21
+ label: '一级菜单',
22
+ icon: '❤️',
23
+ children: [
24
+ {
25
+ label: '动物',
26
+ options: [
27
+ { label: '狮子', value: '狮子', icon: '🦁', suffix: 'option' },
28
+ { label: '大青蛙', value: '大青蛙', icon: '🐸', suffix: 'option' },
29
+ ],
30
+ },
31
+ {
32
+ label: '动物2',
33
+ options: [
34
+ { label: '狮子', value: '狮子2', icon: '🦁', suffix: 'option' },
35
+ { label: '大青蛙', value: '大青蛙2', icon: '🐸', suffix: 'option' },
36
+ ],
37
+ },
38
+ ],
39
+ },
40
+ {
41
+ label: '二级菜单',
42
+ icon: '👂',
43
+ suffix: 'two',
44
+ children: [
45
+ {
46
+ label: '动物3',
47
+ options: [
48
+ { label: '狮子', value: '狮子3', suffix: 'option' },
49
+ { label: '大青蛙', value: '大青蛙3' },
50
+ ],
51
+ },
52
+ {
53
+ label: '动物4',
54
+ options: [
55
+ { label: '狮子', value: '狮子4' },
56
+ { label: '大青蛙', value: '大青蛙4', suffix: 'option' },
57
+ ],
58
+ },
59
+ ],
60
+ },
61
+ ];
62
+ </script>
63
+ ```
64
+
65
+ ```jsx
66
+ function Demo() {
67
+ let el;
68
+ const items = [
69
+ {
70
+ label: '一级菜单',
71
+ icon: '❤️',
72
+ children: [
73
+ {
74
+ label: '动物',
75
+ options: [
76
+ { label: '狮子', value: '狮子', icon: '🦁', suffix: 'option' },
77
+ { label: '大青蛙', value: '大青蛙', icon: '🐸', suffix: 'option' },
78
+ ],
79
+ },
80
+ {
81
+ label: '动物2',
82
+ options: [
83
+ { label: '狮子', value: '狮子2', icon: '🦁', suffix: 'option' },
84
+ { label: '大青蛙', value: '大青蛙2', icon: '🐸', suffix: 'option' },
85
+ ],
86
+ },
87
+ ],
88
+ },
89
+ {
90
+ label: '二级菜单',
91
+ icon: '👂',
92
+ suffix: 'two',
93
+ children: [
94
+ {
95
+ label: '动物3',
96
+ options: [
97
+ { label: '狮子', value: '狮子3', suffix: 'option' },
98
+ { label: '大青蛙', value: '大青蛙3' },
99
+ ],
100
+ },
101
+ {
102
+ label: '动物4',
103
+ options: [
104
+ { label: '狮子', value: '狮子4' },
105
+ { label: '大青蛙', value: '大青蛙4', suffix: 'option' },
106
+ ],
107
+ },
108
+ ],
109
+ },
110
+ ];
111
+
112
+ function openChange(e) {
113
+ el.openKeys = e.detail;
114
+ }
115
+
116
+ return (
117
+ <n-menu
118
+ ref={(e) => (el = e)}
119
+ open-keys={['一级菜单']}
120
+ onOpenChange={openChange}
121
+ items={items}
122
+ />
123
+ );
124
+ }
125
+ ```
@@ -0,0 +1,42 @@
1
+ ---
2
+ title: 多选模式
3
+ description: 将 `multiple` 属性设置为 true, 进行多选操作, 当设置 `value` 时值受控
4
+ order: 2
5
+ ---
6
+
7
+ ```html
8
+ <n-menu selectable="true" multiple="true">
9
+ <div>可多选</div>
10
+ </n-menu>
11
+ <script>
12
+ const el = container.querySelector('n-menu');
13
+
14
+ el.items = [
15
+ { value: 'a', label: '张三' },
16
+ { value: 'b', label: '李四' },
17
+ { value: 'c', label: '王五', type: 'error' },
18
+ { value: 'd', label: '赵六' },
19
+ ];
20
+ el.value = ['a', 'c'];
21
+ el.onchange = function (e) {
22
+ e.target.value = e.detail.key;
23
+ };
24
+ </script>
25
+ ```
26
+
27
+ ```jsx
28
+ <n-menu
29
+ multiple
30
+ selectable
31
+ value={['2', '4']}
32
+ items={[
33
+ { value: '1', label: '张三' },
34
+ { value: '2', label: '李四' },
35
+ { value: '3', label: '王五' },
36
+ { value: '4', label: '赵六' },
37
+ ]}
38
+ onChange={(e) => {
39
+ e.target.value = e.detail.key;
40
+ }}
41
+ />
42
+ ```
package/es/menu/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{spread as s}from"solid-js/web";import{setAttribute as i}from"solid-js/web";import{memo as l}from"solid-js/web";import{insert as o}from"solid-js/web";import{effect as n}from"solid-js/web";import{delegateEvents as r}from"solid-js/web";import{createComponent as a}from"solid-js/web";import{className as d}from"solid-js/web";import{addEventListener as u}from"solid-js/web";let m=t('<span class="menu-icon" part="icon">'),f=t('<span class="menu-suffix" part="suffix">'),c=t('<div class="sub-menu-children" part="sub-menu-children"><div>'),v=t('<div part="sub-menu"><span class="sub-menu-title"><span class="menu-arrow">'),p=t('<div><span class="menu-group-title">'),g=t('<div part="item">'),h=t("<style> "),b=t("<style>"),w=t('<section class="menu" part="menu">');import{For as C,Match as $,Show as y,Switch as N,createEffect as _,createMemo as j,createSignal as A,mergeProps as k,splitProps as T,untrack as x}from"solid-js";import O from"@moneko/common/lib/frameCallback";import E from"@moneko/common/lib/isFunction";import{css as H,cx as K}from"@moneko/css";import{customElement as L}from"solid-element";import{style as D}from"./style";import{FieldName as P}from"../basic-config";import q from"../get-options";import F from"../theme";function S(t){let r;let{isDark:k,baseStyle:L}=F,[S,V]=T(t,["class","css","items","fieldNames","value","disabled","toggle","multiple","onChange","onOpenChange","openKeys"]),[z,B]=A([]),[G,I]=A([]),J=j(()=>`:host {--sub-menu-bg: ${k()?"rgb(255 255 255 / 1%)":"rgb(0 0 0 / 1%)"} ;}`),M=j(()=>Object.assign({},P,S.fieldNames)),Q=j(()=>q(S.items,M()));function R(e){e.preventDefault(),e.stopPropagation()}function U(e,t){if(t.preventDefault(),!e.disabled&&!S.disabled){let t=[...z()],s=e[M().value];if(S.multiple){let e=t.indexOf(s);-1===e?t.push(s):t.splice(e,1)}else t=S.toggle&&t[0]===s?[]:[s];E(S.onChange)&&S.onChange(S.multiple?t:t[0],e),void 0===S.value&&B(t)}}function W(t){return a(C,{get each(){return t.list},children:s=>{function r(){return[a(y,{get when(){return s[t.fieldNames.icon]},get children(){let e=m();return o(e,()=>s[t.fieldNames.icon]),e}}),l(()=>s[t.fieldNames.label]),(()=>{let e=f();return o(e,()=>s[t.fieldNames.suffix]),e})()]}function h(){let i=j(()=>G().includes(s[t.fieldNames.value])),[l,m]=A(x(i));function f(e){R(e);let i=G();i=i.includes(s[t.fieldNames.value])?i.filter(e=>e!==s[t.fieldNames.value]):i.concat(s[t.fieldNames.value]),E(S.onOpenChange)&&S.onOpenChange(i),void 0===S.openKeys&&I(i)}function p(){let l;let[r,d]=A();function f(){i()||m(!1)}return _(()=>{d((null==l?void 0:l.offsetHeight)||0)}),(()=>{let i=c(),d=i.firstChild,m=l;return u(i,"animationend",f),"function"==typeof m?e(m,d):l=d,o(d,a(W,{get fieldNames(){return t.fieldNames},get list(){return s[t.fieldNames.children]}})),n(()=>(r(),i.style.setProperty("--h",`${r()}px`))),i})()}return _(()=>{i()&&m(!0)}),(()=>{let e=v(),t=e.firstChild,m=t.firstChild;return u(e,"mousedown",R,!0),u(t,"click",f,!0),o(t,a(r,{}),m),o(e,a(y,{get when(){return l()},get children(){return a(p,{})}}),null),n(t=>{let l=K("sub-menu",s.class),o=!!i(),n=!i();return l!==t._v$&&d(e,t._v$=l),o!==t._v$2&&e.classList.toggle("sub-menu-open",t._v$2=o),n!==t._v$3&&e.classList.toggle("sub-menu-close",t._v$3=n),t},{_v$:void 0,_v$2:void 0,_v$3:void 0}),e})()}return a(N,{get fallback(){return(()=>{let e=g();return u(e,"click",U.bind(null,s),!0),u(e,"mousedown",R,!0),o(e,a(r,{})),n(l=>{let o=K("menu-item",s.class,s.type),n=s.handleClosed,r=S.disabled||s.disabled,a=z().includes(s[t.fieldNames.value]);return o!==l._v$4&&d(e,l._v$4=o),n!==l._v$5&&i(e,"handle-closed",l._v$5=n),r!==l._v$6&&i(e,"aria-disabled",l._v$6=r),a!==l._v$7&&i(e,"aria-selected",l._v$7=a),l},{_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),e})()},get children(){return[a($,{get when(){return Array.isArray(s[t.fieldNames.children])},get children(){return a(h,{})}}),a($,{get when(){return Array.isArray(s[t.fieldNames.options])},get children(){let e=p(),i=e.firstChild;return u(e,"mousedown",R,!0),o(i,a(r,{})),o(e,a(W,{get fieldNames(){return t.fieldNames},get list(){return s[t.fieldNames.options]}}),null),n(()=>d(e,K("menu-group",s.class))),e}})]}})}})}return _(()=>{void 0!==S.value&&null!==S.value?B(Array.isArray(S.value)?S.value:[S.value]):B([])}),_(()=>{Array.isArray(S.openKeys)&&I(S.openKeys)}),_(()=>{var e;(null==(e=z())?void 0:e.length)&&O(()=>{let e=null==r?void 0:r.querySelector("[aria-selected=true]");if(e&&r){let t=e.offsetTop-r.offsetTop;t<r.scrollTop?r.scrollTo({top:t,behavior:"smooth"}):e.offsetTop+e.offsetHeight>r.scrollTop+r.offsetHeight+r.offsetTop&&r.scrollTo({top:t-r.offsetHeight+e.offsetHeight,behavior:"smooth"})}})}),[(()=>{let e=h(),t=e.firstChild;return n(()=>t.data=L()),e})(),(()=>{let e=b();return e.textContent=D,e})(),(()=>{let e=h(),t=e.firstChild;return n(()=>t.data=J()),e})(),a(y,{get when(){return S.css},get children(){let e=h(),t=e.firstChild;return n(()=>t.data=H(S.css)),e}}),(()=>{let t=w(),i=r;return"function"==typeof i?e(i,t):r=t,s(t,V,!1,!0),o(t,a(W,{get fieldNames(){return M()},get list(){return Q()}})),t})()]}L("n-menu",{class:void 0,css:void 0,disabled:void 0,value:void 0,defaultValue:void 0,onOpenChange:void 0,openKeys:void 0,fieldNames:void 0,multiple:void 0,toggle:void 0,onChange:void 0,items:[]},(e,t)=>{let s=t.element,i=k({css:s.css,onChange(e,t){s.dispatchEvent(new CustomEvent("change",{detail:[e,t]}))},onOpenChange(e){s.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},e);return _(()=>{s.removeAttribute("items"),s.removeAttribute("field-names"),s.removeAttribute("css")}),a(S,i)});export default S;r(["click","mousedown"]);
1
+ import{use as e}from"solid-js/web";import{template as t}from"solid-js/web";import{spread as s}from"solid-js/web";import{setAttribute as i}from"solid-js/web";import{memo as o}from"solid-js/web";import{insert as l}from"solid-js/web";import{effect as r}from"solid-js/web";import{delegateEvents as n}from"solid-js/web";import{createComponent as a}from"solid-js/web";import{className as d}from"solid-js/web";import{addEventListener as u}from"solid-js/web";let m=t('<span class="menu-icon" part="icon">'),f=t('<span class="menu-suffix" part="suffix">'),c=t('<div class="sub-menu-children" part="sub-menu-children"><div>'),p=t('<div part="sub-menu"><span class="sub-menu-title"><span class="menu-arrow">'),v=t('<div><span class="menu-group-title">'),g=t('<div part="item">'),h=t("<style> "),b=t("<style>"),y=t('<section class="menu" part="menu">');import{createEffect as w,createMemo as C,createSignal as $,For as N,Match as _,mergeProps as A,Show as j,splitProps as k,Switch as T,untrack as x}from"solid-js";import O from"@moneko/common/lib/frameCallback";import E from"@moneko/common/lib/isFunction";import{css as H,cx as K}from"@moneko/css";import{customElement as L}from"solid-element";import{FieldName as D}from"../basic-config";import P from"../get-options";import q from"../theme";import{style as F}from"./style";function S(t){let n;let{isDark:A,baseStyle:L}=q,[S,V]=k(t,["class","css","items","fieldNames","value","disabled","toggle","multiple","onChange","onOpenChange","openKeys"]),[z,B]=$([]),[G,I]=$([]),J=C(()=>`:host {--sub-menu-bg: ${A()?"rgb(255 255 255 / 1%)":"rgb(0 0 0 / 1%)"} ;}`),M=C(()=>Object.assign({},D,S.fieldNames)),Q=C(()=>P(S.items,M()));function R(e){e.preventDefault(),e.stopPropagation()}function U(e,t){if(t.preventDefault(),!e.disabled&&!S.disabled){let t=[...z()],s=e[M().value];if(S.multiple){let e=t.indexOf(s);-1===e?t.push(s):t.splice(e,1)}else t=S.toggle&&t[0]===s?[]:[s];E(S.onChange)&&S.onChange(S.multiple?t:t[0],e),void 0===S.value&&B(t)}}function W(t){return a(N,{get each(){return t.list},children:s=>{function n(){return[a(j,{get when(){return s[t.fieldNames.icon]},get children(){let e=m();return l(e,()=>s[t.fieldNames.icon]),e}}),o(()=>s[t.fieldNames.label]),(()=>{let e=f();return l(e,()=>s[t.fieldNames.suffix]),e})()]}function h(){let i=C(()=>G().includes(s[t.fieldNames.value])),[o,m]=$(x(i));function f(e){R(e);let i=G();i=i.includes(s[t.fieldNames.value])?i.filter(e=>e!==s[t.fieldNames.value]):i.concat(s[t.fieldNames.value]),E(S.onOpenChange)&&S.onOpenChange(i),void 0===S.openKeys&&I(i)}function v(){let o;let[n,d]=$();function f(){i()||m(!1)}return w(()=>{d((null==o?void 0:o.offsetHeight)||0)}),(()=>{let i=c(),d=i.firstChild,m=o;return u(i,"animationend",f),"function"==typeof m?e(m,d):o=d,l(d,a(W,{get fieldNames(){return t.fieldNames},get list(){return s[t.fieldNames.children]}})),r(()=>(n(),i.style.setProperty("--h",`${n()}px`))),i})()}return w(()=>{i()&&m(!0)}),(()=>{let e=p(),t=e.firstChild,m=t.firstChild;return u(e,"mousedown",R,!0),u(t,"click",f,!0),l(t,a(n,{}),m),l(e,a(j,{get when(){return o()},get children(){return a(v,{})}}),null),r(t=>{let o=K("sub-menu",s.class),l=!!i(),r=!i();return o!==t._v$&&d(e,t._v$=o),l!==t._v$2&&e.classList.toggle("sub-menu-open",t._v$2=l),r!==t._v$3&&e.classList.toggle("sub-menu-close",t._v$3=r),t},{_v$:void 0,_v$2:void 0,_v$3:void 0}),e})()}return a(T,{get fallback(){return(()=>{let e=g();return u(e,"click",U.bind(null,s),!0),u(e,"mousedown",R,!0),l(e,a(n,{})),r(o=>{let l=K("menu-item",s.class,s.type),r=s.handleClosed,n=S.disabled||s.disabled,a=z().includes(s[t.fieldNames.value]);return l!==o._v$4&&d(e,o._v$4=l),r!==o._v$5&&i(e,"handle-closed",o._v$5=r),n!==o._v$6&&i(e,"aria-disabled",o._v$6=n),a!==o._v$7&&i(e,"aria-selected",o._v$7=a),o},{_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),e})()},get children(){return[a(_,{get when(){return Array.isArray(s[t.fieldNames.children])},get children(){return a(h,{})}}),a(_,{get when(){return Array.isArray(s[t.fieldNames.options])},get children(){let e=v(),i=e.firstChild;return u(e,"mousedown",R,!0),l(i,a(n,{})),l(e,a(W,{get fieldNames(){return t.fieldNames},get list(){return s[t.fieldNames.options]}}),null),r(()=>d(e,K("menu-group",s.class))),e}})]}})}})}return w(()=>{void 0!==S.value&&null!==S.value?B(Array.isArray(S.value)?S.value:[S.value]):B([])}),w(()=>{Array.isArray(S.openKeys)&&I(S.openKeys)}),w(()=>{Array.isArray(z())&&z().length&&O(()=>{let e=null==n?void 0:n.querySelector("[aria-selected=true]");if(e&&n){let t=e.offsetTop-n.offsetTop;t<n.scrollTop?n.scrollTo({top:t,behavior:"smooth"}):e.offsetTop+e.offsetHeight>n.scrollTop+n.offsetHeight+n.offsetTop&&n.scrollTo({top:t-n.offsetHeight+e.offsetHeight,behavior:"smooth"})}})}),[(()=>{let e=h(),t=e.firstChild;return r(()=>t.data=L()),e})(),(()=>{let e=b();return e.textContent=F,e})(),(()=>{let e=h(),t=e.firstChild;return r(()=>t.data=J()),e})(),a(j,{get when(){return S.css},get children(){let e=h(),t=e.firstChild;return r(()=>t.data=H(S.css)),e}}),(()=>{let t=y(),i=n;return"function"==typeof i?e(i,t):n=t,s(t,V,!1,!0),l(t,a(W,{get fieldNames(){return M()},get list(){return Q()}})),t})()]}L("n-menu",{class:void 0,css:void 0,disabled:void 0,value:void 0,defaultValue:void 0,onOpenChange:void 0,openKeys:void 0,fieldNames:void 0,multiple:void 0,toggle:void 0,onChange:void 0,items:[]},(e,t)=>{let s=t.element,i=A({css:s.css,onChange(e,t){s.dispatchEvent(new CustomEvent("change",{detail:[e,t]}))},onOpenChange(e){s.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},e);return w(()=>{s.removeAttribute("items"),s.removeAttribute("field-names"),s.removeAttribute("css")}),a(S,i)});export default S;n(["click","mousedown"]);
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/menu/index.tsx"],"sourcesContent":["import {\n For,\n Match,\n Show,\n Switch,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n splitProps,\n untrack,\n} from 'solid-js';\nimport { frameCallback, isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport { FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme from '../theme';\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\n\nfunction Menu(props: MenuProps | MenuMultipleProps) {\n let ref: HTMLDivElement | undefined;\n const { isDark, baseStyle } = theme;\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'items',\n 'fieldNames',\n 'value',\n 'disabled',\n 'toggle',\n 'multiple',\n 'onChange',\n 'onOpenChange',\n 'openKeys',\n ]);\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [openKeys, setOpenKeys] = createSignal<(string | number)[]>([]);\n const cssVar = createMemo(\n () => `:host {--sub-menu-bg: ${isDark() ? 'rgb(255 255 255 / 1%)' : 'rgb(0 0 0 / 1%)'} ;}`,\n );\n const fieldNames = createMemo(() => Object.assign({}, FieldName, local.fieldNames));\n const options = createMemo(() => getOptions(local.items, fieldNames()));\n\n function preventDefault(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n function change(item: MenuOption, e: MouseEvent) {\n e.preventDefault();\n if (!item.disabled && !local.disabled) {\n let _value = [...value()];\n const key = item[fieldNames().value]!;\n\n if (local.multiple) {\n const idx = _value.indexOf(key);\n\n if (idx === -1) {\n _value.push(key);\n } else {\n _value.splice(idx, 1);\n }\n } else if (local.toggle && _value[0] === key) {\n _value = [];\n } else {\n _value = [key];\n }\n if (isFunction(local.onChange)) {\n local.onChange((local.multiple ? _value : _value[0]) as never, item);\n }\n if (typeof local.value === 'undefined') {\n setValue(_value);\n }\n }\n }\n\n interface RenderMenuProps {\n list: MenuOption[];\n fieldNames: { [key in keyof typeof FieldName]: string };\n }\n function RenderMenu(_: RenderMenuProps) {\n return (\n <For each={_.list}>\n {(item) => {\n function RowTitle() {\n return (\n <>\n <Show when={item[_.fieldNames.icon]}>\n <span class=\"menu-icon\" part=\"icon\">\n {item[_.fieldNames.icon]}\n </span>\n </Show>\n {item[_.fieldNames.label]}\n <span class=\"menu-suffix\" part=\"suffix\">\n {item[_.fieldNames.suffix]}\n </span>\n </>\n );\n }\n\n function SubMenu() {\n const isOpen = createMemo(() => openKeys().includes(item[_.fieldNames.value]!));\n const [show, setShow] = createSignal<boolean>(untrack(isOpen));\n\n createEffect(() => {\n if (isOpen()) {\n setShow(true);\n }\n });\n function handleOpen(e: MouseEvent) {\n preventDefault(e);\n let _openKeys = openKeys();\n\n if (_openKeys.includes(item[_.fieldNames.value]!)) {\n _openKeys = _openKeys.filter((v) => v !== item[_.fieldNames.value]);\n } else {\n _openKeys = _openKeys.concat(item[_.fieldNames.value]!);\n }\n\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(_openKeys);\n }\n if (local.openKeys === void 0) {\n setOpenKeys(_openKeys);\n }\n }\n function Child() {\n let el: HTMLDivElement | undefined;\n const [hei, setHei] = createSignal();\n\n createEffect(() => {\n setHei(el?.offsetHeight || 0);\n });\n function onAnimationEnd() {\n if (!isOpen()) {\n setShow(false);\n }\n }\n return (\n <div\n class=\"sub-menu-children\"\n part=\"sub-menu-children\"\n style={{\n '--h': `${hei()}px`,\n }}\n onAnimationEnd={onAnimationEnd}\n >\n <div ref={el}>\n <RenderMenu fieldNames={_.fieldNames} list={item[_.fieldNames.children]!} />\n </div>\n </div>\n );\n }\n\n return (\n <div\n class={cx('sub-menu', item.class)}\n classList={{\n 'sub-menu-open': isOpen(),\n 'sub-menu-close': !isOpen(),\n }}\n part=\"sub-menu\"\n onMouseDown={preventDefault}\n >\n <span class=\"sub-menu-title\" onClick={handleOpen}>\n <RowTitle />\n <span class=\"menu-arrow\" />\n </span>\n <Show when={show()}>\n <Child />\n </Show>\n </div>\n );\n }\n return (\n <Switch\n fallback={\n <div\n class={cx('menu-item', item.class, item.type)}\n part=\"item\"\n handle-closed={item.handleClosed}\n aria-disabled={local.disabled || item.disabled}\n aria-selected={value().includes(item[_.fieldNames.value]!)}\n onMouseDown={preventDefault}\n onClick={change.bind(null, item)}\n >\n <RowTitle />\n </div>\n }\n >\n <Match when={Array.isArray(item[_.fieldNames.children])}>\n <SubMenu />\n </Match>\n <Match when={Array.isArray(item[_.fieldNames.options])}>\n <div class={cx('menu-group', item.class)} onMouseDown={preventDefault}>\n <span class=\"menu-group-title\">\n <RowTitle />\n </span>\n <RenderMenu fieldNames={_.fieldNames} list={item[_.fieldNames.options]!} />\n </div>\n </Match>\n </Switch>\n );\n }}\n </For>\n );\n }\n\n createEffect(() => {\n if (local.value !== void 0 && local.value !== null) {\n setValue(Array.isArray(local.value) ? local.value : [local.value]);\n } else {\n setValue([]);\n }\n });\n createEffect(() => {\n if (Array.isArray(local.openKeys)) {\n setOpenKeys(local.openKeys);\n }\n });\n\n createEffect(() => {\n if (value()?.length) {\n frameCallback(() => {\n const el = ref?.querySelector<HTMLElement>('[aria-selected=true]');\n\n if (el && ref) {\n const next = el.offsetTop - ref.offsetTop;\n\n if (next < ref.scrollTop) {\n ref.scrollTo({\n top: next,\n behavior: 'smooth',\n });\n } else if (\n el.offsetTop + el.offsetHeight >\n ref.scrollTop + ref.offsetHeight + ref.offsetTop\n ) {\n ref.scrollTo({\n top: next - ref.offsetHeight + el.offsetHeight,\n behavior: 'smooth',\n });\n }\n }\n });\n }\n });\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <style textContent={cssVar()} />\n <Show when={local.css}>\n <style textContent={css(local.css)} />\n </Show>\n <section ref={ref} class=\"menu\" part=\"menu\" {...other}>\n <RenderMenu fieldNames={fieldNames()} list={options()} />\n </section>\n </>\n );\n}\n\nexport interface BaseMenuProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 菜单展开的keys */\n openKeys?: (string | number)[];\n /** 菜单展开时触发的方法 */\n onOpenChange?: (keys: (string | number)[]) => void;\n /** 选项数据 */\n items?: (string | MenuOption)[];\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n /** 不可用状态 */\n disabled?: boolean;\n /** 可以取消 */\n toggle?: boolean;\n}\n\nexport interface MenuProps extends BaseMenuProps {\n /** 值修改时的回调方法 */\n onChange?(val: string | number, item: MenuOption): void;\n /** 值 */\n value?: string | number;\n /** 默认值 */\n defaultValue?: string | number;\n /** 可多选\n * @default false\n */\n multiple?: false | never;\n}\n\nexport interface MenuMultipleProps extends BaseMenuProps {\n /** 可多选\n * @default true\n */\n multiple: true;\n /** 值修改时的回调方法 */\n onChange?(val: (string | number)[], item: MenuOption): void;\n /** 值 */\n value?: (string | number)[];\n /** 默认值 */\n defaultValue?: (string | number)[];\n}\n\n/** 菜单选项 */\nexport interface MenuOption extends Omit<BaseOption, 'children' | 'options'> {\n /** 图标 */\n icon?: JSX.Element;\n /** 内置类型(状态) */\n type?: 'primary' | 'success' | 'error' | 'warning';\n /** 自定义颜色 */\n color?: string;\n /** 子菜单 */\n children?: (string | MenuOption)[];\n /** 分组子选项 */\n options?: (string | MenuOption)[];\n}\n\nexport type MenuElement = CustomElement<MenuProps, 'onChange' | 'onOpenChange'>;\nexport type MenuMultipleElement = CustomElement<MenuMultipleProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<MenuProps>(\n 'n-menu',\n {\n class: void 0,\n css: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n onOpenChange: void 0,\n openKeys: void 0,\n fieldNames: void 0,\n multiple: void 0,\n toggle: void 0,\n onChange: void 0,\n items: [],\n },\n (_, opt) => {\n const el = opt.element;\n const defaultProps: Partial<MenuProps> = {\n css: el.css,\n onChange(key, item) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onOpenChange(keys) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: keys,\n }),\n );\n },\n };\n const props = mergeProps(defaultProps, _);\n\n createEffect(() => {\n el.removeAttribute('items');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return <Menu {...props} />;\n },\n);\n\nexport default Menu;\n"],"names":["For","Match","Show","Switch","createEffect","createMemo","createSignal","mergeProps","splitProps","untrack","frameCallback","isFunction","css","cx","customElement","style","FieldName","getOptions","theme","Menu","props","ref","isDark","baseStyle","local","other","value","setValue","openKeys","setOpenKeys","cssVar","fieldNames","Object","assign","options","items","preventDefault","e","stopPropagation","change","item","disabled","_value","key","multiple","idx","indexOf","push","splice","toggle","onChange","RenderMenu","_","list","RowTitle","icon","label","suffix","SubMenu","isOpen","includes","show","setShow","handleOpen","_openKeys","filter","v","concat","onOpenChange","Child","el","hei","setHei","onAnimationEnd","offsetHeight","children","class","bind","type","handleClosed","Array","isArray","length","querySelector","next","offsetTop","scrollTop","scrollTo","top","behavior","defaultValue","opt","element","dispatchEvent","CustomEvent","detail","keys","removeAttribute"],"mappings":"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"}
1
+ {"version":3,"sources":["../../components/menu/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n For,\n Match,\n mergeProps,\n Show,\n splitProps,\n Switch,\n untrack,\n} from 'solid-js';\nimport { frameCallback, isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\nimport { FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme from '../theme';\n\nimport { style } from './style';\n\nfunction Menu(props: MenuProps | MenuMultipleProps) {\n let ref: HTMLDivElement | undefined;\n const { isDark, baseStyle } = theme;\n const [local, other] = splitProps(props, [\n 'class',\n 'css',\n 'items',\n 'fieldNames',\n 'value',\n 'disabled',\n 'toggle',\n 'multiple',\n 'onChange',\n 'onOpenChange',\n 'openKeys',\n ]);\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const [openKeys, setOpenKeys] = createSignal<(string | number)[]>([]);\n const cssVar = createMemo(\n () => `:host {--sub-menu-bg: ${isDark() ? 'rgb(255 255 255 / 1%)' : 'rgb(0 0 0 / 1%)'} ;}`,\n );\n const fieldNames = createMemo(() => Object.assign({}, FieldName, local.fieldNames));\n const options = createMemo(() => getOptions(local.items, fieldNames()));\n\n function preventDefault(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n function change(item: MenuOption, e: MouseEvent) {\n e.preventDefault();\n if (!item.disabled && !local.disabled) {\n let _value = [...value()];\n const key = item[fieldNames().value]!;\n\n if (local.multiple) {\n const idx = _value.indexOf(key);\n\n if (idx === -1) {\n _value.push(key);\n } else {\n _value.splice(idx, 1);\n }\n } else if (local.toggle && _value[0] === key) {\n _value = [];\n } else {\n _value = [key];\n }\n if (isFunction(local.onChange)) {\n local.onChange((local.multiple ? _value : _value[0]) as never, item);\n }\n if (typeof local.value === 'undefined') {\n setValue(_value);\n }\n }\n }\n\n interface RenderMenuProps {\n list: MenuOption[];\n fieldNames: { [key in keyof typeof FieldName]: string };\n }\n function RenderMenu(_: RenderMenuProps) {\n return (\n <For each={_.list}>\n {(item) => {\n function RowTitle() {\n return (\n <>\n <Show when={item[_.fieldNames.icon]}>\n <span class=\"menu-icon\" part=\"icon\">\n {item[_.fieldNames.icon]}\n </span>\n </Show>\n {item[_.fieldNames.label]}\n <span class=\"menu-suffix\" part=\"suffix\">\n {item[_.fieldNames.suffix]}\n </span>\n </>\n );\n }\n\n function SubMenu() {\n const isOpen = createMemo(() => openKeys().includes(item[_.fieldNames.value]));\n const [show, setShow] = createSignal<boolean>(untrack(isOpen));\n\n createEffect(() => {\n if (isOpen()) {\n setShow(true);\n }\n });\n function handleOpen(e: MouseEvent) {\n preventDefault(e);\n let _openKeys = openKeys();\n\n if (_openKeys.includes(item[_.fieldNames.value])) {\n _openKeys = _openKeys.filter((v) => v !== item[_.fieldNames.value]);\n } else {\n _openKeys = _openKeys.concat(item[_.fieldNames.value]);\n }\n\n if (isFunction(local.onOpenChange)) {\n local.onOpenChange(_openKeys);\n }\n if (local.openKeys === void 0) {\n setOpenKeys(_openKeys);\n }\n }\n function Child() {\n let el: HTMLDivElement | undefined;\n const [hei, setHei] = createSignal();\n\n createEffect(() => {\n setHei(el?.offsetHeight || 0);\n });\n function onAnimationEnd() {\n if (!isOpen()) {\n setShow(false);\n }\n }\n return (\n <div\n class=\"sub-menu-children\"\n part=\"sub-menu-children\"\n style={{\n '--h': `${hei()}px`,\n }}\n onAnimationEnd={onAnimationEnd}\n >\n <div ref={el}>\n <RenderMenu fieldNames={_.fieldNames} list={item[_.fieldNames.children]} />\n </div>\n </div>\n );\n }\n\n return (\n <div\n class={cx('sub-menu', item.class)}\n classList={{\n 'sub-menu-open': isOpen(),\n 'sub-menu-close': !isOpen(),\n }}\n part=\"sub-menu\"\n onMouseDown={preventDefault}\n >\n <span class=\"sub-menu-title\" onClick={handleOpen}>\n <RowTitle />\n <span class=\"menu-arrow\" />\n </span>\n <Show when={show()}>\n <Child />\n </Show>\n </div>\n );\n }\n return (\n <Switch\n fallback={\n <div\n class={cx('menu-item', item.class, item.type)}\n part=\"item\"\n handle-closed={item.handleClosed}\n aria-disabled={local.disabled || item.disabled}\n aria-selected={value().includes(item[_.fieldNames.value])}\n onMouseDown={preventDefault}\n onClick={change.bind(null, item)}\n >\n <RowTitle />\n </div>\n }\n >\n <Match when={Array.isArray(item[_.fieldNames.children])}>\n <SubMenu />\n </Match>\n <Match when={Array.isArray(item[_.fieldNames.options])}>\n <div class={cx('menu-group', item.class)} onMouseDown={preventDefault}>\n <span class=\"menu-group-title\">\n <RowTitle />\n </span>\n <RenderMenu fieldNames={_.fieldNames} list={item[_.fieldNames.options]} />\n </div>\n </Match>\n </Switch>\n );\n }}\n </For>\n );\n }\n\n createEffect(() => {\n if (local.value !== void 0 && local.value !== null) {\n setValue(Array.isArray(local.value) ? local.value : [local.value]);\n } else {\n setValue([]);\n }\n });\n createEffect(() => {\n if (Array.isArray(local.openKeys)) {\n setOpenKeys(local.openKeys);\n }\n });\n\n createEffect(() => {\n if (Array.isArray(value()) && value().length) {\n frameCallback(() => {\n const el = ref?.querySelector<HTMLElement>('[aria-selected=true]');\n\n if (el && ref) {\n const next = el.offsetTop - ref.offsetTop;\n\n if (next < ref.scrollTop) {\n ref.scrollTo({\n top: next,\n behavior: 'smooth',\n });\n } else if (\n el.offsetTop + el.offsetHeight >\n ref.scrollTop + ref.offsetHeight + ref.offsetTop\n ) {\n ref.scrollTo({\n top: next - ref.offsetHeight + el.offsetHeight,\n behavior: 'smooth',\n });\n }\n }\n });\n }\n });\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <style textContent={cssVar()} />\n <Show when={local.css}>\n <style textContent={css(local.css)} />\n </Show>\n <section ref={ref} class=\"menu\" part=\"menu\" {...other}>\n <RenderMenu fieldNames={fieldNames()} list={options()} />\n </section>\n </>\n );\n}\n\nexport interface BaseMenuProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 菜单展开的keys */\n openKeys?: (string | number)[];\n /** 菜单展开时触发的方法 */\n onOpenChange?: (keys: (string | number)[]) => void;\n /** 选项数据 */\n items?: (string | MenuOption)[];\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n /** 不可用状态 */\n disabled?: boolean;\n /** 可以取消 */\n toggle?: boolean;\n}\n\nexport interface MenuProps extends BaseMenuProps {\n /** 值修改时的回调方法 */\n onChange?(val: string | number, item: MenuOption): void;\n /** 值 */\n value?: string | number;\n /** 默认值 */\n defaultValue?: string | number;\n /** 可多选\n * @default false\n */\n multiple?: false | never;\n}\n\nexport interface MenuMultipleProps extends BaseMenuProps {\n /** 可多选\n * @default true\n */\n multiple: true;\n /** 值修改时的回调方法 */\n onChange?(val: (string | number)[], item: MenuOption): void;\n /** 值 */\n value?: (string | number)[];\n /** 默认值 */\n defaultValue?: (string | number)[];\n}\n\n/** 菜单选项 */\nexport interface MenuOption extends Omit<BaseOption, 'children' | 'options'> {\n /** 图标 */\n icon?: JSX.Element;\n /** 内置类型(状态) */\n type?: 'primary' | 'success' | 'error' | 'warning';\n /** 自定义颜色 */\n color?: string;\n /** 子菜单 */\n children?: (string | MenuOption)[];\n /** 分组子选项 */\n options?: (string | MenuOption)[];\n}\n\nexport type MenuElement = CustomElement<MenuProps, 'onChange' | 'onOpenChange'>;\nexport type MenuMultipleElement = CustomElement<MenuMultipleProps, 'onChange' | 'onOpenChange'>;\n\ncustomElement<MenuProps>(\n 'n-menu',\n {\n class: void 0,\n css: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n onOpenChange: void 0,\n openKeys: void 0,\n fieldNames: void 0,\n multiple: void 0,\n toggle: void 0,\n onChange: void 0,\n items: [],\n },\n (_, opt) => {\n const el = opt.element;\n const defaultProps: Partial<MenuProps> = {\n css: el.css,\n onChange(key, item) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: [key, item],\n }),\n );\n },\n onOpenChange(keys) {\n el.dispatchEvent(\n new CustomEvent('openchange', {\n detail: keys,\n }),\n );\n },\n };\n const props = mergeProps(defaultProps, _);\n\n createEffect(() => {\n el.removeAttribute('items');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return <Menu {...props} />;\n },\n);\n\nexport default Menu;\n"],"names":["createEffect","createMemo","createSignal","For","Match","mergeProps","Show","splitProps","Switch","untrack","frameCallback","isFunction","css","cx","customElement","FieldName","getOptions","theme","style","Menu","props","ref","isDark","baseStyle","local","other","value","setValue","openKeys","setOpenKeys","cssVar","fieldNames","Object","assign","options","items","preventDefault","e","stopPropagation","change","item","disabled","_value","key","multiple","idx","indexOf","push","splice","toggle","onChange","RenderMenu","_","list","RowTitle","icon","label","suffix","SubMenu","isOpen","includes","show","setShow","handleOpen","_openKeys","filter","v","concat","onOpenChange","Child","el","hei","setHei","onAnimationEnd","offsetHeight","children","class","bind","type","handleClosed","Array","isArray","length","querySelector","next","offsetTop","scrollTop","scrollTo","top","behavior","defaultValue","opt","element","dispatchEvent","CustomEvent","detail","keys","removeAttribute"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ ---
2
+ type: 反馈
3
+ title: 模态框
4
+ subtitle: n-modal
5
+ icon: ☱
6
+ ---
7
+
8
+ # Modal 模态对话框
9
+
10
+ > 需要用户处理事务,又不希望跳转页面以致打断工作流程时,可以使用 `模态框` 在当前页面正中打开一个浮层,在浮层中进行操作。
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: 最简单的用法
3
+ description: 最简单的用法
4
+ order: 1
5
+ ---
6
+
7
+ ```html
8
+ <n-button type="primary">打开模态框</n-button>
9
+ <n-modal title="最简单的用法"></n-modal>
10
+ <script>
11
+ const modal = container.querySelector('n-modal');
12
+ const btn = container.querySelector('n-button');
13
+
14
+ btn.addEventListener('click', function (e) {
15
+ modal.open = 'open';
16
+ });
17
+ modal.content = 'content...';
18
+ modal.addEventListener('openchange', function (e) {
19
+ modal.open = e.detail;
20
+ });
21
+ </script>
22
+ ```
23
+
24
+ ```jsx
25
+ const Demo = () => {
26
+ const [open, setOpen] = createSignal('closed');
27
+ const handleOpen = () => {
28
+ setOpen('open');
29
+ };
30
+ const handleOpenChange = (e) => {
31
+ setOpen(e?.detail);
32
+ };
33
+
34
+ return (
35
+ <>
36
+ <n-modal
37
+ open={open}
38
+ title="最简单的用法"
39
+ onOpenChange={handleOpenChange}
40
+ content={
41
+ <>
42
+ <p>Some contents...</p>
43
+ <p>Some contents...</p>
44
+ <p>Some contents...</p>
45
+ </>
46
+ }
47
+ />
48
+ <n-button type="primary" onClick={handleOpen}>
49
+ 打开模态框
50
+ </n-button>
51
+ </>
52
+ );
53
+ };
54
+
55
+ render(<Demo />);
56
+ ```
@@ -0,0 +1,57 @@
1
+ ---
2
+ title: 自定义关闭图标
3
+ description: 自定义关闭图标, 设置为 null 或 false 时隐藏关闭按钮
4
+ order: 2
5
+ ---
6
+
7
+ ```html
8
+ <n-button type="primary">关闭图标</n-button>
9
+ <n-modal title="自定义关闭图标" close-icon="关"></n-modal>
10
+ <script>
11
+ const modal = container.querySelector('n-modal');
12
+ const btn = container.querySelector('n-button');
13
+
14
+ btn.addEventListener('click', function (e) {
15
+ modal.open = 'open';
16
+ });
17
+ modal.content = 'content...';
18
+ modal.addEventListener('openchange', function (e) {
19
+ modal.open = e.detail;
20
+ });
21
+ </script>
22
+ ```
23
+
24
+ ```jsx
25
+ const Demo = () => {
26
+ const [open, setOpen] = createSignal('closed');
27
+ const handleOpen = () => {
28
+ setOpen('open');
29
+ };
30
+ const handleOpenChange = (e) => {
31
+ setOpen(e?.detail);
32
+ };
33
+
34
+ return (
35
+ <>
36
+ <n-modal
37
+ open={open}
38
+ title="自定义关闭图标"
39
+ close-icon="关"
40
+ onOpenChange={handleOpenChange}
41
+ content={
42
+ <>
43
+ <p>Some contents...</p>
44
+ <p>Some contents...</p>
45
+ <p>Some contents...</p>
46
+ </>
47
+ }
48
+ />
49
+ <n-button type="primary" onClick={handleOpen}>
50
+ 关闭图标
51
+ </n-button>
52
+ </>
53
+ );
54
+ };
55
+
56
+ render(<Demo />);
57
+ ```
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: 通过 esc 按键关闭
3
+ description: 通过 `esc` 按键关闭, 默认开启
4
+ order: 4
5
+ ---
6
+
7
+ ```html
8
+ <n-button type="primary">通过 esc 按键关闭模态框</n-button>
9
+ <n-modal esc-closable="false"></n-modal>
10
+ <script>
11
+ const modal = container.querySelector('n-modal');
12
+ const btn = container.querySelector('n-button');
13
+
14
+ btn.addEventListener('click', function (e) {
15
+ modal.open = 'open';
16
+ });
17
+ const div = document.createElement('div');
18
+ const p1 = document.createElement('p');
19
+
20
+ p1.textContent = '按下 esc 键关闭模态框, 默认开启;';
21
+ const p2 = document.createElement('p');
22
+
23
+ p2.textContent = '这里关闭了 esc 键关闭功能;';
24
+ div.append(p1);
25
+ div.append(p2);
26
+ modal.content = div;
27
+ modal.addEventListener('openchange', function (e) {
28
+ modal.open = e.detail;
29
+ });
30
+ </script>
31
+ ```
32
+
33
+ ```jsx
34
+ const Demo = () => {
35
+ const [open, setOpen] = createSignal('closed');
36
+ const handleOpen = () => {
37
+ setOpen('open');
38
+ };
39
+ const handleOpenChange = (e) => {
40
+ setOpen(e?.detail);
41
+ };
42
+
43
+ return (
44
+ <>
45
+ <n-modal
46
+ open={open}
47
+ esc-closable={false}
48
+ onOpenChange={handleOpenChange}
49
+ content={
50
+ <>
51
+ <p>按下 esc 键关闭模态框, 默认开启;</p>
52
+ <p>这里关闭了 esc 键关闭功能;</p>
53
+ </>
54
+ }
55
+ />
56
+ <n-button type="primary" onClick={handleOpen}>
57
+ 通过 esc 按键关闭模态框
58
+ </n-button>
59
+ </>
60
+ );
61
+ };
62
+
63
+ render(<Demo />);
64
+ ```
@@ -0,0 +1,56 @@
1
+ ---
2
+ title: 遮罩模糊
3
+ description: 给遮罩添加高斯模糊
4
+ order: 5
5
+ ---
6
+
7
+ ```html
8
+ <n-button type="primary">遮罩模糊</n-button>
9
+ <n-modal title="给遮罩添加高斯模糊" mask-blur="true"></n-modal>
10
+ <script>
11
+ const modal = container.querySelector('n-modal');
12
+ const btn = container.querySelector('n-button');
13
+
14
+ btn.addEventListener('click', function (e) {
15
+ modal.open = 'open';
16
+ });
17
+ modal.content = 'content...';
18
+ modal.addEventListener('openchange', function (e) {
19
+ modal.open = e.detail;
20
+ });
21
+ </script>
22
+ ```
23
+
24
+ ```jsx
25
+ const Demo = () => {
26
+ const [open, setOpen] = createSignal('closed');
27
+ const handleOpen = () => {
28
+ setOpen('open');
29
+ };
30
+ const handleOpenChange = (e) => {
31
+ setOpen(e?.detail);
32
+ };
33
+
34
+ return (
35
+ <>
36
+ <n-modal
37
+ open={open}
38
+ title="给遮罩添加高斯模糊"
39
+ mask-blur={true}
40
+ onOpenChange={handleOpenChange}
41
+ content={
42
+ <>
43
+ <p>Some contents...</p>
44
+ <p>Some contents...</p>
45
+ </>
46
+ }
47
+ />
48
+ <n-button type="primary" onClick={handleOpen}>
49
+ 遮罩模糊
50
+ </n-button>
51
+ </>
52
+ );
53
+ };
54
+
55
+ render(<Demo />);
56
+ ```
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: 点击遮罩关闭
3
+ description: 点击遮罩关闭模态框, 默认开启
4
+ order: 3
5
+ ---
6
+
7
+ ```html
8
+ <n-button type="primary">点击遮罩关闭模态框</n-button>
9
+ <n-modal mask-closable="false"></n-modal>
10
+ <script>
11
+ const modal = container.querySelector('n-modal');
12
+ const btn = container.querySelector('n-button');
13
+
14
+ btn.addEventListener('click', function (e) {
15
+ modal.open = 'open';
16
+ });
17
+ const div = document.createElement('div');
18
+ const p1 = document.createElement('p');
19
+
20
+ p1.textContent = '点击遮罩关闭模态框, 默认开启;';
21
+ const p2 = document.createElement('p');
22
+
23
+ p2.textContent = '这里关闭了点击遮罩关闭功能;';
24
+ div.append(p1);
25
+ div.append(p2);
26
+ modal.content = div;
27
+ modal.addEventListener('openchange', function (e) {
28
+ modal.open = e.detail;
29
+ });
30
+ </script>
31
+ ```
32
+
33
+ ```jsx
34
+ const Demo = () => {
35
+ const [open, setOpen] = createSignal('closed');
36
+ const handleOpen = () => {
37
+ setOpen('open');
38
+ };
39
+ const handleOpenChange = (e) => {
40
+ setOpen(e?.detail);
41
+ };
42
+
43
+ return (
44
+ <>
45
+ <n-modal
46
+ open={open}
47
+ mask-closable={false}
48
+ onOpenChange={handleOpenChange}
49
+ content={
50
+ <>
51
+ <p>点击遮罩关闭模态框, 默认开启;</p>
52
+ <p>这里关闭了点击遮罩关闭功能;</p>
53
+ </>
54
+ }
55
+ />
56
+ <n-button type="primary" onClick={handleOpen}>
57
+ 点击遮罩关闭模态框
58
+ </n-button>
59
+ </>
60
+ );
61
+ };
62
+
63
+ render(<Demo />);
64
+ ```
package/es/modal/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var e;function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e}).apply(this,arguments)}import{use as o}from"solid-js/web";import{template as n}from"solid-js/web";import"solid-js/web";import{insert as l}from"solid-js/web";import{getOwner as s}from"solid-js/web";import{effect as i}from"solid-js/web";import{delegateEvents as r}from"solid-js/web";import{createComponent as c}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let d=n('<span class="modal-close">'),m=n('<n-button class="modal-close">',!0,!1),p=n("<style> "),u=n("<style>"),v=n(`<n-button class="modal-close">⛌`,!0,!1),f=n('<div class="portal"><div class="modal-content"><div class="modal-header"><strong class="modal-title"></strong></div><div class="modal-body">');import{Show as g,createEffect as h,createMemo as b,createSignal as w,mergeProps as y,onCleanup as k,untrack as C}from"solid-js";import{customElement as j}from"solid-element";import{Portal as $}from"solid-js/web";import E from"./store";import{style as O}from"./style";import"../button";export var OpenState;function _(e){let n;let r=document.documentElement,{setNum:y}=E,[j,_]=w("closed"),[L,x]=w({x:0,y:0,width:0,height:0}),I=b(()=>{let{x:e,y:t,width:o,height:n}=L();return`.portal { --y: ${-(t-n/2)}px;--x: ${-(e-o/2)}px;}`});function S(t){_(t),null==e.onOpenChange||e.onOpenChange.call(e,t)}function B(e){e.preventDefault()}function D(t){B(t),"keydown"===t.type?e.escClosable&&"Escape"===t.key&&S("closeing"):S("closeing")}function H(){"closeing"===j()&&S("closed")}function P(t){B(t),e.maskClosable&&t.target===n&&S("closeing")}function W(e){x(o=>t({},o,{x:r.clientWidth/2-e.clientX,y:r.clientHeight/2-e.clientY}))}h(()=>{void 0!==e.open&&e.open!==C(j)&&_(e.open)}),h(()=>{"open"===j()?(y(e=>e+1),r.addEventListener("mousewheel",B,{passive:!1}),e.escClosable&&r.addEventListener("keydown",D,!1)):"closeing"===j()?y(e=>e-1):r.addEventListener("click",W,!0),k(()=>{r.removeEventListener("mousewheel",B,!1),r.removeEventListener("keydown",D,!1),r.removeEventListener("click",W,!0)})});let X=b(()=>null===e.closeIcon||!1===e.closeIcon?null:["function","object"].includes(typeof e.closeIcon)?()=>(()=>{let t=d();return l(t,()=>e.closeIcon),t})():()=>(()=>{let t=m();return a(t,"click",D,!0),t.danger=!0,t.circle=!0,t.flat=!0,t._$owner=s(),l(t,()=>e.closeIcon),t})());return c(g,{get when(){return"closed"!==j()},get children(){return c($,{useShadow:!0,get children(){return[(()=>{let e=p(),t=e.firstChild;return i(()=>t.data=I()),e})(),(()=>{let e=u();return e.textContent=O,e})(),(()=>{let t=f(),r=n,d=t.firstChild,m=d.firstChild,p=m.firstChild,u=m.nextSibling;return a(t,"click",P,!0),a(t,"animationend",H),"function"==typeof r?o(r,t):n=t,l(p,()=>e.title),l(d,c(g,{get when(){return void 0===e.closeIcon},get fallback(){return X()},get children(){let e=v();return a(e,"click",D,!0),e.danger=!0,e.circle=!0,e.flat=!0,e._$owner=s(),e}}),u),l(u,()=>e.content),i(o=>{let n=!("open"!==j()),l="open"!==j(),s=!!e.maskBlur;return n!==o._v$&&t.classList.toggle("open",o._v$=n),l!==o._v$2&&t.classList.toggle("closeing",o._v$2=l),s!==o._v$3&&t.classList.toggle("mask-blur",o._v$3=s),o},{_v$:void 0,_v$2:void 0,_v$3:void 0}),t})()]}})}})}(e=OpenState||(OpenState={})).closed="closed",e.closeing="closeing",e.open="open",j("n-modal",{open:"closed",maskClosable:!0,escClosable:!0,onOpenChange:void 0,closeIcon:void 0,content:void 0,title:void 0,maskBlur:void 0},(e,t)=>c(_,y({onOpenChange(e){t.element.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},e)));export default _;r(["click"]);
1
+ var e;function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e}).apply(this,arguments)}import{use as o}from"solid-js/web";import{template as n}from"solid-js/web";import"solid-js/web";import{insert as l}from"solid-js/web";import{getOwner as s}from"solid-js/web";import{effect as i}from"solid-js/web";import{delegateEvents as r}from"solid-js/web";import{createComponent as c}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let d=n('<span class="modal-close">'),m=n('<n-button class="modal-close">',!0,!1),p=n("<style> "),u=n("<style>"),v=n(`<n-button class="modal-close">⛌`,!0,!1),f=n('<div class="portal"><div class="modal-content"><div class="modal-header"><strong class="modal-title"></strong></div><div class="modal-body">');import{createEffect as g,createMemo as h,createSignal as b,mergeProps as w,onCleanup as y,Show as k,untrack as C}from"solid-js";import{Portal as j}from"solid-js/web";import{customElement as $}from"solid-element";import E from"./store";import{style as O}from"./style";import"../button";export var OpenState;function _(e){let n;let r=document.documentElement,{setNum:w}=E,[$,_]=b("closed"),[L,x]=b({x:0,y:0,width:0,height:0}),I=h(()=>{let{x:e,y:t,width:o,height:n}=L();return`.portal { --y: ${-(t-n/2)}px;--x: ${-(e-o/2)}px;}`});function S(t){_(t),null==e.onOpenChange||e.onOpenChange.call(e,t)}function B(e){e.preventDefault()}function D(t){B(t),"keydown"===t.type?e.escClosable&&"Escape"===t.key&&S("closeing"):S("closeing")}function H(){"closeing"===$()&&S("closed")}function P(t){B(t),e.maskClosable&&t.target===n&&S("closeing")}function W(e){x(o=>t({},o,{x:r.clientWidth/2-e.clientX,y:r.clientHeight/2-e.clientY}))}g(()=>{void 0!==e.open&&e.open!==C($)&&_(e.open)}),g(()=>{"open"===$()?(w(e=>e+1),r.addEventListener("mousewheel",B,{passive:!1}),e.escClosable&&r.addEventListener("keydown",D,!1)):"closeing"===$()?w(e=>e-1):r.addEventListener("click",W,!0),y(()=>{r.removeEventListener("mousewheel",B,!1),r.removeEventListener("keydown",D,!1),r.removeEventListener("click",W,!0)})});let X=h(()=>null===e.closeIcon||!1===e.closeIcon?null:["function","object"].includes(typeof e.closeIcon)?()=>(()=>{let t=d();return l(t,()=>e.closeIcon),t})():()=>(()=>{let t=m();return a(t,"click",D,!0),t.danger=!0,t.circle=!0,t.flat=!0,t._$owner=s(),l(t,()=>e.closeIcon),t})());return c(k,{get when(){return"closed"!==$()},get children(){return c(j,{useShadow:!0,get children(){return[(()=>{let e=p(),t=e.firstChild;return i(()=>t.data=I()),e})(),(()=>{let e=u();return e.textContent=O,e})(),(()=>{let t=f(),r=n,d=t.firstChild,m=d.firstChild,p=m.firstChild,u=m.nextSibling;return a(t,"click",P,!0),a(t,"animationend",H),"function"==typeof r?o(r,t):n=t,l(p,()=>e.title),l(d,c(k,{get when(){return void 0===e.closeIcon},get fallback(){return X()},get children(){let e=v();return a(e,"click",D,!0),e.danger=!0,e.circle=!0,e.flat=!0,e._$owner=s(),e}}),u),l(u,()=>e.content),i(o=>{let n=!("open"!==$()),l="open"!==$(),s=!!e.maskBlur;return n!==o._v$&&t.classList.toggle("open",o._v$=n),l!==o._v$2&&t.classList.toggle("closeing",o._v$2=l),s!==o._v$3&&t.classList.toggle("mask-blur",o._v$3=s),o},{_v$:void 0,_v$2:void 0,_v$3:void 0}),t})()]}})}})}(e=OpenState||(OpenState={})).closed="closed",e.closeing="closeing",e.open="open",$("n-modal",{open:"closed",maskClosable:!0,escClosable:!0,onOpenChange:void 0,closeIcon:void 0,content:void 0,title:void 0,maskBlur:void 0},(e,t)=>c(_,w({onOpenChange(e){t.element.dispatchEvent(new CustomEvent("openchange",{detail:e}))}},e)));export default _;r(["click"]);
2
2
  //# sourceMappingURL=index.js.map