neko-ui 2.9.2 → 2.9.4

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 (415) hide show
  1. package/es/avatar/favicon.svg +0 -0
  2. package/es/avatar/group.js +17 -18
  3. package/es/avatar/group.js.map +1 -1
  4. package/es/avatar/index.js +1 -2
  5. package/es/avatar/index.js.map +1 -1
  6. package/es/avatar/style.js +1 -2
  7. package/es/avatar/style.js.map +1 -1
  8. package/es/back-top/index.js +1 -2
  9. package/es/back-top/index.js.map +1 -1
  10. package/es/back-top/style.js +1 -2
  11. package/es/back-top/style.js.map +1 -1
  12. package/es/basic-config/index.js +1 -2
  13. package/es/basic-config/index.js.map +1 -1
  14. package/es/button/index.js +1 -2
  15. package/es/button/index.js.map +1 -1
  16. package/es/button/style.js +1 -2
  17. package/es/button/style.js.map +1 -1
  18. package/es/capture-screen/index.js +1 -2
  19. package/es/capture-screen/index.js.map +1 -1
  20. package/es/capture-screen/style.js +1 -2
  21. package/es/capture-screen/style.js.map +1 -1
  22. package/es/carousel/index.js +1 -2
  23. package/es/carousel/index.js.map +1 -1
  24. package/es/carousel/style.js +1 -2
  25. package/es/carousel/style.js.map +1 -1
  26. package/es/checkbox/index.js +1 -2
  27. package/es/checkbox/index.js.map +1 -1
  28. package/es/checkbox/style.js +1 -2
  29. package/es/checkbox/style.js.map +1 -1
  30. package/es/code/index.d.ts +6 -2
  31. package/es/code/index.js +1 -2
  32. package/es/code/index.js.map +1 -1
  33. package/es/code/style.js +25 -26
  34. package/es/code/style.js.map +1 -1
  35. package/es/code/worker.js +1 -2
  36. package/es/code/worker.js.map +1 -1
  37. package/es/color-palette/index.js +1 -2
  38. package/es/color-palette/index.js.map +1 -1
  39. package/es/color-palette/style.js +1 -2
  40. package/es/color-palette/style.js.map +1 -1
  41. package/es/color-picker/index.js +1 -2
  42. package/es/color-picker/index.js.map +1 -1
  43. package/es/color-picker/style.js +1 -2
  44. package/es/color-picker/style.js.map +1 -1
  45. package/es/cron/begin-interval.js +1 -2
  46. package/es/cron/begin-interval.js.map +1 -1
  47. package/es/cron/day.js +1 -2
  48. package/es/cron/day.js.map +1 -1
  49. package/es/cron/hour.js +1 -2
  50. package/es/cron/hour.js.map +1 -1
  51. package/es/cron/index.js +1 -2
  52. package/es/cron/index.js.map +1 -1
  53. package/es/cron/item.js +1 -2
  54. package/es/cron/item.js.map +1 -1
  55. package/es/cron/minute.js +1 -2
  56. package/es/cron/minute.js.map +1 -1
  57. package/es/cron/month.js +1 -2
  58. package/es/cron/month.js.map +1 -1
  59. package/es/cron/period.js +1 -2
  60. package/es/cron/period.js.map +1 -1
  61. package/es/cron/second.js +1 -2
  62. package/es/cron/second.js.map +1 -1
  63. package/es/cron/some.js +1 -2
  64. package/es/cron/some.js.map +1 -1
  65. package/es/cron/style.js +1 -2
  66. package/es/cron/style.js.map +1 -1
  67. package/es/cron/week.js +1 -2
  68. package/es/cron/week.js.map +1 -1
  69. package/es/cron/year.js +1 -2
  70. package/es/cron/year.js.map +1 -1
  71. package/es/date-picker/date.js +1 -2
  72. package/es/date-picker/date.js.map +1 -1
  73. package/es/date-picker/dayjs.js +1 -2
  74. package/es/date-picker/dayjs.js.map +1 -1
  75. package/es/date-picker/index.js +1 -2
  76. package/es/date-picker/index.js.map +1 -1
  77. package/es/date-picker/month.js +1 -2
  78. package/es/date-picker/month.js.map +1 -1
  79. package/es/date-picker/panel.js +1 -2
  80. package/es/date-picker/panel.js.map +1 -1
  81. package/es/date-picker/style.js +1 -2
  82. package/es/date-picker/style.js.map +1 -1
  83. package/es/date-picker/time.js +1 -2
  84. package/es/date-picker/time.js.map +1 -1
  85. package/es/date-picker/year.js +1 -2
  86. package/es/date-picker/year.js.map +1 -1
  87. package/es/dropdown/index.js +1 -2
  88. package/es/dropdown/index.js.map +1 -1
  89. package/es/empty/index.js +1 -2
  90. package/es/empty/index.js.map +1 -1
  91. package/es/from-schema/index.js +1 -2
  92. package/es/from-schema/index.js.map +1 -1
  93. package/es/get-options/index.js +1 -2
  94. package/es/get-options/index.js.map +1 -1
  95. package/es/highlight-text/index.js +1 -2
  96. package/es/highlight-text/index.js.map +1 -1
  97. package/es/img/index.js +1 -2
  98. package/es/img/index.js.map +1 -1
  99. package/es/img/lazy.js +1 -2
  100. package/es/img/lazy.js.map +1 -1
  101. package/es/img/style.js +1 -2
  102. package/es/img/style.js.map +1 -1
  103. package/es/index.js +1 -2
  104. package/es/index.js.map +1 -1
  105. package/es/input/index.js +1 -2
  106. package/es/input/index.js.map +1 -1
  107. package/es/input/style.js +1 -2
  108. package/es/input/style.js.map +1 -1
  109. package/es/input-number/index.js +1 -2
  110. package/es/input-number/index.js.map +1 -1
  111. package/es/katex/index.js +1 -2
  112. package/es/katex/index.js.map +1 -1
  113. package/es/md/common.d.ts +4 -0
  114. package/es/md/common.js +1 -0
  115. package/es/md/common.js.map +1 -0
  116. package/es/md/index.d.ts +1 -0
  117. package/es/md/index.js +1 -2
  118. package/es/md/index.js.map +1 -1
  119. package/es/md/worker.d.ts +9 -1
  120. package/es/md/worker.js +1 -2
  121. package/es/md/worker.js.map +1 -1
  122. package/es/md-style/index.js +1 -2
  123. package/es/md-style/index.js.map +1 -1
  124. package/es/menu/index.js +1 -2
  125. package/es/menu/index.js.map +1 -1
  126. package/es/menu/style.js +1 -2
  127. package/es/menu/style.js.map +1 -1
  128. package/es/modal/hooks.js +1 -2
  129. package/es/modal/hooks.js.map +1 -1
  130. package/es/modal/index.js +1 -2
  131. package/es/modal/index.js.map +1 -1
  132. package/es/modal/store.js +1 -2
  133. package/es/modal/store.js.map +1 -1
  134. package/es/modal/style.js +1 -2
  135. package/es/modal/style.js.map +1 -1
  136. package/es/notification/index.js +1 -2
  137. package/es/notification/index.js.map +1 -1
  138. package/es/notification/notification.js +1 -2
  139. package/es/notification/notification.js.map +1 -1
  140. package/es/notification/queque.js +1 -2
  141. package/es/notification/queque.js.map +1 -1
  142. package/es/notification/styles.js +1 -2
  143. package/es/notification/styles.js.map +1 -1
  144. package/es/pagination/index.js +1 -2
  145. package/es/pagination/index.js.map +1 -1
  146. package/es/pagination/styles.js +1 -2
  147. package/es/pagination/styles.js.map +1 -1
  148. package/es/popover/index.js +1 -2
  149. package/es/popover/index.js.map +1 -1
  150. package/es/popover/style.js +1 -2
  151. package/es/popover/style.js.map +1 -1
  152. package/es/prism/index.d.ts +0 -1
  153. package/es/prism/index.js +1 -2
  154. package/es/prism/index.js.map +1 -1
  155. package/es/provider/index.js +1 -2
  156. package/es/provider/index.js.map +1 -1
  157. package/es/qrcode/index.js +1 -2
  158. package/es/qrcode/index.js.map +1 -1
  159. package/es/qrcode/qrcode.js +1 -2
  160. package/es/qrcode/qrcode.js.map +1 -1
  161. package/es/radio/index.js +1 -2
  162. package/es/radio/index.js.map +1 -1
  163. package/es/radio/style.js +1 -2
  164. package/es/radio/style.js.map +1 -1
  165. package/es/segmented/index.js +1 -12
  166. package/es/segmented/index.js.map +1 -1
  167. package/es/segmented/style.js +1 -2
  168. package/es/segmented/style.js.map +1 -1
  169. package/es/select/index.js +1 -2
  170. package/es/select/index.js.map +1 -1
  171. package/es/select/style.js +1 -2
  172. package/es/select/style.js.map +1 -1
  173. package/es/skeleton/index.js +2 -25
  174. package/es/skeleton/index.js.map +1 -1
  175. package/es/spin/index.js +1 -2
  176. package/es/spin/index.js.map +1 -1
  177. package/es/switch/index.js +1 -2
  178. package/es/switch/index.js.map +1 -1
  179. package/es/switch/style.js +1 -2
  180. package/es/switch/style.js.map +1 -1
  181. package/es/table/index.js +1 -2
  182. package/es/table/index.js.map +1 -1
  183. package/es/table/styles.js +1 -2
  184. package/es/table/styles.js.map +1 -1
  185. package/es/tabs/index.js +1 -12
  186. package/es/tabs/index.js.map +1 -1
  187. package/es/tabs/style.d.ts +2 -2
  188. package/es/tabs/style.js +32 -33
  189. package/es/tabs/style.js.map +1 -1
  190. package/es/tag/index.js +1 -2
  191. package/es/tag/index.js.map +1 -1
  192. package/es/tag/style.js +1 -2
  193. package/es/tag/style.js.map +1 -1
  194. package/es/theme/index.js +1 -2
  195. package/es/theme/index.js.map +1 -1
  196. package/es/tree/index.js +1 -2
  197. package/es/tree/index.js.map +1 -1
  198. package/es/tree/register.js +1 -2
  199. package/es/tree/register.js.map +1 -1
  200. package/es/tree/style.js +1 -2
  201. package/es/tree/style.js.map +1 -1
  202. package/es/tree/type.js +1 -2
  203. package/es/tree/type.js.map +1 -1
  204. package/es/typography/index.js +1 -2
  205. package/es/typography/index.js.map +1 -1
  206. package/lib/avatar/favicon.svg +0 -0
  207. package/lib/avatar/group.js +18 -19
  208. package/lib/avatar/group.js.map +1 -1
  209. package/lib/avatar/index.js +3 -4
  210. package/lib/avatar/index.js.map +1 -1
  211. package/lib/avatar/style.js +3 -4
  212. package/lib/avatar/style.js.map +1 -1
  213. package/lib/back-top/index.js +1 -2
  214. package/lib/back-top/index.js.map +1 -1
  215. package/lib/back-top/style.js +1 -2
  216. package/lib/back-top/style.js.map +1 -1
  217. package/lib/basic-config/index.js +1 -2
  218. package/lib/basic-config/index.js.map +1 -1
  219. package/lib/button/index.js +1 -2
  220. package/lib/button/index.js.map +1 -1
  221. package/lib/button/style.js +1 -2
  222. package/lib/button/style.js.map +1 -1
  223. package/lib/capture-screen/index.js +1 -2
  224. package/lib/capture-screen/index.js.map +1 -1
  225. package/lib/capture-screen/style.js +1 -2
  226. package/lib/capture-screen/style.js.map +1 -1
  227. package/lib/carousel/index.js +1 -2
  228. package/lib/carousel/index.js.map +1 -1
  229. package/lib/carousel/style.js +1 -2
  230. package/lib/carousel/style.js.map +1 -1
  231. package/lib/checkbox/index.js +1 -2
  232. package/lib/checkbox/index.js.map +1 -1
  233. package/lib/checkbox/style.js +1 -2
  234. package/lib/checkbox/style.js.map +1 -1
  235. package/lib/code/index.d.ts +6 -2
  236. package/lib/code/index.js +1 -2
  237. package/lib/code/index.js.map +1 -1
  238. package/lib/code/style.js +26 -27
  239. package/lib/code/style.js.map +1 -1
  240. package/lib/code/worker.js +2 -3
  241. package/lib/code/worker.js.map +1 -1
  242. package/lib/color-palette/index.js +1 -2
  243. package/lib/color-palette/index.js.map +1 -1
  244. package/lib/color-palette/style.js +3 -4
  245. package/lib/color-palette/style.js.map +1 -1
  246. package/lib/color-picker/index.js +1 -2
  247. package/lib/color-picker/index.js.map +1 -1
  248. package/lib/color-picker/style.js +1 -2
  249. package/lib/color-picker/style.js.map +1 -1
  250. package/lib/cron/begin-interval.js +1 -2
  251. package/lib/cron/begin-interval.js.map +1 -1
  252. package/lib/cron/day.js +1 -2
  253. package/lib/cron/day.js.map +1 -1
  254. package/lib/cron/hour.js +1 -2
  255. package/lib/cron/hour.js.map +1 -1
  256. package/lib/cron/index.js +1 -2
  257. package/lib/cron/index.js.map +1 -1
  258. package/lib/cron/item.js +1 -2
  259. package/lib/cron/item.js.map +1 -1
  260. package/lib/cron/minute.js +1 -2
  261. package/lib/cron/minute.js.map +1 -1
  262. package/lib/cron/month.js +1 -2
  263. package/lib/cron/month.js.map +1 -1
  264. package/lib/cron/period.js +1 -2
  265. package/lib/cron/period.js.map +1 -1
  266. package/lib/cron/second.js +1 -2
  267. package/lib/cron/second.js.map +1 -1
  268. package/lib/cron/some.js +1 -2
  269. package/lib/cron/some.js.map +1 -1
  270. package/lib/cron/style.js +4 -5
  271. package/lib/cron/style.js.map +1 -1
  272. package/lib/cron/week.js +1 -2
  273. package/lib/cron/week.js.map +1 -1
  274. package/lib/cron/year.js +1 -2
  275. package/lib/cron/year.js.map +1 -1
  276. package/lib/date-picker/date.js +1 -2
  277. package/lib/date-picker/date.js.map +1 -1
  278. package/lib/date-picker/dayjs.js +1 -2
  279. package/lib/date-picker/dayjs.js.map +1 -1
  280. package/lib/date-picker/index.js +1 -2
  281. package/lib/date-picker/index.js.map +1 -1
  282. package/lib/date-picker/month.js +1 -2
  283. package/lib/date-picker/month.js.map +1 -1
  284. package/lib/date-picker/panel.js +1 -2
  285. package/lib/date-picker/panel.js.map +1 -1
  286. package/lib/date-picker/style.js +1 -2
  287. package/lib/date-picker/style.js.map +1 -1
  288. package/lib/date-picker/time.js +1 -2
  289. package/lib/date-picker/time.js.map +1 -1
  290. package/lib/date-picker/year.js +1 -2
  291. package/lib/date-picker/year.js.map +1 -1
  292. package/lib/dropdown/index.js +1 -2
  293. package/lib/dropdown/index.js.map +1 -1
  294. package/lib/empty/index.js +1 -2
  295. package/lib/empty/index.js.map +1 -1
  296. package/lib/from-schema/index.js +1 -2
  297. package/lib/from-schema/index.js.map +1 -1
  298. package/lib/get-options/index.js +1 -2
  299. package/lib/get-options/index.js.map +1 -1
  300. package/lib/highlight-text/index.js +2 -3
  301. package/lib/highlight-text/index.js.map +1 -1
  302. package/lib/img/index.js +1 -2
  303. package/lib/img/index.js.map +1 -1
  304. package/lib/img/lazy.js +1 -2
  305. package/lib/img/lazy.js.map +1 -1
  306. package/lib/img/style.js +3 -4
  307. package/lib/img/style.js.map +1 -1
  308. package/lib/index.js +1 -2
  309. package/lib/index.js.map +1 -1
  310. package/lib/input/index.js +1 -2
  311. package/lib/input/index.js.map +1 -1
  312. package/lib/input/style.js +1 -2
  313. package/lib/input/style.js.map +1 -1
  314. package/lib/input-number/index.js +2 -3
  315. package/lib/input-number/index.js.map +1 -1
  316. package/lib/katex/index.js +1 -2
  317. package/lib/katex/index.js.map +1 -1
  318. package/lib/md/common.d.ts +4 -0
  319. package/lib/md/common.js +1 -0
  320. package/lib/md/common.js.map +1 -0
  321. package/lib/md/index.d.ts +1 -0
  322. package/lib/md/index.js +1 -2
  323. package/lib/md/index.js.map +1 -1
  324. package/lib/md/worker.d.ts +9 -1
  325. package/lib/md/worker.js +1 -2
  326. package/lib/md/worker.js.map +1 -1
  327. package/lib/md-style/index.js +2 -3
  328. package/lib/md-style/index.js.map +1 -1
  329. package/lib/menu/index.js +1 -2
  330. package/lib/menu/index.js.map +1 -1
  331. package/lib/menu/style.js +1 -2
  332. package/lib/menu/style.js.map +1 -1
  333. package/lib/modal/hooks.js +1 -2
  334. package/lib/modal/hooks.js.map +1 -1
  335. package/lib/modal/index.js +1 -2
  336. package/lib/modal/index.js.map +1 -1
  337. package/lib/modal/store.js +1 -2
  338. package/lib/modal/store.js.map +1 -1
  339. package/lib/modal/style.js +1 -2
  340. package/lib/modal/style.js.map +1 -1
  341. package/lib/notification/index.js +1 -2
  342. package/lib/notification/index.js.map +1 -1
  343. package/lib/notification/notification.js +1 -2
  344. package/lib/notification/notification.js.map +1 -1
  345. package/lib/notification/queque.js +1 -2
  346. package/lib/notification/queque.js.map +1 -1
  347. package/lib/notification/styles.js +1 -2
  348. package/lib/notification/styles.js.map +1 -1
  349. package/lib/pagination/index.js +1 -2
  350. package/lib/pagination/index.js.map +1 -1
  351. package/lib/pagination/styles.js +1 -2
  352. package/lib/pagination/styles.js.map +1 -1
  353. package/lib/popover/index.js +1 -2
  354. package/lib/popover/index.js.map +1 -1
  355. package/lib/popover/style.js +3 -4
  356. package/lib/popover/style.js.map +1 -1
  357. package/lib/prism/index.d.ts +0 -1
  358. package/lib/prism/index.js +1 -2
  359. package/lib/prism/index.js.map +1 -1
  360. package/lib/provider/index.js +1 -2
  361. package/lib/provider/index.js.map +1 -1
  362. package/lib/qrcode/index.js +1 -2
  363. package/lib/qrcode/index.js.map +1 -1
  364. package/lib/qrcode/qrcode.js +1 -2
  365. package/lib/qrcode/qrcode.js.map +1 -1
  366. package/lib/radio/index.js +1 -2
  367. package/lib/radio/index.js.map +1 -1
  368. package/lib/radio/style.js +1 -2
  369. package/lib/radio/style.js.map +1 -1
  370. package/lib/segmented/index.js +1 -12
  371. package/lib/segmented/index.js.map +1 -1
  372. package/lib/segmented/style.js +1 -2
  373. package/lib/segmented/style.js.map +1 -1
  374. package/lib/select/index.js +1 -2
  375. package/lib/select/index.js.map +1 -1
  376. package/lib/select/style.js +1 -2
  377. package/lib/select/style.js.map +1 -1
  378. package/lib/skeleton/index.js +2 -25
  379. package/lib/skeleton/index.js.map +1 -1
  380. package/lib/spin/index.js +2 -3
  381. package/lib/spin/index.js.map +1 -1
  382. package/lib/switch/index.js +1 -2
  383. package/lib/switch/index.js.map +1 -1
  384. package/lib/switch/style.js +1 -2
  385. package/lib/switch/style.js.map +1 -1
  386. package/lib/table/index.js +1 -2
  387. package/lib/table/index.js.map +1 -1
  388. package/lib/table/styles.js +1 -2
  389. package/lib/table/styles.js.map +1 -1
  390. package/lib/tabs/index.js +1 -12
  391. package/lib/tabs/index.js.map +1 -1
  392. package/lib/tabs/style.d.ts +2 -2
  393. package/lib/tabs/style.js +32 -33
  394. package/lib/tabs/style.js.map +1 -1
  395. package/lib/tag/index.js +3 -4
  396. package/lib/tag/index.js.map +1 -1
  397. package/lib/tag/style.js +1 -2
  398. package/lib/tag/style.js.map +1 -1
  399. package/lib/theme/index.js +1 -2
  400. package/lib/theme/index.js.map +1 -1
  401. package/lib/tree/index.js +1 -2
  402. package/lib/tree/index.js.map +1 -1
  403. package/lib/tree/register.js +1 -2
  404. package/lib/tree/register.js.map +1 -1
  405. package/lib/tree/style.js +1 -2
  406. package/lib/tree/style.js.map +1 -1
  407. package/lib/tree/type.js +1 -2
  408. package/lib/tree/type.js.map +1 -1
  409. package/lib/typography/index.js +7 -8
  410. package/lib/typography/index.js.map +1 -1
  411. package/package.json +8 -8
  412. package/umd/index.js +4187 -1
  413. package/umd/js/074a85150a9f6a97.js +1 -0
  414. package/es/cron/api.md +0 -27
  415. package/lib/cron/api.md +0 -27
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/carousel/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n Index,\n mergeProps,\n onCleanup,\n Show,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute } from '../basic-config';\nimport theme, { block } from '../theme';\n\nimport { style } from './style';\n\nexport interface CarouselProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 轮播的内容 */\n children?: JSX.Element[];\n /** 当前内容的位置\n * @default 0\n */\n offset?: number;\n /** 开启指示器 */\n dots?: boolean;\n /** 设置自动播放时长, 不设置时不自动播放 */\n autoplay?: number;\n /** 自定义头部 */\n header?: (current: number) => JSX.Element | ((current: number) => JSX.Element);\n /** 切换显示的位置时的回调方法 */\n onChange?: (e: number) => void;\n}\nexport type CarouselElement = CustomElement<CarouselProps>;\n\nfunction Carousel(_props: CarouselProps) {\n const { baseStyle } = theme;\n const props = mergeProps({ autoplay: -1, children: [] }, _props);\n const [left, setLeft] = createSignal(0);\n const [right, setRight] = createSignal(1);\n const [offset, setOffset] = createSignal(0);\n const [direction, setDirection] = createSignal<1 | -1 | 0>(0);\n let playTimer: NodeJS.Timeout | undefined;\n\n function onOffsetChange() {\n const _dir = direction();\n\n if (_dir === -1) {\n setOffset(left());\n } else if (_dir === 1) {\n setOffset(right());\n }\n setDirection(0);\n if (isFunction(props.onChange)) {\n props.onChange(offset());\n }\n }\n function handlePrev() {\n setDirection(-1);\n }\n function handleNext() {\n setDirection(1);\n }\n function handleDot(idx: number, e: Event) {\n e.stopPropagation();\n const _offset = offset();\n const _current = Math.floor(_offset / 20) * 20 + idx;\n\n if (_current > _offset) {\n setDirection(1);\n setRight(_current);\n } else if (_current < _offset) {\n setDirection(-1);\n setLeft(_current);\n }\n }\n function getPrevNext(idx: number, arr: JSX.Element[]) {\n let _prev = idx - 1,\n _next = idx + 1;\n\n if (_prev < 0) {\n _prev = arr.length - 1;\n }\n if (_next > arr.length - 1) {\n _next = 0;\n }\n return [_prev, _next];\n }\n const list = createMemo(() => [...props.children]);\n const dotLen = createMemo(() => Array(list().length > 20 ? 20 : list().length).fill(null));\n\n createEffect(() => {\n if (props.offset !== void 0) {\n setOffset(Number(props.offset));\n }\n });\n createEffect(() => {\n const [_prev, _next] = getPrevNext(offset(), list());\n\n setLeft(_prev);\n setRight(_next);\n });\n createEffect(() => {\n clearInterval(playTimer);\n const autoplay = Number(props.autoplay);\n\n if (autoplay > 0) {\n playTimer = setInterval(() => {\n if (autoplay < 1) {\n clearInterval(playTimer);\n }\n handleNext();\n }, autoplay);\n }\n });\n\n onCleanup(() => {\n clearInterval(playTimer);\n });\n const header = createMemo(() =>\n isFunction(props.header) ? props.header(offset()) : props.header,\n );\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <section class={cx('carousel', props.class)}>\n <section class=\"list\" data-dir={direction()}>\n <div class=\"item\">{list()[left()]}</div>\n <div class=\"item\" onAnimationEnd={onOffsetChange}>\n {list()[offset()]}\n </div>\n <div class=\"item\">{list()[right()]}</div>\n </section>\n <slot name=\"header\" />\n <Show when={header()}>\n <section class=\"header\">{header()}</section>\n </Show>\n <div class=\"prev\" onClick={handlePrev} />\n <div class=\"next\" onClick={handleNext} />\n <Show when={props.dots}>\n <div class=\"dots\">\n <Index each={dotLen()}>\n {(_, idx) => {\n return (\n <i\n class=\"dot\"\n classList={{\n active: idx === (offset() % 20) + direction(),\n }}\n onClick={handleDot.bind(null, idx)}\n />\n );\n }}\n </Index>\n </div>\n </Show>\n </section>\n </>\n );\n}\n\ncustomElement<CarouselProps>(\n 'n-carousel',\n {\n children: void 0,\n autoplay: void 0,\n class: void 0,\n css: void 0,\n offset: void 0,\n dots: void 0,\n header: void 0,\n onChange: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onChange(key: number) {\n el.offset = key;\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: key,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['css']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={block} />\n <Carousel {...props} />\n </>\n );\n },\n);\nexport default Carousel;\n"],"names":["createEffect","createMemo","createSignal","Index","mergeProps","onCleanup","Show","isFunction","css","cx","customElement","clearAttribute","theme","block","style","Carousel","_props","playTimer","baseStyle","props","autoplay","children","left","setLeft","right","setRight","offset","setOffset","direction","setDirection","onOffsetChange","_dir","onChange","handlePrev","handleNext","handleDot","idx","e","stopPropagation","_offset","_current","Math","floor","list","dotLen","Array","length","fill","Number","arr","_prev","_next","clearInterval","setInterval","header","dots","_","bind","class","opt","el","element","key","dispatchEvent","CustomEvent","detail","replaceChildren"],"mappings":"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"}
1
+ {"version":3,"sources":["components/carousel/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n Index,\n mergeProps,\n onCleanup,\n Show,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute } from '../basic-config';\nimport theme, { block } from '../theme';\n\nimport { style } from './style';\n\nexport interface CarouselProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 轮播的内容 */\n children?: JSX.Element[];\n /** 当前内容的位置\n * @default 0\n */\n offset?: number;\n /** 开启指示器 */\n dots?: boolean;\n /** 设置自动播放时长, 不设置时不自动播放 */\n autoplay?: number;\n /** 自定义头部 */\n header?: (current: number) => JSX.Element | ((current: number) => JSX.Element);\n /** 切换显示的位置时的回调方法 */\n onChange?: (e: number) => void;\n}\nexport type CarouselElement = CustomElement<CarouselProps>;\n\nfunction Carousel(_props: CarouselProps) {\n const { baseStyle } = theme;\n const props = mergeProps({ autoplay: -1, children: [] }, _props);\n const [left, setLeft] = createSignal(0);\n const [right, setRight] = createSignal(1);\n const [offset, setOffset] = createSignal(0);\n const [direction, setDirection] = createSignal<1 | -1 | 0>(0);\n let playTimer: NodeJS.Timeout | undefined;\n\n function onOffsetChange() {\n const _dir = direction();\n\n if (_dir === -1) {\n setOffset(left());\n } else if (_dir === 1) {\n setOffset(right());\n }\n setDirection(0);\n if (isFunction(props.onChange)) {\n props.onChange(offset());\n }\n }\n function handlePrev() {\n setDirection(-1);\n }\n function handleNext() {\n setDirection(1);\n }\n function handleDot(idx: number, e: Event) {\n e.stopPropagation();\n const _offset = offset();\n const _current = Math.floor(_offset / 20) * 20 + idx;\n\n if (_current > _offset) {\n setDirection(1);\n setRight(_current);\n } else if (_current < _offset) {\n setDirection(-1);\n setLeft(_current);\n }\n }\n function getPrevNext(idx: number, arr: JSX.Element[]) {\n let _prev = idx - 1,\n _next = idx + 1;\n\n if (_prev < 0) {\n _prev = arr.length - 1;\n }\n if (_next > arr.length - 1) {\n _next = 0;\n }\n return [_prev, _next];\n }\n const list = createMemo(() => [...props.children]);\n const dotLen = createMemo(() => Array(list().length > 20 ? 20 : list().length).fill(null));\n\n createEffect(() => {\n if (props.offset !== void 0) {\n setOffset(Number(props.offset));\n }\n });\n createEffect(() => {\n const [_prev, _next] = getPrevNext(offset(), list());\n\n setLeft(_prev);\n setRight(_next);\n });\n createEffect(() => {\n clearInterval(playTimer);\n const autoplay = Number(props.autoplay);\n\n if (autoplay > 0) {\n playTimer = setInterval(() => {\n if (autoplay < 1) {\n clearInterval(playTimer);\n }\n handleNext();\n }, autoplay);\n }\n });\n\n onCleanup(() => {\n clearInterval(playTimer);\n });\n const header = createMemo(() =>\n isFunction(props.header) ? props.header(offset()) : props.header,\n );\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <section class={cx('carousel', props.class)}>\n <section class=\"list\" data-dir={direction()}>\n <div class=\"item\">{list()[left()]}</div>\n <div class=\"item\" onAnimationEnd={onOffsetChange}>\n {list()[offset()]}\n </div>\n <div class=\"item\">{list()[right()]}</div>\n </section>\n <slot name=\"header\" />\n <Show when={header()}>\n <section class=\"header\">{header()}</section>\n </Show>\n <div class=\"prev\" onClick={handlePrev} />\n <div class=\"next\" onClick={handleNext} />\n <Show when={props.dots}>\n <div class=\"dots\">\n <Index each={dotLen()}>\n {(_, idx) => {\n return (\n <i\n class=\"dot\"\n classList={{\n active: idx === (offset() % 20) + direction(),\n }}\n onClick={handleDot.bind(null, idx)}\n />\n );\n }}\n </Index>\n </div>\n </Show>\n </section>\n </>\n );\n}\n\ncustomElement<CarouselProps>(\n 'n-carousel',\n {\n children: void 0,\n autoplay: void 0,\n class: void 0,\n css: void 0,\n offset: void 0,\n dots: void 0,\n header: void 0,\n onChange: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onChange(key: number) {\n el.offset = key;\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: key,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['css']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={block} />\n <Carousel {...props} />\n </>\n );\n },\n);\nexport default Carousel;\n"],"names":["createEffect","createMemo","createSignal","Index","mergeProps","onCleanup","Show","isFunction","css","cx","customElement","clearAttribute","theme","block","style","Carousel","_props","playTimer","baseStyle","props","autoplay","children","left","setLeft","right","setRight","offset","setOffset","direction","setDirection","onOffsetChange","_dir","onChange","handlePrev","handleNext","handleDot","idx","e","stopPropagation","_offset","_current","Math","floor","list","dotLen","Array","length","fill","Number","arr","_prev","_next","clearInterval","setInterval","header","dots","_","bind","class","opt","el","element","key","dispatchEvent","CustomEvent","detail","replaceChildren"],"mappings":"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"}
@@ -163,5 +163,4 @@ import{css as e}from"@moneko/css";export const style=e`
163
163
  transform: translate3d(-200%, 0, 0);
164
164
  }
165
165
  }
166
- `;
167
- //# sourceMappingURL=style.js.map
166
+ `;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/carousel/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n :host {\n inline-size: 100%;\n }\n\n .carousel {\n position: relative;\n display: block;\n overflow: hidden;\n border-radius: var(--border-radius);\n inline-size: 100%;\n block-size: 200px;\n color: #fff;\n user-select: none;\n line-height: normal;\n background-color: rgb(0 0 0 / 20%);\n\n & ::-webkit-scrollbar {\n display: none;\n }\n }\n\n .item {\n display: flex;\n justify-content: center;\n align-items: center;\n inline-size: 100%;\n min-inline-size: 100%;\n block-size: 100%;\n min-block-size: 100%;\n\n /* content-visibility: auto; */\n transform: translate3d(-100%, 0, 0);\n }\n\n .list {\n display: flex;\n border-radius: inherit;\n inline-size: 100%;\n block-size: 100%;\n transform: translate3d(0, 0, 0);\n\n &[data-dir='-1'] .item {\n animation: carousel-prev 500ms forwards;\n }\n\n &[data-dir='1'] .item {\n animation: carousel-next 500ms forwards;\n }\n }\n\n .prev,\n .next {\n position: absolute;\n z-index: 1;\n margin: auto;\n border-radius: var(--border-radius);\n font-size: 16px;\n font-weight: bold;\n transition: transform var(--transition-duration);\n inset-block: 0;\n inline-size: fit-content;\n block-size: fit-content;\n line-height: 1;\n cursor: pointer;\n\n &::before {\n display: inline-block;\n transform: rotate(90deg);\n }\n }\n\n .prev {\n inset-inline-start: 4px;\n transform: translateX(-32px) scaleY(0);\n\n &::before {\n content: '﹀';\n }\n }\n\n .next {\n inset-inline-end: 4px;\n transform: translateX(32px) scaleY(0);\n\n &::before {\n content: '︿';\n }\n }\n\n .dots {\n position: absolute;\n inset-inline: 0;\n inset-block-end: 16px;\n z-index: 1;\n display: flex;\n overflow: hidden;\n margin: 0 auto;\n inline-size: fit-content;\n max-inline-size: calc(100% - 42px);\n transition:\n transform var(--transition-duration) linear,\n opacity var(--transition-duration) linear;\n gap: 4px;\n }\n\n .dot {\n --offset: 0;\n\n border-radius: 2px;\n inline-size: 16px;\n min-inline-size: 8px;\n block-size: 3px;\n background-color: rgb(255 255 255 / 80%);\n transition: background-color var(--transition-duration) linear;\n cursor: pointer;\n\n &:hover,\n &.active {\n background-color: var(--primary-color);\n }\n }\n\n .header {\n position: absolute;\n inset-block-start: 0;\n z-index: 1;\n display: flex;\n inline-size: 100%;\n transition: transform var(--transition-duration);\n transform: translate3d(0, -100%, 0);\n }\n\n .carousel:hover {\n .prev,\n .next {\n &:not([data-show='false']) {\n transform: translateX(0) scaleY(1.5);\n }\n }\n\n .header {\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes carousel-prev {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n\n 100% {\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes carousel-next {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n\n 100% {\n transform: translate3d(-200%, 0, 0);\n }\n }\n`;\n"],"names":["css","style"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAO,MAAMC,MAAQD,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqKzB,CAAC,AAAC"}
1
+ {"version":3,"sources":["components/carousel/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n :host {\n inline-size: 100%;\n }\n\n .carousel {\n position: relative;\n display: block;\n overflow: hidden;\n border-radius: var(--border-radius);\n inline-size: 100%;\n block-size: 200px;\n color: #fff;\n user-select: none;\n line-height: normal;\n background-color: rgb(0 0 0 / 20%);\n\n & ::-webkit-scrollbar {\n display: none;\n }\n }\n\n .item {\n display: flex;\n justify-content: center;\n align-items: center;\n inline-size: 100%;\n min-inline-size: 100%;\n block-size: 100%;\n min-block-size: 100%;\n\n /* content-visibility: auto; */\n transform: translate3d(-100%, 0, 0);\n }\n\n .list {\n display: flex;\n border-radius: inherit;\n inline-size: 100%;\n block-size: 100%;\n transform: translate3d(0, 0, 0);\n\n &[data-dir='-1'] .item {\n animation: carousel-prev 500ms forwards;\n }\n\n &[data-dir='1'] .item {\n animation: carousel-next 500ms forwards;\n }\n }\n\n .prev,\n .next {\n position: absolute;\n z-index: 1;\n margin: auto;\n border-radius: var(--border-radius);\n font-size: 16px;\n font-weight: bold;\n transition: transform var(--transition-duration);\n inset-block: 0;\n inline-size: fit-content;\n block-size: fit-content;\n line-height: 1;\n cursor: pointer;\n\n &::before {\n display: inline-block;\n transform: rotate(90deg);\n }\n }\n\n .prev {\n inset-inline-start: 4px;\n transform: translateX(-32px) scaleY(0);\n\n &::before {\n content: '﹀';\n }\n }\n\n .next {\n inset-inline-end: 4px;\n transform: translateX(32px) scaleY(0);\n\n &::before {\n content: '︿';\n }\n }\n\n .dots {\n position: absolute;\n inset-inline: 0;\n inset-block-end: 16px;\n z-index: 1;\n display: flex;\n overflow: hidden;\n margin: 0 auto;\n inline-size: fit-content;\n max-inline-size: calc(100% - 42px);\n transition:\n transform var(--transition-duration) linear,\n opacity var(--transition-duration) linear;\n gap: 4px;\n }\n\n .dot {\n --offset: 0;\n\n border-radius: 2px;\n inline-size: 16px;\n min-inline-size: 8px;\n block-size: 3px;\n background-color: rgb(255 255 255 / 80%);\n transition: background-color var(--transition-duration) linear;\n cursor: pointer;\n\n &:hover,\n &.active {\n background-color: var(--primary-color);\n }\n }\n\n .header {\n position: absolute;\n inset-block-start: 0;\n z-index: 1;\n display: flex;\n inline-size: 100%;\n transition: transform var(--transition-duration);\n transform: translate3d(0, -100%, 0);\n }\n\n .carousel:hover {\n .prev,\n .next {\n &:not([data-show='false']) {\n transform: translateX(0) scaleY(1.5);\n }\n }\n\n .header {\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes carousel-prev {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n\n 100% {\n transform: translate3d(0, 0, 0);\n }\n }\n\n @keyframes carousel-next {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n\n 100% {\n transform: translate3d(-200%, 0, 0);\n }\n }\n`;\n"],"names":["css","style"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAO,MAAMC,MAAQD,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqKzB,CAAC,AAAC"}
@@ -1,2 +1 @@
1
- import{use as e}from"solid-js/web";import{template as t}from"solid-js/web";import{setAttribute as i}from"solid-js/web";import{insert as l}from"solid-js/web";import{effect as o}from"solid-js/web";import{delegateEvents as n}from"solid-js/web";import{createComponent as r}from"solid-js/web";import{className as s}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let d=t("<style> "),u=t("<style>"),m=t("<section>"),c=t('<span><input class="checkbox" type="checkbox"><label>');import{createEffect as f,createMemo as v,createSignal as p,For as b,mergeProps as h,Show as g}from"solid-js";import{css as y,cx as k}from"@moneko/css";import{customElement as j}from"solid-element";import{clearAttribute as w,FieldName as C}from"../basic-config";import x from"../get-options";import E,{inline as $}from"../theme";import{style as _}from"./style";function A(t){let{baseStyle:n}=E,[h,j]=p([]),w=v(()=>Object.assign({},C,t.fieldNames));f(()=>{let e=void 0===t.value?t.defaultValue:t.value,i=[];Array.isArray(e)?i=e:void 0!==e&&(i=[e]),j(i)});let $=v(()=>{let e=w();if(void 0===t.options)return x([{value:1}],e);let i=[{[e.value]:"all",[e.label]:"全选",indeterminate:!1}];return(t.checkAll?i:[]).concat(x(t.options||[],e))}),A=v(()=>{let e=[],t=w();return $().forEach(i=>{"indeterminate"in i||void 0===i[t.value]||e.push(i[t.value])}),e}),N=v(()=>{let e=!0,t=A();for(let i=0,l=t.length;i<l;i++)if(!h().includes(t[i])){e=!1;break}return e});function O(e){if(!t.disabled&&!e.disabled){let i="indeterminate"in e,l=i?[]:[...h()],o=e[w().value];if(i)N()||(l=A());else{let e=l.indexOf(o);-1!==e?l.splice(e,1):l.push(o)}void 0===t.value&&j(l),null==t.onChange||t.onChange.call(t,void 0===t.options?!!l[0]:l)}}function V(e,t){t.preventDefault(),"Enter"===t.key&&O(e)}return[(()=>{let e=d(),t=e.firstChild;return o(()=>t.data=n()),e})(),(()=>{let e=u();return e.textContent=_,e})(),r(g,{get when(){return t.css},get children(){let e=d(),i=e.firstChild;return o(()=>i.data=y(t.css)),e}}),(()=>{let n=m();return l(n,r(b,{get each(){return $()},children:n=>{let r=t.disabled||n.disabled,d=w(),u=n[d.value];return"indeterminate"in n&&f(()=>{let e;n.ref.indeterminate=(e=!1,A().forEach(t=>{h().length&&!h().includes(t)&&(e=!0)}),e)}),(()=>{let m=c(),f=m.firstChild,v=n.ref,p=f.nextSibling;return a(m,"click",O.bind(null,n),!0),a(m,"keyup",V.bind(null,n),!0),i(m,"aria-disabled",r),i(m,"tabindex",r?-1:0),a(f,"change",O.bind(null,n)),"function"==typeof v?e(v,f):n.ref=f,f.value=u,f.disabled=r,l(p,()=>n[d.label]),o(e=>{let l=k("item",n.class,n.status),o=t.name;return l!==e._v$&&s(m,e._v$=l),o!==e._v$2&&i(f,"name",e._v$2=o),e},{_v$:void 0,_v$2:void 0}),o(()=>f.checked="indeterminate"in n?N():h().includes(u)),m})()}})),o(()=>s(n,k("box",t.layout,t.class))),n})()]}j("n-checkbox",{class:void 0,css:void 0,name:void 0,disabled:void 0,value:void 0,defaultValue:void 0,options:void 0,onChange:void 0,fieldNames:void 0,checkAll:void 0,layout:void 0},(e,t)=>{let i=t.element,l=h({layout:i.layout||"horizontal",onChange(e){i.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return f(()=>{w(i,["options","fieldNames","css"])}),[(()=>{let e=u();return e.textContent=$,e})(),r(A,l)]});export default A;n(["click","keyup"]);
2
- //# sourceMappingURL=index.js.map
1
+ import{use as e}from"solid-js/web";import{template as t}from"solid-js/web";import{setAttribute as i}from"solid-js/web";import{insert as l}from"solid-js/web";import{effect as o}from"solid-js/web";import{delegateEvents as n}from"solid-js/web";import{createComponent as r}from"solid-js/web";import{className as s}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let d=t("<style> "),u=t("<style>"),m=t("<section>"),c=t('<span><input class="checkbox" type="checkbox"><label>');import{createEffect as f,createMemo as v,createSignal as p,For as b,mergeProps as h,Show as g}from"solid-js";import{css as y,cx as k}from"@moneko/css";import{customElement as j}from"solid-element";import{clearAttribute as w,FieldName as C}from"../basic-config";import x from"../get-options";import E,{inline as $}from"../theme";import{style as _}from"./style";function A(t){let{baseStyle:n}=E,[h,j]=p([]),w=v(()=>Object.assign({},C,t.fieldNames));f(()=>{let e=void 0===t.value?t.defaultValue:t.value,i=[];Array.isArray(e)?i=e:void 0!==e&&(i=[e]),j(i)});let $=v(()=>{let e=w();if(void 0===t.options)return x([{value:1}],e);let i=[{[e.value]:"all",[e.label]:"全选",indeterminate:!1}];return(t.checkAll?i:[]).concat(x(t.options||[],e))}),A=v(()=>{let e=[],t=w();return $().forEach(i=>{"indeterminate"in i||void 0===i[t.value]||e.push(i[t.value])}),e}),N=v(()=>{let e=!0,t=A();for(let i=0,l=t.length;i<l;i++)if(!h().includes(t[i])){e=!1;break}return e});function O(e){if(!t.disabled&&!e.disabled){let i="indeterminate"in e,l=i?[]:[...h()],o=e[w().value];if(i)N()||(l=A());else{let e=l.indexOf(o);-1!==e?l.splice(e,1):l.push(o)}void 0===t.value&&j(l),null==t.onChange||t.onChange.call(t,void 0===t.options?!!l[0]:l)}}function V(e,t){t.preventDefault(),"Enter"===t.key&&O(e)}return[(()=>{let e=d(),t=e.firstChild;return o(()=>t.data=n()),e})(),(()=>{let e=u();return e.textContent=_,e})(),r(g,{get when(){return t.css},get children(){let e=d(),i=e.firstChild;return o(()=>i.data=y(t.css)),e}}),(()=>{let n=m();return l(n,r(b,{get each(){return $()},children:n=>{let r=t.disabled||n.disabled,d=w(),u=n[d.value];return"indeterminate"in n&&f(()=>{let e;n.ref.indeterminate=(e=!1,A().forEach(t=>{h().length&&!h().includes(t)&&(e=!0)}),e)}),(()=>{let m=c(),f=m.firstChild,v=n.ref,p=f.nextSibling;return a(m,"click",O.bind(null,n),!0),a(m,"keyup",V.bind(null,n),!0),i(m,"aria-disabled",r),i(m,"tabindex",r?-1:0),a(f,"change",O.bind(null,n)),"function"==typeof v?e(v,f):n.ref=f,f.value=u,f.disabled=r,l(p,()=>n[d.label]),o(e=>{let l=k("item",n.class,n.status),o=t.name;return l!==e._v$&&s(m,e._v$=l),o!==e._v$2&&i(f,"name",e._v$2=o),e},{_v$:void 0,_v$2:void 0}),o(()=>f.checked="indeterminate"in n?N():h().includes(u)),m})()}})),o(()=>s(n,k("box",t.layout,t.class))),n})()]}j("n-checkbox",{class:void 0,css:void 0,name:void 0,disabled:void 0,value:void 0,defaultValue:void 0,options:void 0,onChange:void 0,fieldNames:void 0,checkAll:void 0,layout:void 0},(e,t)=>{let i=t.element,l=h({layout:i.layout||"horizontal",onChange(e){i.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return f(()=>{w(i,["options","fieldNames","css"])}),[(()=>{let e=u();return e.textContent=$,e})(),r(A,l)]});export default A;n(["click","keyup"]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/checkbox/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, For, mergeProps, Show } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\nimport { clearAttribute, FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme, { inline } from '../theme';\n\nimport { style } from './style';\n\n/** 通用API\n * @since 1.0.0\n */\nexport interface CheckboxBaseProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** input[type=\"checkbox\"] 的 name 属性 */\n name?: string;\n /** 只读 */\n disabled?: boolean;\n /** 选项排列方式\n * @default 'horizontal'\n */\n layout?: 'vertical' | 'horizontal';\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n}\n/** 复选框API */\nexport interface CheckboxBoolProps extends CheckboxBaseProps {\n /** 一个 bool 值; */\n value?: boolean;\n /** 默认值 */\n defaultValue?: boolean;\n /** 值修改时的回调方法 */\n onChange?: (val: boolean) => void;\n checkAll?: never;\n options?: never;\n}\n/** 通过数据渲染一组复选框按钮的API */\nexport interface CheckboxGroupProps extends CheckboxBaseProps {\n /** 全选 */\n checkAll?: boolean;\n /** 值;\n * 当设置了value时, 将是受控模式;\n * 受控模式可通过 onChange 事件更新 value\n **/\n value?: (string | number)[];\n /** 默认值 */\n defaultValue?: (string | number)[];\n /** 渲染选项所使用的数据,\n * 当没有设置该值时, 将渲染一个切换 bool 值的按钮\n * */\n options?: (CheckboxOption | string)[];\n /** 值修改时的回调方法 */\n onChange?: (val: (string | number)[]) => void;\n}\n/** 复选框选项\n * @since 1.0.0\n */\nexport interface CheckboxOption extends BaseOption {\n /** 不确定状态 */\n indeterminate?: boolean;\n}\n\nfunction Checkbox(props: CheckboxBoolProps | CheckboxGroupProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const fieldNames = createMemo(() => Object.assign({}, FieldName, props.fieldNames));\n\n createEffect(() => {\n const _val = typeof props.value === 'undefined' ? props.defaultValue : props.value;\n let val: (string | number)[] = [];\n\n if (Array.isArray(_val)) {\n val = _val;\n } else if (typeof _val !== 'undefined') {\n val = [_val as unknown as string];\n }\n\n setValue(val);\n });\n const options = createMemo(() => {\n const fieldName = fieldNames();\n\n if (typeof props.options === 'undefined') {\n return getOptions([{ value: 1 } as CheckboxOption], fieldName);\n }\n const checkAll: CheckboxOption[] = [\n { [fieldName.value]: 'all', [fieldName.label]: '全选', indeterminate: false },\n ];\n const arr = props.checkAll ? checkAll : [];\n\n return arr.concat(getOptions(props.options || [], fieldName));\n });\n\n const all = createMemo(() => {\n const allVal: (string | number)[] = [];\n const fieldName = fieldNames();\n\n options().forEach((item) => {\n if (!('indeterminate' in item) && typeof item[fieldName.value] !== 'undefined') {\n allVal.push(item[fieldName.value]!);\n }\n });\n\n return allVal;\n });\n\n function getIndeterminate() {\n let _indeterminate = false;\n\n all().forEach((v) => {\n if (value().length && !value().includes(v)) {\n _indeterminate = true;\n }\n });\n return _indeterminate;\n }\n const checkedAll = createMemo(() => {\n let checked = true;\n const alls = all();\n\n for (let i = 0, len = alls.length; i < len; i++) {\n if (!value().includes(alls[i])) {\n checked = false;\n break;\n }\n }\n return checked;\n });\n\n function onChange(item: CheckboxOption) {\n if (!props.disabled && !item.disabled) {\n const isIndeterminate = 'indeterminate' in item;\n let newVal = isIndeterminate ? [] : [...value()];\n const val = item[fieldNames().value]!;\n\n if (isIndeterminate) {\n if (!checkedAll()) {\n newVal = all();\n }\n } else {\n const idx = newVal.indexOf(val);\n\n if (idx !== -1) {\n newVal.splice(idx, 1);\n } else {\n newVal.push(val);\n }\n }\n if (typeof props.value === 'undefined') {\n setValue(newVal);\n }\n props.onChange?.((typeof props.options === 'undefined' ? !!newVal[0] : newVal) as never);\n }\n }\n function onKeyUp(item: CheckboxOption, e: KeyboardEvent) {\n e.preventDefault();\n if (e.key === 'Enter') {\n onChange(item);\n }\n }\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <section class={cx('box', props.layout, props.class)}>\n <For each={options()}>\n {(item) => {\n const readOnly = props.disabled || item.disabled;\n const fieldName = fieldNames();\n const realVal = item[fieldName.value]!;\n\n if ('indeterminate' in item) {\n createEffect(() => {\n item.ref.indeterminate = getIndeterminate();\n });\n }\n return (\n <span\n class={cx('item', item.class, item.status)}\n aria-disabled={readOnly}\n tabindex={readOnly ? -1 : 0}\n onKeyUp={onKeyUp.bind(null, item)}\n onClick={onChange.bind(null, item)}\n >\n <input\n ref={item.ref}\n class=\"checkbox\"\n type=\"checkbox\"\n name={props.name}\n value={realVal as string}\n disabled={readOnly}\n checked={'indeterminate' in item ? checkedAll() : value().includes(realVal)}\n onChange={onChange.bind(null, item)}\n />\n <label>{item[fieldName.label]}</label>\n </span>\n );\n }}\n </For>\n </section>\n </>\n );\n}\n\nexport type CheckboxGroupElement = CustomElement<CheckboxGroupProps>;\nexport type CheckboxBoolElement = CustomElement<CheckboxBoolProps>;\n\ncustomElement<CheckboxBoolProps | CheckboxGroupProps>(\n 'n-checkbox',\n {\n class: void 0,\n css: void 0,\n name: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n options: void 0,\n onChange: void 0,\n fieldNames: void 0,\n checkAll: void 0,\n layout: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n layout: el.layout || 'horizontal',\n onChange(next: (string | number)[] | boolean) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: next,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['options', 'fieldNames', 'css']);\n });\n return (\n <>\n <style textContent={inline} />\n <Checkbox {...props} />\n </>\n );\n },\n);\nexport default Checkbox;\n"],"names":["createEffect","createMemo","createSignal","For","mergeProps","Show","css","cx","customElement","clearAttribute","FieldName","getOptions","theme","inline","style","Checkbox","props","baseStyle","value","setValue","fieldNames","Object","assign","_val","defaultValue","val","Array","isArray","options","fieldName","checkAll","label","indeterminate","arr","concat","all","allVal","forEach","item","push","checkedAll","checked","alls","i","len","length","includes","onChange","disabled","isIndeterminate","newVal","idx","indexOf","splice","onKeyUp","e","preventDefault","key","readOnly","realVal","_indeterminate","ref","v","bind","class","status","name","layout","_","opt","el","element","next","dispatchEvent","CustomEvent","detail"],"mappings":"yeAAA,QAASA,gBAAAA,CAAY,CAAEC,cAAAA,CAAU,CAAEC,gBAAAA,CAAY,CAAEC,OAAAA,CAAG,CAAEC,cAAAA,CAAU,CAAEC,QAAAA,CAAI,KAAQ,UAAW,AACzF,QAASC,OAAAA,CAAG,CAAEC,MAAAA,CAAE,KAAQ,aAAc,AACtC,QAASC,iBAAAA,CAAa,KAAQ,eAAgB,AAG9C,QAASC,kBAAAA,CAAc,CAAEC,aAAAA,CAAS,KAAQ,iBAAkB,AAC5D,QAAOC,MAAgB,gBAAiB,AACxC,QAAOC,GAASC,UAAAA,CAAM,KAAQ,UAAW,AAEzC,QAASC,SAAAA,CAAK,KAAQ,SAAU,CA0DhC,SAASC,EAASC,CAA6C,EAC7D,GAAM,CAAEC,UAAAA,CAAS,CAAE,CAAGL,EAChB,CAACM,EAAOC,EAAS,CAAGjB,EAAkC,EAAE,EACxDkB,EAAanB,EAAW,IAAMoB,OAAOC,MAAM,CAAC,CAAC,EAAGZ,EAAWM,EAAMI,UAAU,GAEjFpB,EAAa,KACX,IAAMuB,EAAO,AAAuB,KAAA,IAAhBP,EAAME,KAAK,CAAmBF,EAAMQ,YAAY,CAAGR,EAAME,KAAK,CAC9EO,EAA2B,EAAE,CAE7BC,MAAMC,OAAO,CAACJ,GAChBE,EAAMF,EACmB,KAAA,IAATA,GAChBE,CAAAA,EAAM,CAACF,EAA0B,AAAD,EAGlCJ,EAASM,EACX,GACA,IAAMG,EAAU3B,EAAW,KACzB,IAAM4B,EAAYT,IAElB,GAAI,AAAyB,KAAA,IAAlBJ,EAAMY,OAAO,CACtB,OAAOjB,EAAW,CAAC,CAAEO,MAAO,CAAE,EAAoB,CAAEW,GAEtD,IAAMC,EAA6B,CACjC,CAAE,CAACD,EAAUX,KAAK,CAAC,CAAE,MAAO,CAACW,EAAUE,KAAK,CAAC,CAAE,KAAMC,cAAe,CAAA,CAAM,EAC3E,CAGD,MAAOC,AAFKjB,CAAAA,EAAMc,QAAQ,CAAGA,EAAW,EAAE,AAAD,EAE9BI,MAAM,CAACvB,EAAWK,EAAMY,OAAO,EAAI,EAAE,CAAEC,GACpD,GAEMM,EAAMlC,EAAW,KACrB,IAAMmC,EAA8B,EAAE,CAChCP,EAAYT,IAQlB,OANAQ,IAAUS,OAAO,CAAC,AAACC,IACX,kBAAmBA,GAAS,AAAiC,KAAA,IAA1BA,CAAI,CAACT,EAAUX,KAAK,CAAC,EAC5DkB,EAAOG,IAAI,CAACD,CAAI,CAACT,EAAUX,KAAK,CAAC,CAErC,GAEOkB,CACT,GAYMI,EAAavC,EAAW,KAC5B,IAAIwC,EAAU,CAAA,EACRC,EAAOP,IAEb,IAAK,IAAIQ,EAAI,EAAGC,EAAMF,EAAKG,MAAM,CAAEF,EAAIC,EAAKD,IAC1C,GAAI,CAACzB,IAAQ4B,QAAQ,CAACJ,CAAI,CAACC,EAAE,EAAG,CAC9BF,EAAU,CAAA,EACV,KACF,CAEF,OAAOA,CACT,GAEA,SAASM,EAAST,CAAoB,EACpC,GAAI,CAACtB,EAAMgC,QAAQ,EAAI,CAACV,EAAKU,QAAQ,CAAE,CACrC,IAAMC,EAAkB,kBAAmBX,EACvCY,EAASD,EAAkB,EAAE,CAAG,IAAI/B,IAAQ,CAC1CO,EAAMa,CAAI,CAAClB,IAAaF,KAAK,CAAC,CAEpC,GAAI+B,EACGT,KACHU,CAAAA,EAASf,GAAI,MAEV,CACL,IAAMgB,EAAMD,EAAOE,OAAO,CAAC3B,EAEvB0B,AAAQ,CAAA,KAARA,EACFD,EAAOG,MAAM,CAACF,EAAK,GAEnBD,EAAOX,IAAI,CAACd,EAEhB,CAC2B,KAAA,IAAhBT,EAAME,KAAK,EACpBC,EAAS+B,SAEXlC,EAAM+B,QAAQ,EAAd/B,EAAM+B,QAAQ,MAAd/B,EAAkB,AAAyB,KAAA,IAAlBA,EAAMY,OAAO,CAAmB,CAAC,CAACsB,CAAM,CAAC,EAAE,CAAGA,EACzE,CACF,CACA,SAASI,EAAQhB,CAAoB,CAAEiB,CAAgB,EACrDA,EAAEC,cAAc,GACF,UAAVD,EAAEE,GAAG,EACPV,EAAST,EAEb,CAEA,0DAEwBrB,gDACAH,UACnBT,qBAAWW,EAAMV,GAAG,8DACCA,EAAIU,EAAMV,GAAG,qCAGhCH,qBAAUyB,cACR,AAACU,IACA,IAAMoB,EAAW1C,EAAMgC,QAAQ,EAAIV,EAAKU,QAAQ,CAC1CnB,EAAYT,IACZuC,EAAUrB,CAAI,CAACT,EAAUX,KAAK,CAAC,CAOrC,MALI,kBAAmBoB,GACrBtC,EAAa,KArEvB,IAAI4D,CAsEQtB,CAAAA,EAAKuB,GAAG,CAAC7B,aAAa,EAtE9B4B,EAAiB,CAAA,EAErBzB,IAAME,OAAO,CAAC,AAACyB,IACT5C,IAAQ2B,MAAM,EAAI,CAAC3B,IAAQ4B,QAAQ,CAACgB,IACtCF,CAAAA,EAAiB,CAAA,CAAG,CAExB,GACOA,EAgEG,oCAWStB,EAAKuB,GAAG,oCAHNd,EAASgB,IAAI,CAAC,KAAMzB,mBADpBgB,EAAQS,IAAI,CAAC,KAAMzB,2BAFboB,kBACLA,EAAW,GAAK,gBAYdX,EAASgB,IAAI,CAAC,KAAMzB,gCAPzBA,EAAKuB,GAAG,WAINF,aACGD,UAIJpB,CAAI,CAACT,EAAUE,KAAK,CAAC,cAhBtBxB,EAAG,OAAQ+B,EAAK0B,KAAK,CAAE1B,EAAK2B,MAAM,IAUjCjD,EAAMkD,IAAI,8GAGP,kBAAmB5B,EAAOE,IAAetB,IAAQ4B,QAAQ,CAACa,SAM3E,eAjCYpD,EAAG,MAAOS,EAAMmD,MAAM,CAAEnD,EAAMgD,KAAK,UAsCzD,CAKAxD,EACE,aACA,CACEwD,MAAO,KAAK,EACZ1D,IAAK,KAAK,EACV4D,KAAM,KAAK,EACXlB,SAAU,KAAK,EACf9B,MAAO,KAAK,EACZM,aAAc,KAAK,EACnBI,QAAS,KAAK,EACdmB,SAAU,KAAK,EACf3B,WAAY,KAAK,EACjBU,SAAU,KAAK,EACfqC,OAAQ,KAAK,CACf,EACA,CAACC,EAAGC,KACF,IAAMC,EAAKD,EAAIE,OAAO,CAChBvD,EAAQZ,EACZ,CACE+D,OAAQG,EAAGH,MAAM,EAAI,aACrBpB,SAASyB,CAAmC,EAC1CF,EAAGG,aAAa,CACd,IAAIC,YAAY,SAAU,CACxBC,OAAQH,CACV,GAEJ,CACF,EACAJ,GAMF,OAHApE,EAAa,KACXS,EAAe6D,EAAI,CAAC,UAAW,aAAc,MAAM,CACrD,yCAGwBzD,UACnBE,EAAaC,GAGpB,EAEF,gBAAeD,CAAS"}
1
+ {"version":3,"sources":["components/checkbox/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, For, mergeProps, Show } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\nimport { clearAttribute, FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme, { inline } from '../theme';\n\nimport { style } from './style';\n\n/** 通用API\n * @since 1.0.0\n */\nexport interface CheckboxBaseProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** input[type=\"checkbox\"] 的 name 属性 */\n name?: string;\n /** 只读 */\n disabled?: boolean;\n /** 选项排列方式\n * @default 'horizontal'\n */\n layout?: 'vertical' | 'horizontal';\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n}\n/** 复选框API */\nexport interface CheckboxBoolProps extends CheckboxBaseProps {\n /** 一个 bool 值; */\n value?: boolean;\n /** 默认值 */\n defaultValue?: boolean;\n /** 值修改时的回调方法 */\n onChange?: (val: boolean) => void;\n checkAll?: never;\n options?: never;\n}\n/** 通过数据渲染一组复选框按钮的API */\nexport interface CheckboxGroupProps extends CheckboxBaseProps {\n /** 全选 */\n checkAll?: boolean;\n /** 值;\n * 当设置了value时, 将是受控模式;\n * 受控模式可通过 onChange 事件更新 value\n **/\n value?: (string | number)[];\n /** 默认值 */\n defaultValue?: (string | number)[];\n /** 渲染选项所使用的数据,\n * 当没有设置该值时, 将渲染一个切换 bool 值的按钮\n * */\n options?: (CheckboxOption | string)[];\n /** 值修改时的回调方法 */\n onChange?: (val: (string | number)[]) => void;\n}\n/** 复选框选项\n * @since 1.0.0\n */\nexport interface CheckboxOption extends BaseOption {\n /** 不确定状态 */\n indeterminate?: boolean;\n}\n\nfunction Checkbox(props: CheckboxBoolProps | CheckboxGroupProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const fieldNames = createMemo(() => Object.assign({}, FieldName, props.fieldNames));\n\n createEffect(() => {\n const _val = typeof props.value === 'undefined' ? props.defaultValue : props.value;\n let val: (string | number)[] = [];\n\n if (Array.isArray(_val)) {\n val = _val;\n } else if (typeof _val !== 'undefined') {\n val = [_val as unknown as string];\n }\n\n setValue(val);\n });\n const options = createMemo(() => {\n const fieldName = fieldNames();\n\n if (typeof props.options === 'undefined') {\n return getOptions([{ value: 1 } as CheckboxOption], fieldName);\n }\n const checkAll: CheckboxOption[] = [\n { [fieldName.value]: 'all', [fieldName.label]: '全选', indeterminate: false },\n ];\n const arr = props.checkAll ? checkAll : [];\n\n return arr.concat(getOptions(props.options || [], fieldName));\n });\n\n const all = createMemo(() => {\n const allVal: (string | number)[] = [];\n const fieldName = fieldNames();\n\n options().forEach((item) => {\n if (!('indeterminate' in item) && typeof item[fieldName.value] !== 'undefined') {\n allVal.push(item[fieldName.value]!);\n }\n });\n\n return allVal;\n });\n\n function getIndeterminate() {\n let _indeterminate = false;\n\n all().forEach((v) => {\n if (value().length && !value().includes(v)) {\n _indeterminate = true;\n }\n });\n return _indeterminate;\n }\n const checkedAll = createMemo(() => {\n let checked = true;\n const alls = all();\n\n for (let i = 0, len = alls.length; i < len; i++) {\n if (!value().includes(alls[i])) {\n checked = false;\n break;\n }\n }\n return checked;\n });\n\n function onChange(item: CheckboxOption) {\n if (!props.disabled && !item.disabled) {\n const isIndeterminate = 'indeterminate' in item;\n let newVal = isIndeterminate ? [] : [...value()];\n const val = item[fieldNames().value]!;\n\n if (isIndeterminate) {\n if (!checkedAll()) {\n newVal = all();\n }\n } else {\n const idx = newVal.indexOf(val);\n\n if (idx !== -1) {\n newVal.splice(idx, 1);\n } else {\n newVal.push(val);\n }\n }\n if (typeof props.value === 'undefined') {\n setValue(newVal);\n }\n props.onChange?.((typeof props.options === 'undefined' ? !!newVal[0] : newVal) as never);\n }\n }\n function onKeyUp(item: CheckboxOption, e: KeyboardEvent) {\n e.preventDefault();\n if (e.key === 'Enter') {\n onChange(item);\n }\n }\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <section class={cx('box', props.layout, props.class)}>\n <For each={options()}>\n {(item) => {\n const readOnly = props.disabled || item.disabled;\n const fieldName = fieldNames();\n const realVal = item[fieldName.value]!;\n\n if ('indeterminate' in item) {\n createEffect(() => {\n item.ref.indeterminate = getIndeterminate();\n });\n }\n return (\n <span\n class={cx('item', item.class, item.status)}\n aria-disabled={readOnly}\n tabindex={readOnly ? -1 : 0}\n onKeyUp={onKeyUp.bind(null, item)}\n onClick={onChange.bind(null, item)}\n >\n <input\n ref={item.ref}\n class=\"checkbox\"\n type=\"checkbox\"\n name={props.name}\n value={realVal as string}\n disabled={readOnly}\n checked={'indeterminate' in item ? checkedAll() : value().includes(realVal)}\n onChange={onChange.bind(null, item)}\n />\n <label>{item[fieldName.label]}</label>\n </span>\n );\n }}\n </For>\n </section>\n </>\n );\n}\n\nexport type CheckboxGroupElement = CustomElement<CheckboxGroupProps>;\nexport type CheckboxBoolElement = CustomElement<CheckboxBoolProps>;\n\ncustomElement<CheckboxBoolProps | CheckboxGroupProps>(\n 'n-checkbox',\n {\n class: void 0,\n css: void 0,\n name: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n options: void 0,\n onChange: void 0,\n fieldNames: void 0,\n checkAll: void 0,\n layout: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n layout: el.layout || 'horizontal',\n onChange(next: (string | number)[] | boolean) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: next,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['options', 'fieldNames', 'css']);\n });\n return (\n <>\n <style textContent={inline} />\n <Checkbox {...props} />\n </>\n );\n },\n);\nexport default Checkbox;\n"],"names":["createEffect","createMemo","createSignal","For","mergeProps","Show","css","cx","customElement","clearAttribute","FieldName","getOptions","theme","inline","style","Checkbox","props","baseStyle","value","setValue","fieldNames","Object","assign","_val","defaultValue","val","Array","isArray","options","fieldName","checkAll","label","indeterminate","arr","concat","all","allVal","forEach","item","push","checkedAll","checked","alls","i","len","length","includes","onChange","disabled","isIndeterminate","newVal","idx","indexOf","splice","onKeyUp","e","preventDefault","key","readOnly","realVal","_indeterminate","ref","v","bind","class","status","name","layout","_","opt","el","element","next","dispatchEvent","CustomEvent","detail"],"mappings":"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"}
@@ -128,5 +128,4 @@ import{css as r}from"@moneko/css";export const style=r`
128
128
  }
129
129
 
130
130
  ${["success","error","warning"].map(r=>`.${r} {--border-color: var(--${r}-border);--primary-hover: var(--${r}-hover);--primary-outline: var(--${r}-outline);--primary-color: var(--${r}-color);--primary-active: var(--${r}-active);--component-bg: var(--${r}-bg);}`).join("")}
131
- `;
132
- //# sourceMappingURL=style.js.map
131
+ `;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/checkbox/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n .box {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n }\n\n .horizontal {\n flex-direction: row;\n }\n\n .vertical {\n flex-direction: column;\n }\n\n .item {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n box-sizing: border-box;\n gap: 6px;\n outline: 0;\n\n label {\n color: var(--text-color);\n cursor: pointer;\n }\n\n .checkbox {\n position: relative;\n display: inline-block;\n margin: 0;\n border: 1px solid var(--border-color);\n border-radius: 4px;\n background-color: var(--component-bg);\n outline: 0 solid transparent;\n box-shadow: inset 0 0 0 var(--shadow-w, 0) var(--primary-color);\n transition:\n 0.3s border-color var(--transition-timing-function),\n 0.3s box-shadow var(--transition-timing-function),\n 0.3s outline var(--transition-timing-function);\n appearance: none;\n inline-size: 16px;\n block-size: 16px;\n pointer-events: none;\n user-select: none;\n\n &:active {\n --primary-color: var(--primary-active);\n --border-color: var(--primary-active);\n }\n\n &:disabled {\n --border-color: var(--disable-border);\n --primary-color: var(--disable-border);\n }\n\n &::before {\n position: absolute;\n display: block;\n margin: auto;\n border-style: solid;\n border-width: 0 0 2px 2px;\n border-color: transparent;\n transition-duration: 0.3s;\n transition-timing-function: var(--transition-timing-function);\n transition-property: background-color, transform, border-color, height;\n box-sizing: border-box;\n inset-block: 0;\n inset-inline: 0;\n content: '';\n inline-size: 10px;\n block-size: 10px;\n transform: scale(0);\n }\n\n &:checked {\n --shadow-w: 16px;\n --border-color: var(--primary-color);\n\n &::before {\n block-size: 5px;\n border-color: var(--primary-outline);\n transform: rotate(-55deg) translateY(-10%) translateX(5%) scale(1);\n }\n\n & + label {\n --text-color: var(--primary-color);\n }\n }\n\n &:indeterminate:not(:checked) {\n &::before {\n border-radius: 2px;\n background-color: var(--primary-color);\n transform: scale(1);\n }\n }\n\n &:not(:disabled, :checked):hover {\n --primary-color: var(--primary-hover);\n --border-color: var(--primary-hover);\n }\n }\n\n &:not([aria-disabled]:not([aria-disabled='false'])):focus .checkbox {\n outline: 3px solid var(--primary-outline);\n\n &:not(:checked) {\n border-color: var(--primary-hover);\n }\n }\n\n &[aria-disabled]:not([aria-disabled='false']) {\n cursor: not-allowed;\n\n & > label {\n --text-color: var(--disable-color);\n\n cursor: not-allowed;\n }\n }\n\n &:last-child {\n margin-inline-end: 16px;\n }\n }\n\n ${['success', 'error', 'warning']\n .map(\n (s) =>\n `.${s} {--border-color: var(--${s}-border);--primary-hover: var(--${s}-hover);--primary-outline: var(--${s}-outline);--primary-color: var(--${s}-color);--primary-active: var(--${s}-active);--component-bg: var(--${s}-bg);}`,\n )\n .join('')}\n`;\n"],"names":["css","style","map","s","join"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAO,MAAMC,MAAQD,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiIvB,EAAE,CAAC,UAAW,QAAS,UAAU,CAC9BE,GAAG,CACF,AAACC,GACC,CAAC,CAAC,EAAEA,EAAE,wBAAwB,EAAEA,EAAE,gCAAgC,EAAEA,EAAE,iCAAiC,EAAEA,EAAE,iCAAiC,EAAEA,EAAE,gCAAgC,EAAEA,EAAE,+BAA+B,EAAEA,EAAE,MAAM,CAAC,EAEjOC,IAAI,CAAC,IAAI;AACd,CAAC,AAAC"}
1
+ {"version":3,"sources":["components/checkbox/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n .box {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n }\n\n .horizontal {\n flex-direction: row;\n }\n\n .vertical {\n flex-direction: column;\n }\n\n .item {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n box-sizing: border-box;\n gap: 6px;\n outline: 0;\n\n label {\n color: var(--text-color);\n cursor: pointer;\n }\n\n .checkbox {\n position: relative;\n display: inline-block;\n margin: 0;\n border: 1px solid var(--border-color);\n border-radius: 4px;\n background-color: var(--component-bg);\n outline: 0 solid transparent;\n box-shadow: inset 0 0 0 var(--shadow-w, 0) var(--primary-color);\n transition:\n 0.3s border-color var(--transition-timing-function),\n 0.3s box-shadow var(--transition-timing-function),\n 0.3s outline var(--transition-timing-function);\n appearance: none;\n inline-size: 16px;\n block-size: 16px;\n pointer-events: none;\n user-select: none;\n\n &:active {\n --primary-color: var(--primary-active);\n --border-color: var(--primary-active);\n }\n\n &:disabled {\n --border-color: var(--disable-border);\n --primary-color: var(--disable-border);\n }\n\n &::before {\n position: absolute;\n display: block;\n margin: auto;\n border-style: solid;\n border-width: 0 0 2px 2px;\n border-color: transparent;\n transition-duration: 0.3s;\n transition-timing-function: var(--transition-timing-function);\n transition-property: background-color, transform, border-color, height;\n box-sizing: border-box;\n inset-block: 0;\n inset-inline: 0;\n content: '';\n inline-size: 10px;\n block-size: 10px;\n transform: scale(0);\n }\n\n &:checked {\n --shadow-w: 16px;\n --border-color: var(--primary-color);\n\n &::before {\n block-size: 5px;\n border-color: var(--primary-outline);\n transform: rotate(-55deg) translateY(-10%) translateX(5%) scale(1);\n }\n\n & + label {\n --text-color: var(--primary-color);\n }\n }\n\n &:indeterminate:not(:checked) {\n &::before {\n border-radius: 2px;\n background-color: var(--primary-color);\n transform: scale(1);\n }\n }\n\n &:not(:disabled, :checked):hover {\n --primary-color: var(--primary-hover);\n --border-color: var(--primary-hover);\n }\n }\n\n &:not([aria-disabled]:not([aria-disabled='false'])):focus .checkbox {\n outline: 3px solid var(--primary-outline);\n\n &:not(:checked) {\n border-color: var(--primary-hover);\n }\n }\n\n &[aria-disabled]:not([aria-disabled='false']) {\n cursor: not-allowed;\n\n & > label {\n --text-color: var(--disable-color);\n\n cursor: not-allowed;\n }\n }\n\n &:last-child {\n margin-inline-end: 16px;\n }\n }\n\n ${['success', 'error', 'warning']\n .map(\n (s) =>\n `.${s} {--border-color: var(--${s}-border);--primary-hover: var(--${s}-hover);--primary-outline: var(--${s}-outline);--primary-color: var(--${s}-color);--primary-active: var(--${s}-active);--component-bg: var(--${s}-bg);}`,\n )\n .join('')}\n`;\n"],"names":["css","style","map","s","join"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAO,MAAMC,MAAQD,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiIvB,EAAE,CAAC,UAAW,QAAS,UAAU,CAC9BE,GAAG,CACF,AAACC,GACC,CAAC,CAAC,EAAEA,EAAE,wBAAwB,EAAEA,EAAE,gCAAgC,EAAEA,EAAE,iCAAiC,EAAEA,EAAE,iCAAiC,EAAEA,EAAE,gCAAgC,EAAEA,EAAE,+BAA+B,EAAEA,EAAE,MAAM,CAAC,EAEjOC,IAAI,CAAC,IAAI;AACd,CAAC,AAAC"}
@@ -1,6 +1,10 @@
1
1
  import { type JSX } from 'solid-js';
2
2
  import type { CustomElement } from '..';
3
- export type Language = 'bash' | 'shell' | 'sh' | 'clike' | 'css' | 'docker' | 'dockerfile' | 'git' | 'diff' | 'javascript' | 'js' | 'json' | 'webmanifest' | 'jsx' | 'tsx' | 'less' | 'html' | 'mathml' | 'svg' | 'xml' | 'ssml' | 'atom' | 'rss' | 'regex' | 'rust' | 'sql' | 'swift' | 'toml' | 'typescript' | 'ts' | 'yaml' | 'yml' | 'matlab';
3
+ export type LanguageBase = 'bash' | 'shell' | 'sh' | 'clike' | 'css' | 'docker' | 'dockerfile' | 'git' | 'javascript' | 'js' | 'json' | 'webmanifest' | 'jsx' | 'tsx' | 'less' | 'html' | 'mathml' | 'svg' | 'xml' | 'ssml' | 'atom' | 'rss' | 'regex' | 'rust' | 'sql' | 'swift' | 'toml' | 'typescript' | 'ts' | 'yaml' | 'yml' | 'matlab';
4
+ type ExcludeLanguage<T extends LanguageBase, U extends LanguageBase> = T extends U ? never : T;
5
+ export type Language = LanguageBase | {
6
+ [T in LanguageBase]: `${T} ${ExcludeLanguage<LanguageBase, T>}`;
7
+ }[LanguageBase];
4
8
  export interface CodeProps {
5
9
  /** 自定义类名 */
6
10
  class?: string;
@@ -8,7 +12,7 @@ export interface CodeProps {
8
12
  css?: string;
9
13
  /** 内容 */
10
14
  code?: string;
11
- /** 语言
15
+ /** 语言(支持多种语言配置:如 `html css javascript`)
12
16
  * @default 'markup'
13
17
  */
14
18
  language?: Language;
package/es/code/index.js CHANGED
@@ -1,2 +1 @@
1
- function t(t,e,i,o,r,n,l){try{var s=t[n](l),a=s.value}catch(t){i(t);return}s.done?e(a):Promise.resolve(a).then(o,r)}import{use as e}from"solid-js/web";import{template as i}from"solid-js/web";import{setAttribute as o}from"solid-js/web";import{insert as r}from"solid-js/web";import{effect as n}from"solid-js/web";import{delegateEvents as l}from"solid-js/web";import{createComponent as s}from"solid-js/web";import{classList as a}from"solid-js/web";import{addEventListener as d}from"solid-js/web";let c=i("<style> "),h=i("<style>"),f=i('<div class="toolbar"><button class="toolbar-copy" aria-label="copy">'),u=i("<pre><code>");import{createEffect as g,createResource as m,createSignal as p,createUniqueId as v,mergeProps as C,onCleanup as b,Show as w,untrack as y}from"solid-js";import S from"@moneko/common/lib/isFunction";import j from"@moneko/common/lib/setClipboard";import{css as k}from"@moneko/css";import{customElement as $}from"solid-element";import{clearAttribute as E}from"../basic-config";import x from"../theme";import{darkCss as A,lightCss as _,style as P}from"./style";function z(i){let l,C;let{isDark:$}=x,E=/^diff-([\w-]+)/i,z=/%[0-9A-Fa-f]{2}/,T=v(),[W,F]=p(""),[H,L]=p();function R(){var e;return e=function*(){return window.Prism?window.Prism:(yield import("../prism")).default},(R=function(){var i=this,o=arguments;return new Promise(function(r,n){var l=e.apply(i,o);function s(e){t(l,r,n,s,a,"next",e)}function a(e){t(l,r,n,s,a,"throw",e)}s(void 0)})}).apply(this,arguments)}let[I]=m("prism",function(){return R.apply(this,arguments)});function U(){j(y(W),l)}g(()=>{let t=i.code||"";z.test(t)&&(t=decodeURIComponent(t)),l.normalize(),t!==l.textContent&&F(t)});let q=function(t){t.target.normalize();let e=t.target.textContent;B(i.language,e),S(i.onChange)&&i.onChange(e)};function B(t="markup",e){C&&(clearTimeout(C),C=void 0);let i=I();e&&i&&(C=setTimeout(()=>{if(clearTimeout(C),CSS.highlights){CSS.highlights.forEach((t,e)=>{e.startsWith(T)&&t.clear()});let o=i.languages[E.test(t)?"diff":t]||i.languages.markup;!function t(e,i,o=0){let r=o;if(Array.isArray(i)){for(let o=0,n=i.length;o<n;o++){let n=i[o];if("object"!=typeof n){r+=n.length;continue}r=t(e,n,r)}return r}if("object"==typeof i&&i.type&&e.firstChild){var n;let o=T+(null!=(n=i.alias)?n:i.type),l=new Range;l.setStart(e.firstChild,r),Array.isArray(i.content)?r=t(e,i.content,r):"string"==typeof i.content&&(r+=i.content.length),l.setEnd(e.firstChild,r);let s=CSS.highlights.get(o);s?s.add(l):CSS.highlights.set(o,new Highlight().add(l))}return r}(l,i.tokenize(e,o)),L(()=>{let t=T.length,e="";for(let i of CSS.highlights.keys())i.startsWith(T)&&(e+=`::highlight(${i}){color:var(--${i.substring(t)});}`);return e})}else throw Error("不支持 CSS Highlights");C=void 0},0))}return g(()=>{B(i.language,W())}),b(()=>{if(CSS.highlights)for(let t of CSS.highlights.keys())t.startsWith(T)&&CSS.highlights.delete(t)}),[(()=>{let t=c(),e=t.firstChild;return n(()=>e.data=$()?A:_),t})(),(()=>{let t=c(),e=t.firstChild;return n(()=>e.data=H()),t})(),(()=>{let t=h();return t.textContent=P,t})(),s(w,{get when(){return i.css},get children(){let t=c(),e=t.firstChild;return n(()=>e.data=k(i.css)),t}}),(()=>{let t=u(),c=t.firstChild,h=l;return r(t,s(w,{get when(){return i.toolbar},get children(){let t=f();return d(t.firstChild,"click",U,!0),n(()=>{var e;return o(t,"data-language",null==(e=i.language)?void 0:e.split(" ")[0])}),t}}),c),d(c,"input",q,!0),"function"==typeof h?e(h,c):l=c,o(c,"spellcheck",!1),r(c,W),n(e=>{let r={[`language-${i.language}`]:!!i.language,"not-toolbar":!i.toolbar,[i.class]:!i.edit},n=i.edit;return e._v$=a(t,r,e._v$),n!==e._v$2&&o(c,"contenteditable",e._v$2=n),e},{_v$:void 0,_v$2:void 0}),t})()]}$("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,onChange:void 0},(t,e)=>{let{baseStyle:i}=x,o=e.element,r=C({code:o.textContent,css:o.css,onChange(t){o.dispatchEvent(new CustomEvent("change",{detail:t}))}},t);return g(()=>{E(o,["css","code"]),o.replaceChildren()}),[(()=>{let t=c(),e=t.firstChild;return n(()=>e.data=i()),t})(),s(z,r)]});export default z;l(["click","input"]);
2
- //# sourceMappingURL=index.js.map
1
+ function t(t,e,o,i,r,n,l){try{var s=t[n](l),a=s.value}catch(t){o(t);return}s.done?e(a):Promise.resolve(a).then(i,r)}import{use as e}from"solid-js/web";import{template as o}from"solid-js/web";import{setAttribute as i}from"solid-js/web";import{mergeProps as r}from"solid-js/web";import{insert as n}from"solid-js/web";import{effect as l}from"solid-js/web";import{delegateEvents as s}from"solid-js/web";import{createComponent as a}from"solid-js/web";import{classList as d}from"solid-js/web";import{addEventListener as c}from"solid-js/web";let h=o("<style> "),m=o("<style>"),g=o('<div class="toolbar"><button class="toolbar-copy" aria-label="copy">'),u=o("<pre><code>");import{createEffect as f,createMemo as p,createResource as v,createSignal as b,createUniqueId as w,mergeProps as C,onCleanup as y,Show as S,untrack as k}from"solid-js";import j from"@moneko/common/lib/isFunction";import $ from"@moneko/common/lib/setClipboard";import{css as x}from"@moneko/css";import{customElement as E}from"solid-element";import{clearAttribute as P}from"../basic-config";import A from"../theme";import{darkCss as _,lightCss as z,style as H}from"./style";function T(o){let r,s;let{isDark:C}=A,E=/%[0-9A-Fa-f]{2}/,P=w(),[T,W]=b(""),[F,L]=b();function R(){var e;return e=function*(){return window.Prism?(window.Prism.disableWorkerMessageHandler=!0,window.Prism.manual=!0,window.Prism):(yield import("../prism")).default},(R=function(){var o=this,i=arguments;return new Promise(function(r,n){var l=e.apply(o,i);function s(e){t(l,r,n,s,a,"next",e)}function a(e){t(l,r,n,s,a,"throw",e)}s(void 0)})}).apply(this,arguments)}let[I]=v("prism",function(){return R.apply(this,arguments)}),M=p(()=>{var t;return null==(t=o.language)?void 0:t.split(" ").pop()});function O(){$(k(T),r)}f(()=>{let t=o.code||"";E.test(t)&&(t=decodeURIComponent(t)),r.normalize(),t!==r.textContent&&W(t)});let U=function(t){t.target.normalize();let e=t.target.textContent;q(o.language,e,!0),j(o.onChange)&&o.onChange(e)};function q(t="markup",e,o,i={}){s&&(clearTimeout(s),s=void 0);let n=I();e&&n&&(s=setTimeout(()=>{if(clearTimeout(s),CSS.highlights){o&&CSS.highlights.forEach((t,e)=>{e.startsWith(P)&&t.clear()});let l=t.split(" "),s=n.languages[l[0]];s&&function t(e,o,i,r=0){let n=r;if(Array.isArray(o)){for(let r=0,l=o.length;r<l;r++){let l=o[r];if("object"!=typeof l){n+=l.length;continue}n=t(e,l,i,n)}return n}if("object"==typeof o&&o.type&&e.firstChild){var l;let r=(null!=(l=o.alias)?l:o.type).toString(),s=P+r,a=new Range;["deleted","inserted"].includes(r)?a.setStart(e.firstChild,n+2):a.setStart(e.firstChild,n),Array.isArray(o.content)?n=t(e,o.content,i,n):"string"==typeof o.content&&(n+=o.content.length),a.setEnd(e.firstChild,n),function(t,e,o,i){let r=CSS.highlights.get(t);r?r.add(o):CSS.highlights.set(t,new Highlight().add(o)),void 0===i[t]&&(i[t]=`::highlight(${t}){color:var(--${e});background-color:var(--${e}-bg);text-decoration:var(--${e}-text-decoration);text-shadow:var(--${e}-text-shadow);-webkit-text-stroke-width:var(--${e}-stroke-width);-webkit-text-stroke-color:var(--${e}-stroke-color);}`)}(s,r,a,i)}return n}(r,n.tokenize(e,s),i),l.length>1||"git"===l[0]?q(l[1],e,!1,i):L(Object.values(i).join(""))}else throw Error("不支持 CSS Highlights");s=void 0},0))}return f(()=>{q(o.language,T(),!0)}),y(()=>{if(CSS.highlights)for(let t of CSS.highlights.keys())t.startsWith(P)&&CSS.highlights.delete(t)}),[(()=>{let t=h(),e=t.firstChild;return l(()=>e.data=C()?_:z),t})(),(()=>{let t=h(),e=t.firstChild;return l(()=>e.data=F()),t})(),(()=>{let t=m();return t.textContent=H,t})(),a(S,{get when(){return o.css},get children(){let t=h(),e=t.firstChild;return l(()=>e.data=x(o.css)),t}}),(()=>{let t=u(),s=t.firstChild,h=r;return n(t,a(S,{get when(){return o.toolbar},get children(){let t=g();return c(t.firstChild,"click",O,!0),l(()=>i(t,"data-language",M())),t}}),s),c(s,"input",U,!0),"function"==typeof h?e(h,s):r=s,i(s,"spellcheck",!1),n(s,T),l(e=>{let r={[`language-${o.language}`]:!!o.language,"not-toolbar":!o.toolbar,[o.class]:!o.edit},n=o.edit;return e._v$=d(t,r,e._v$),n!==e._v$2&&i(s,"contenteditable",e._v$2=n),e},{_v$:void 0,_v$2:void 0}),t})()]}E("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,onChange:void 0},(t,e)=>{let{baseStyle:o}=A,i=e.element,n=C({code:i.textContent,css:i.css,onChange(t){i.dispatchEvent(new CustomEvent("change",{detail:t}))}},t);return f(()=>{P(i,["css","code"]),i.replaceChildren()}),[(()=>{let t=h(),e=t.firstChild;return l(()=>e.data=o()),t})(),a(T,r({language:"atom"},n))]});export default T;s(["click","input"]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/code/index.tsx"],"sourcesContent":["import {\n createEffect,\n createResource,\n createSignal,\n createUniqueId,\n type JSX,\n mergeProps,\n onCleanup,\n Show,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css } from '@moneko/css';\nimport type { TokenStream } from 'prismjs';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute } from '../basic-config';\nimport theme from '../theme';\n\nimport { darkCss, lightCss, style } from './style';\n\nexport type Language =\n | 'bash'\n | 'shell'\n | 'sh'\n | 'clike'\n | 'css'\n | 'docker'\n | 'dockerfile'\n | 'git'\n | 'diff'\n | 'javascript'\n | 'js'\n | 'json'\n | 'webmanifest'\n | 'jsx'\n | 'tsx'\n | 'less'\n | 'html'\n | 'mathml'\n | 'svg'\n | 'xml'\n | 'ssml'\n | 'atom'\n | 'rss'\n | 'regex'\n | 'rust'\n | 'sql'\n | 'swift'\n | 'toml'\n | 'typescript'\n | 'ts'\n | 'yaml'\n | 'yml'\n | 'matlab';\n\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言\n * @default 'markup'\n */\n language?: Language;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 编辑修改时的回调 */\n onChange?(code: string): void;\n children?: JSX.Element;\n}\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { isDark } = theme;\n let codeEl: HTMLPreElement;\n let timer: NodeJS.Timeout | undefined;\n const diffLang = /^diff-([\\w-]+)/i;\n const decoded = /%[0-9A-Fa-f]{2}/;\n const id = createUniqueId();\n const [code, setCode] = createSignal<string>('');\n const [highlightCss, setHighlightCss] = createSignal<string>();\n\n async function fetchPrism() {\n if (!window.Prism) {\n return (await import('../prism')).default;\n }\n return window.Prism;\n }\n const [prismJS] = createResource('prism', fetchPrism);\n\n createEffect(() => {\n let _next = props.code || '';\n\n if (decoded.test(_next)) {\n _next = decodeURIComponent(_next);\n }\n codeEl.normalize();\n if (_next !== codeEl.textContent) {\n setCode(_next);\n }\n });\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n const change: JSX.InputEventHandlerUnion<HTMLElement, InputEvent> = function (e) {\n e.target.normalize();\n const next = e.target.textContent;\n\n syntax(props.language, next);\n if (isFunction(props.onChange)) {\n props.onChange(next);\n }\n };\n\n function highlighter(el: HTMLPreElement, tokenize: TokenStream, start = 0) {\n let pos = start;\n\n if (Array.isArray(tokenize)) {\n for (let i = 0, len = tokenize.length; i < len; i++) {\n const token = tokenize[i];\n\n if (typeof token !== 'object') {\n pos += token.length;\n continue;\n }\n pos = highlighter(el, token, pos);\n }\n return pos;\n }\n if (typeof tokenize === 'object' && tokenize.type) {\n if (el.firstChild) {\n const key = id + (tokenize.alias ?? tokenize.type);\n const range = new Range();\n\n range.setStart(el.firstChild, pos);\n if (Array.isArray(tokenize.content)) {\n pos = highlighter(el, tokenize.content, pos);\n } else if (typeof tokenize.content === 'string') {\n pos += tokenize.content.length;\n }\n range.setEnd(el.firstChild, pos);\n const highlight = CSS.highlights.get(key);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(key, new Highlight().add(range));\n }\n }\n }\n\n return pos;\n }\n function syntax(language = 'markup', value: string | null) {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n const Prism = prismJS();\n\n if (!value || !Prism) return;\n timer = setTimeout(() => {\n clearTimeout(timer);\n\n if (CSS.highlights) {\n CSS.highlights.forEach((highlight, key) => {\n if (key.startsWith(id)) {\n highlight.clear();\n }\n });\n const grammar =\n Prism.languages[diffLang.test(language) ? 'diff' : language] || Prism.languages.markup;\n\n highlighter(codeEl, Prism.tokenize(value, grammar));\n setHighlightCss(() => {\n const len = id.length;\n let style = '';\n\n for (const key of CSS.highlights.keys()) {\n if (key.startsWith(id)) {\n style += `::highlight(${key}){color:var(--${key.substring(len)});}`;\n }\n }\n return style;\n });\n } else {\n throw Error('不支持 CSS Highlights');\n }\n timer = void 0;\n }, 0);\n }\n createEffect(() => {\n syntax(props.language, code());\n });\n onCleanup(() => {\n if (CSS.highlights) {\n for (const key of CSS.highlights.keys()) {\n if (key.startsWith(id)) {\n CSS.highlights.delete(key);\n }\n }\n }\n });\n\n return (\n <>\n <style textContent={isDark() ? darkCss : lightCss} />\n <style textContent={highlightCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'not-toolbar': !props.toolbar,\n [props.class!]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={props.language?.split(' ')[0]}>\n <button class=\"toolbar-copy\" aria-label=\"copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl!} contenteditable={props.edit} spellcheck={false} onInput={change}>\n {code()}\n </code>\n </pre>\n </>\n );\n}\n\ncustomElement<CodeProps>(\n 'n-code',\n {\n class: void 0,\n code: void 0,\n language: void 0,\n children: void 0,\n edit: void 0,\n toolbar: void 0,\n css: void 0,\n onChange: void 0,\n },\n (_, opt) => {\n const { baseStyle } = theme;\n const el = opt.element;\n const props = mergeProps(\n {\n code: el.textContent,\n css: el.css,\n onChange(val: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['css', 'code']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={baseStyle()} />\n <Code {...props} />\n </>\n );\n },\n);\nexport default Code;\n"],"names":["createEffect","createResource","createSignal","createUniqueId","mergeProps","onCleanup","Show","untrack","isFunction","setClipboard","css","customElement","clearAttribute","theme","darkCss","lightCss","style","Code","props","codeEl","timer","isDark","diffLang","decoded","id","code","setCode","highlightCss","setHighlightCss","fetchPrism","window","Prism","default","prismJS","copy","_next","test","decodeURIComponent","normalize","textContent","change","e","target","next","syntax","language","onChange","value","clearTimeout","setTimeout","CSS","highlights","forEach","highlight","key","startsWith","clear","grammar","languages","markup","highlighter","el","tokenize","start","pos","Array","isArray","i","len","length","token","type","firstChild","alias","range","Range","setStart","content","setEnd","get","add","set","Highlight","keys","substring","Error","delete","toolbar","split","class","edit","children","_","opt","baseStyle","element","val","dispatchEvent","CustomEvent","detail","replaceChildren"],"mappings":"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"}
1
+ {"version":3,"sources":["components/code/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createResource,\n createSignal,\n createUniqueId,\n type JSX,\n mergeProps,\n onCleanup,\n Show,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css } from '@moneko/css';\nimport type { TokenStream } from 'prismjs';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport { clearAttribute } from '../basic-config';\nimport theme from '../theme';\n\nimport { darkCss, lightCss, style } from './style';\n\nexport type LanguageBase =\n | 'bash'\n | 'shell'\n | 'sh'\n | 'clike'\n | 'css'\n | 'docker'\n | 'dockerfile'\n | 'git'\n | 'javascript'\n | 'js'\n | 'json'\n | 'webmanifest'\n | 'jsx'\n | 'tsx'\n | 'less'\n | 'html'\n | 'mathml'\n | 'svg'\n | 'xml'\n | 'ssml'\n | 'atom'\n | 'rss'\n | 'regex'\n | 'rust'\n | 'sql'\n | 'swift'\n | 'toml'\n | 'typescript'\n | 'ts'\n | 'yaml'\n | 'yml'\n | 'matlab';\n\ntype ExcludeLanguage<T extends LanguageBase, U extends LanguageBase> = T extends U ? never : T;\n\nexport type Language =\n | LanguageBase\n | {\n [T in LanguageBase]: `${T} ${ExcludeLanguage<LanguageBase, T>}`;\n }[LanguageBase];\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言(支持多种语言配置:如 `html css javascript`)\n * @default 'markup'\n */\n language?: Language;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 编辑修改时的回调 */\n onChange?(code: string): void;\n children?: JSX.Element;\n}\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { isDark } = theme;\n let codeEl: HTMLPreElement;\n let timer: NodeJS.Timeout | undefined;\n const decoded = /%[0-9A-Fa-f]{2}/;\n const id = createUniqueId();\n const [code, setCode] = createSignal<string>('');\n const [highlightCss, setHighlightCss] = createSignal<string>();\n\n async function fetchPrism() {\n if (!window.Prism) {\n return (await import('../prism')).default;\n }\n window.Prism.disableWorkerMessageHandler = true;\n window.Prism.manual = true;\n return window.Prism;\n }\n const [prismJS] = createResource('prism', fetchPrism);\n const title = createMemo(() => props.language?.split(' ').pop());\n\n createEffect(() => {\n let _next = props.code || '';\n\n if (decoded.test(_next)) {\n _next = decodeURIComponent(_next);\n }\n codeEl.normalize();\n if (_next !== codeEl.textContent) {\n setCode(_next);\n }\n });\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n const change: JSX.InputEventHandlerUnion<HTMLElement, InputEvent> = function (e) {\n e.target.normalize();\n const next = e.target.textContent;\n\n syntax(props.language, next, true);\n if (isFunction(props.onChange)) {\n props.onChange(next);\n }\n };\n\n function updateRang(\n key: string,\n token: string,\n range: AbstractRange,\n selection: Record<string, string>,\n ) {\n const highlight = CSS.highlights.get(key);\n\n if (highlight) {\n highlight.add(range);\n } else {\n CSS.highlights.set(key, new Highlight().add(range));\n }\n if (selection[key] === void 0) {\n selection[key] =\n `::highlight(${key}){color:var(--${token});background-color:var(--${token}-bg);text-decoration:var(--${token}-text-decoration);text-shadow:var(--${token}-text-shadow);-webkit-text-stroke-width:var(--${token}-stroke-width);-webkit-text-stroke-color:var(--${token}-stroke-color);}`;\n }\n }\n function highlighter(\n el: HTMLPreElement,\n tokenize: TokenStream,\n selection: Record<string, string>,\n start = 0,\n ) {\n let pos = start;\n\n if (Array.isArray(tokenize)) {\n for (let i = 0, len = tokenize.length; i < len; i++) {\n const token = tokenize[i];\n\n if (typeof token !== 'object') {\n pos += token.length;\n continue;\n }\n pos = highlighter(el, token, selection, pos);\n }\n return pos;\n }\n if (typeof tokenize === 'object' && tokenize.type) {\n if (el.firstChild) {\n const token = (tokenize.alias ?? tokenize.type).toString();\n const key = id + token;\n const range = new Range();\n\n if (['deleted', 'inserted'].includes(token)) {\n // diff\n range.setStart(el.firstChild, pos + 2);\n } else {\n range.setStart(el.firstChild, pos);\n }\n if (Array.isArray(tokenize.content)) {\n pos = highlighter(el, tokenize.content, selection, pos);\n } else if (typeof tokenize.content === 'string') {\n pos += tokenize.content.length;\n }\n range.setEnd(el.firstChild, pos);\n updateRang(key, token, range, selection);\n }\n }\n\n return pos;\n }\n function syntax(\n language: Language = 'markup' as Language,\n value: string | null,\n clear?: boolean,\n prevCss = {},\n ) {\n if (timer) {\n clearTimeout(timer);\n timer = void 0;\n }\n const Prism = prismJS();\n\n if (!value || !Prism) return;\n timer = setTimeout(() => {\n clearTimeout(timer);\n if (CSS.highlights) {\n if (clear) {\n CSS.highlights.forEach((highlight, key) => {\n if (key.startsWith(id)) {\n highlight.clear();\n }\n });\n }\n const grammars = language.split(' ') as Language[],\n grammar = Prism.languages[grammars[0]];\n\n if (grammar) {\n highlighter(codeEl, Prism.tokenize(value, grammar), prevCss);\n }\n if (grammars.length > 1 || grammars[0] === 'git') {\n syntax(grammars[1], value, false, prevCss);\n } else {\n setHighlightCss(Object.values(prevCss).join(''));\n }\n } else {\n throw Error('不支持 CSS Highlights');\n }\n timer = void 0;\n }, 0);\n }\n createEffect(() => {\n syntax(props.language, code(), true);\n });\n onCleanup(() => {\n if (CSS.highlights) {\n for (const key of CSS.highlights.keys()) {\n if (key.startsWith(id)) {\n CSS.highlights.delete(key);\n }\n }\n }\n });\n\n return (\n <>\n <style textContent={isDark() ? darkCss : lightCss} />\n <style textContent={highlightCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'not-toolbar': !props.toolbar,\n [props.class!]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={title()}>\n <button class=\"toolbar-copy\" aria-label=\"copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl!} contenteditable={props.edit} spellcheck={false} onInput={change}>\n {code()}\n </code>\n </pre>\n </>\n );\n}\n\ncustomElement<CodeProps>(\n 'n-code',\n {\n class: void 0,\n code: void 0,\n language: void 0,\n children: void 0,\n edit: void 0,\n toolbar: void 0,\n css: void 0,\n onChange: void 0,\n },\n (_, opt) => {\n const { baseStyle } = theme;\n const el = opt.element;\n const props = mergeProps(\n {\n code: el.textContent,\n css: el.css,\n onChange(val: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n clearAttribute(el, ['css', 'code']);\n el.replaceChildren();\n });\n return (\n <>\n <style textContent={baseStyle()} />\n <Code language={'atom'} {...props} />\n </>\n );\n },\n);\nexport default Code;\n"],"names":["createEffect","createMemo","createResource","createSignal","createUniqueId","mergeProps","onCleanup","Show","untrack","isFunction","setClipboard","css","customElement","clearAttribute","theme","darkCss","lightCss","style","Code","props","codeEl","timer","isDark","decoded","id","code","setCode","highlightCss","setHighlightCss","fetchPrism","window","Prism","disableWorkerMessageHandler","manual","default","prismJS","title","language","split","pop","copy","_next","test","decodeURIComponent","normalize","textContent","change","e","target","next","syntax","onChange","value","clear","prevCss","clearTimeout","setTimeout","CSS","highlights","forEach","highlight","key","startsWith","grammars","grammar","languages","highlighter","el","tokenize","selection","start","pos","Array","isArray","i","len","length","token","type","firstChild","alias","toString","range","Range","includes","setStart","content","setEnd","updateRang","get","add","set","Highlight","Object","values","join","Error","keys","delete","toolbar","class","edit","children","_","opt","baseStyle","element","val","dispatchEvent","CustomEvent","detail","replaceChildren"],"mappings":"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"}
package/es/code/style.js CHANGED
@@ -58,30 +58,6 @@ import{css as o}from"@moneko/css";export const style=o`
58
58
  animation: copy-slide-out var(--transition-duration) forwards var(--transition-timing-function);
59
59
  }
60
60
 
61
- @keyframes copy-slide-in {
62
- from {
63
- opacity: 0;
64
- transform: translate3d(0, -100%, 0) scale(0);
65
- }
66
-
67
- to {
68
- opacity: 1;
69
- transform: translate3d(0, 0, 0) scale(1);
70
- }
71
- }
72
-
73
- @keyframes copy-slide-out {
74
- from {
75
- opacity: 1;
76
- transform: translate3d(0, 0, 0) scale(1);
77
- }
78
-
79
- to {
80
- opacity: 0;
81
- transform: translate3d(0, -100%, 0) scale(0);
82
- }
83
- }
84
-
85
61
  pre,
86
62
  code {
87
63
  display: block;
@@ -203,5 +179,28 @@ import{css as o}from"@moneko/css";export const style=o`
203
179
  block-size: 5px;
204
180
  inline-size: 5px;
205
181
  }
206
- `;export const darkCss=o({":host":{"--code-color":"#eee","--code-lang-style-color":"#fd9170","--code-toolbar-bg":"rgb(63, 63, 63, 0.7)","--atrule":"#c792ea","--attr-name":"#9cdcfe","--attr-value":"#ce9178","--attr-equals":"#ccc","--attribute":"#a5e844","--boolean":"#c792ea","--builtin":"#ffcb6b","--cdata":"#80cbc4","--char":"#80cbc4","--class":"#ffcb6b","--class-name":"#f2ff00","--comment":"#616161","--constant":"#c792ea","--deleted":"#f66","--doctype":"#616161","--entity":"#f66","--function":"#dcdcaa","--hexcode":"#f2ff00","--id":"#c792ea","--important":"#c792ea","--inserted":"#80cbc4","--keyword":"#c792ea","--number":"#fd9170","--operator":"#89ddff","--prolog":"#616161","--property":"#80cbc4","--pseudo-class":"#a5e844","--pseudo-element":"#a5e844","--punctuation":"#89ddff","--regex":"#f2ff00","--selector":"#f66","--string":"#a5e844","--symbol":"#c792ea","--tag":"#569cd6","--unit":"#fd9170","--url":"#f66","--variable":"#f66"}});export const lightCss=o({":host":{"--code-color":"#90a4ae","--code-lang-style-color":"#f76d47","--namespace":"rgba(56, 64, 68, 0.7)","--tag":"#e53935","--atrule":"#7c4dff","--attr-name":"#39adb5","--attr-value":"#f6a434","--attr-equals":"#90a4ae","--attribute":"#f6a434","--boolean":"#7c4dff","--builtin":"#39adb5","--cdata":"#39adb5","--char":"#39adb5","--class":"#39adb5","--class-name":"#6182b8","--comment":"#aabfc9","--constant":"#7c4dff","--doctype":"#aabfc9","--entity":"#e53935","--hexcode":"#f76d47","--id":"#7c4dff","--important":"#7c4dff","--keyword":"#7c4dff","--number":"#f76d47","--operator":"#39adb5","--prolog":"#aabfc9","--property":"#39adb5","--pseudo-class":"#f6a434","--pseudo-element":"#f6a434","--punctuation":"#39adb5","--regex":"#6182b8","--selector":"#e53935","--string":"#f6a434","--symbol":"#7c4dff","--unit":"#f76d47","--url":"#e53935","--variable":"#e53935","--function":"#4078f2","--inserted":"#39adb5","--deleted":"#e53935","--name":"#39adb5"}});
207
- //# sourceMappingURL=style.js.map
182
+
183
+ @keyframes copy-slide-in {
184
+ from {
185
+ opacity: 0;
186
+ transform: translate3d(0, -100%, 0) scale(0);
187
+ }
188
+
189
+ to {
190
+ opacity: 1;
191
+ transform: translate3d(0, 0, 0) scale(1);
192
+ }
193
+ }
194
+
195
+ @keyframes copy-slide-out {
196
+ from {
197
+ opacity: 1;
198
+ transform: translate3d(0, 0, 0) scale(1);
199
+ }
200
+
201
+ to {
202
+ opacity: 0;
203
+ transform: translate3d(0, -100%, 0) scale(0);
204
+ }
205
+ }
206
+ `;export const darkCss=o({":host":{"--code-color":"#eee","--code-lang-style-color":"#fd9170","--code-toolbar-bg":"rgb(63, 63, 63, 0.7)","--atrule":"#c792ea","--attr-name":"#9cdcfe","--attr-value":"#ce9178","--attr-equals":"#ccc","--attribute":"#a5e844","--boolean":"#c792ea","--builtin":"#ffcb6b","--cdata":"#80cbc4","--char":"#80cbc4","--class":"#ffcb6b","--class-name":"#f2ff00","--comment":"#616161","--constant":"#c792ea","--doctype":"#616161","--entity":"#f66","--function":"#dcdcaa","--hexcode":"#f2ff00","--id":"#c792ea","--important":"#c792ea","--keyword":"#c792ea","--number":"#fd9170","--operator":"#569cd6","--prolog":"#616161","--property":"#80cbc4","--pseudo-class":"#a5e844","--pseudo-element":"#a5e844","--punctuation":"#89ddff","--regex":"#f2ff00","--selector":"#f66","--string":"#a5e844","--symbol":"#c792ea","--tag":"#569cd6","--unit":"#fd9170","--url":"#f66","--variable":"#f66","--inserted-bg":"rgba(0, 255, 128, .15)","--deleted-bg":"rgba(255, 0, 0, .15)"}});export const lightCss=o({":host":{"--code-color":"#90a4ae","--code-lang-style-color":"#f76d47","--namespace":"rgba(56, 64, 68, 0.7)","--tag":"#4b69c6","--atrule":"#7c4dff","--attr-name":"#39adb5","--attr-value":"#f6a434","--attr-equals":"#90a4ae","--attribute":"#f6a434","--boolean":"#7c4dff","--builtin":"#39adb5","--cdata":"#39adb5","--char":"#39adb5","--class":"#39adb5","--class-name":"#6182b8","--comment":"#aabfc9","--constant":"#7c4dff","--doctype":"#aabfc9","--entity":"#e53935","--hexcode":"#f76d47","--id":"#7c4dff","--important":"#7c4dff","--keyword":"#7c4dff","--number":"#f76d47","--operator":"#91b3e0","--prolog":"#aabfc9","--property":"#39adb5","--pseudo-class":"#f6a434","--pseudo-element":"#f6a434","--punctuation":"#39adb5","--regex":"#6182b8","--selector":"#e53935","--string":"#f6a434","--symbol":"#7c4dff","--unit":"#f76d47","--url":"#e53935","--variable":"#e53935","--function":"#4078f2","--name":"#39adb5","--prefix-inserted":"green","--prefix-deleted":"red","--inserted-bg":"rgba(0, 255, 128, .1)","--deleted-bg":"rgba(255, 0, 0, .1)"}});
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/code/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n :host {\n --code-font-stack: 'Liberation Mono', monaco, menlo, consolas, 'Source Code Pro', 'Ubuntu Mono',\n 'Microsoft Yahei', '微软雅黑', courier, 'Helvetica Neue', 'Lantinghei SC', stxihei, wenquanyi,\n sans-serif;\n\n position: relative;\n display: block;\n box-sizing: border-box;\n }\n\n .toolbar::after,\n .toolbar-copy::after,\n pre,\n code {\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n }\n\n [data-copy]::before {\n position: absolute;\n z-index: 1;\n display: inline-block;\n margin: auto;\n border: 1px solid;\n border-radius: var(--border-radius);\n padding: 4px 8px;\n font-size: var(--font-size-sm);\n transition:\n background-color 0.3s,\n color 0.3s,\n border-color 0.3s;\n content: '复制成功';\n inline-size: fit-content;\n animation-fill-mode: forwards;\n inset-block-start: 32px;\n inset-inline: 0;\n }\n\n [data-copy='success']::before {\n border-color: var(--success-border);\n color: var(--success-color);\n background-color: var(--success-bg);\n animation: copy-slide-in var(--transition-duration) var(--transition-timing-function);\n }\n\n [data-copy='failure']::before {\n border-color: var(--error-border);\n color: var(--error-color);\n background-color: var(--error-bg);\n animation:\n copy-slide-in var(--transition-duration) var(--transition-timing-function),\n error 1s var(--transition-timing-function) 1s;\n content: '复制失败';\n }\n\n [data-copy-exit]::before {\n animation: copy-slide-out var(--transition-duration) forwards var(--transition-timing-function);\n }\n\n @keyframes copy-slide-in {\n from {\n opacity: 0;\n transform: translate3d(0, -100%, 0) scale(0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0) scale(1);\n }\n }\n\n @keyframes copy-slide-out {\n from {\n opacity: 1;\n transform: translate3d(0, 0, 0) scale(1);\n }\n\n to {\n opacity: 0;\n transform: translate3d(0, -100%, 0) scale(0);\n }\n }\n\n pre,\n code {\n display: block;\n border: none;\n border-radius: var(--border-radius);\n font-size: var(--font-size);\n font-family: var(--code-font-stack);\n text-align: start;\n white-space: pre-wrap;\n outline: none;\n text-shadow: none;\n overflow-wrap: normal;\n tab-size: 4;\n hyphens: none;\n max-inline-size: 100%;\n line-height: 1.8;\n transition-property: box-shadow, background-color, border-color, color;\n }\n\n pre {\n position: relative;\n overflow: visible;\n margin: auto;\n color: var(--code-color);\n background-color: var(--primary-component-bg);\n box-shadow: 0 2px 8px 0 var(--primary-shadow);\n }\n\n pre > code {\n overflow: auto;\n padding: 32px 16px 8px;\n pointer-events: auto;\n }\n\n pre.language-css,\n pre.language-less,\n pre.language-regex {\n color: var(--code-lang-style-color);\n }\n\n pre > .toolbar::after {\n position: absolute;\n z-index: 2;\n display: block;\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n font-size: var(--font-size);\n font-family: Ubuntu, sans-serif;\n font-weight: bold;\n text-align: center;\n color: var(--text-color);\n background-color: var(--code-toolbar-bg, rgb(220 224 229 / 50%));\n box-shadow: 0 1px 5px rgb(0 0 0 / 10%);\n text-transform: uppercase;\n backdrop-filter: blur(10px);\n content: attr(data-language) '';\n block-size: 24px;\n inline-size: 100%;\n line-height: 24px;\n transition-property: background-color, border-color, color;\n inset-block-start: 0;\n inset-inline-start: 0;\n }\n\n pre > .toolbar::before {\n position: absolute;\n z-index: 3;\n display: inline-block;\n border-radius: var(--border-radius);\n text-align: center;\n background-color: #fc625d;\n box-shadow:\n 0 0 0 4px #fc625d,\n 20px 0 0 4px #fdbc40,\n 40px 0 0 4px #35cd4b;\n cursor: pointer;\n content: '';\n block-size: 4px;\n inline-size: 4px;\n inset-block-start: 10px;\n inset-inline-start: 12px;\n }\n\n pre > .toolbar > .toolbar-copy {\n position: absolute;\n z-index: 3;\n border: none;\n padding: 0;\n background: none;\n outline: none;\n cursor: pointer;\n inset-block-start: 0;\n inset-inline-end: 8px;\n }\n\n pre > .toolbar > .toolbar-copy:active {\n transform: scale(0.95);\n }\n\n .toolbar > .toolbar-copy::after {\n display: block;\n font-size: 24px;\n font-family: sans-serif;\n color: var(--text-color);\n user-select: none;\n content: '⎘';\n line-height: 24px;\n transition-property: color, transform;\n }\n\n .toolbar > .toolbar-copy:hover::after {\n color: var(--primary-color, #5794ff);\n }\n\n .not-toolbar > code {\n padding-block-start: 8px !important;\n }\n\n pre::-webkit-scrollbar {\n block-size: 5px;\n inline-size: 5px;\n }\n`;\nexport const darkCss = css({\n ':host': {\n '--code-color': '#eee',\n '--code-lang-style-color': '#fd9170',\n '--code-toolbar-bg': 'rgb(63, 63, 63, 0.7)',\n '--atrule': '#c792ea',\n '--attr-name': '#9cdcfe',\n '--attr-value': '#ce9178',\n '--attr-equals': '#ccc',\n '--attribute': '#a5e844',\n '--boolean': '#c792ea',\n '--builtin': '#ffcb6b',\n '--cdata': '#80cbc4',\n '--char': '#80cbc4',\n '--class': '#ffcb6b',\n '--class-name': '#f2ff00',\n '--comment': '#616161',\n '--constant': '#c792ea',\n '--deleted': '#f66',\n '--doctype': '#616161',\n '--entity': '#f66',\n '--function': '#dcdcaa',\n '--hexcode': '#f2ff00',\n '--id': '#c792ea',\n '--important': '#c792ea',\n '--inserted': '#80cbc4',\n '--keyword': '#c792ea',\n '--number': '#fd9170',\n '--operator': '#89ddff',\n '--prolog': '#616161',\n '--property': '#80cbc4',\n '--pseudo-class': '#a5e844',\n '--pseudo-element': '#a5e844',\n '--punctuation': '#89ddff',\n '--regex': '#f2ff00',\n '--selector': '#f66',\n '--string': '#a5e844',\n '--symbol': '#c792ea',\n '--tag': '#569cd6',\n '--unit': '#fd9170',\n '--url': '#f66',\n '--variable': '#f66',\n },\n});\nexport const lightCss = css({\n ':host': {\n '--code-color': '#90a4ae',\n '--code-lang-style-color': '#f76d47',\n '--namespace': 'rgba(56, 64, 68, 0.7)',\n '--tag': '#e53935',\n '--atrule': '#7c4dff',\n '--attr-name': '#39adb5',\n '--attr-value': '#f6a434',\n '--attr-equals': '#90a4ae',\n '--attribute': '#f6a434',\n '--boolean': '#7c4dff',\n '--builtin': '#39adb5',\n '--cdata': '#39adb5',\n '--char': '#39adb5',\n '--class': '#39adb5',\n '--class-name': '#6182b8',\n '--comment': '#aabfc9',\n '--constant': '#7c4dff',\n '--doctype': '#aabfc9',\n '--entity': '#e53935',\n '--hexcode': '#f76d47',\n '--id': '#7c4dff',\n '--important': '#7c4dff',\n '--keyword': '#7c4dff',\n '--number': '#f76d47',\n '--operator': '#39adb5',\n '--prolog': '#aabfc9',\n '--property': '#39adb5',\n '--pseudo-class': '#f6a434',\n '--pseudo-element': '#f6a434',\n '--punctuation': '#39adb5',\n '--regex': '#6182b8',\n '--selector': '#e53935',\n '--string': '#f6a434',\n '--symbol': '#7c4dff',\n '--unit': '#f76d47',\n '--url': '#e53935',\n '--variable': '#e53935',\n '--function': '#4078f2',\n '--inserted': '#39adb5',\n '--deleted': '#e53935',\n '--name': '#39adb5',\n },\n});\n"],"names":["css","style","darkCss","lightCss"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAO,MAAMC,MAAQD,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6MzB,CAAC,AAAC,AACF,QAAO,MAAME,QAAUF,EAAI,CACzB,QAAS,CACP,eAAgB,OAChB,0BAA2B,UAC3B,oBAAqB,uBACrB,WAAY,UACZ,cAAe,UACf,eAAgB,UAChB,gBAAiB,OACjB,cAAe,UACf,YAAa,UACb,YAAa,UACb,UAAW,UACX,SAAU,UACV,UAAW,UACX,eAAgB,UAChB,YAAa,UACb,aAAc,UACd,YAAa,OACb,YAAa,UACb,WAAY,OACZ,aAAc,UACd,YAAa,UACb,OAAQ,UACR,cAAe,UACf,aAAc,UACd,YAAa,UACb,WAAY,UACZ,aAAc,UACd,WAAY,UACZ,aAAc,UACd,iBAAkB,UAClB,mBAAoB,UACpB,gBAAiB,UACjB,UAAW,UACX,aAAc,OACd,WAAY,UACZ,WAAY,UACZ,QAAS,UACT,SAAU,UACV,QAAS,OACT,aAAc,MAChB,CACF,EAAG,AACH,QAAO,MAAMG,SAAWH,EAAI,CAC1B,QAAS,CACP,eAAgB,UAChB,0BAA2B,UAC3B,cAAe,wBACf,QAAS,UACT,WAAY,UACZ,cAAe,UACf,eAAgB,UAChB,gBAAiB,UACjB,cAAe,UACf,YAAa,UACb,YAAa,UACb,UAAW,UACX,SAAU,UACV,UAAW,UACX,eAAgB,UAChB,YAAa,UACb,aAAc,UACd,YAAa,UACb,WAAY,UACZ,YAAa,UACb,OAAQ,UACR,cAAe,UACf,YAAa,UACb,WAAY,UACZ,aAAc,UACd,WAAY,UACZ,aAAc,UACd,iBAAkB,UAClB,mBAAoB,UACpB,gBAAiB,UACjB,UAAW,UACX,aAAc,UACd,WAAY,UACZ,WAAY,UACZ,SAAU,UACV,QAAS,UACT,aAAc,UACd,aAAc,UACd,aAAc,UACd,YAAa,UACb,SAAU,SACZ,CACF,EAAG"}
1
+ {"version":3,"sources":["components/code/style.ts"],"sourcesContent":["import { css } from '@moneko/css';\n\nexport const style = css`\n :host {\n --code-font-stack: 'Liberation Mono', monaco, menlo, consolas, 'Source Code Pro', 'Ubuntu Mono',\n 'Microsoft Yahei', '微软雅黑', courier, 'Helvetica Neue', 'Lantinghei SC', stxihei, wenquanyi,\n sans-serif;\n\n position: relative;\n display: block;\n box-sizing: border-box;\n }\n\n .toolbar::after,\n .toolbar-copy::after,\n pre,\n code {\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--transition-timing-function);\n }\n\n [data-copy]::before {\n position: absolute;\n z-index: 1;\n display: inline-block;\n margin: auto;\n border: 1px solid;\n border-radius: var(--border-radius);\n padding: 4px 8px;\n font-size: var(--font-size-sm);\n transition:\n background-color 0.3s,\n color 0.3s,\n border-color 0.3s;\n content: '复制成功';\n inline-size: fit-content;\n animation-fill-mode: forwards;\n inset-block-start: 32px;\n inset-inline: 0;\n }\n\n [data-copy='success']::before {\n border-color: var(--success-border);\n color: var(--success-color);\n background-color: var(--success-bg);\n animation: copy-slide-in var(--transition-duration) var(--transition-timing-function);\n }\n\n [data-copy='failure']::before {\n border-color: var(--error-border);\n color: var(--error-color);\n background-color: var(--error-bg);\n animation:\n copy-slide-in var(--transition-duration) var(--transition-timing-function),\n error 1s var(--transition-timing-function) 1s;\n content: '复制失败';\n }\n\n [data-copy-exit]::before {\n animation: copy-slide-out var(--transition-duration) forwards var(--transition-timing-function);\n }\n\n pre,\n code {\n display: block;\n border: none;\n border-radius: var(--border-radius);\n font-size: var(--font-size);\n font-family: var(--code-font-stack);\n text-align: start;\n white-space: pre-wrap;\n outline: none;\n text-shadow: none;\n overflow-wrap: normal;\n tab-size: 4;\n hyphens: none;\n max-inline-size: 100%;\n line-height: 1.8;\n transition-property: box-shadow, background-color, border-color, color;\n }\n\n pre {\n position: relative;\n overflow: visible;\n margin: auto;\n color: var(--code-color);\n background-color: var(--primary-component-bg);\n box-shadow: 0 2px 8px 0 var(--primary-shadow);\n }\n\n pre > code {\n overflow: auto;\n padding: 32px 16px 8px;\n pointer-events: auto;\n }\n\n pre.language-css,\n pre.language-less,\n pre.language-regex {\n color: var(--code-lang-style-color);\n }\n\n pre > .toolbar::after {\n position: absolute;\n z-index: 2;\n display: block;\n border-radius: var(--border-radius) var(--border-radius) 0 0;\n font-size: var(--font-size);\n font-family: Ubuntu, sans-serif;\n font-weight: bold;\n text-align: center;\n color: var(--text-color);\n background-color: var(--code-toolbar-bg, rgb(220 224 229 / 50%));\n box-shadow: 0 1px 5px rgb(0 0 0 / 10%);\n text-transform: uppercase;\n backdrop-filter: blur(10px);\n content: attr(data-language) '';\n block-size: 24px;\n inline-size: 100%;\n line-height: 24px;\n transition-property: background-color, border-color, color;\n inset-block-start: 0;\n inset-inline-start: 0;\n }\n\n pre > .toolbar::before {\n position: absolute;\n z-index: 3;\n display: inline-block;\n border-radius: var(--border-radius);\n text-align: center;\n background-color: #fc625d;\n box-shadow:\n 0 0 0 4px #fc625d,\n 20px 0 0 4px #fdbc40,\n 40px 0 0 4px #35cd4b;\n cursor: pointer;\n content: '';\n block-size: 4px;\n inline-size: 4px;\n inset-block-start: 10px;\n inset-inline-start: 12px;\n }\n\n pre > .toolbar > .toolbar-copy {\n position: absolute;\n z-index: 3;\n border: none;\n padding: 0;\n background: none;\n outline: none;\n cursor: pointer;\n inset-block-start: 0;\n inset-inline-end: 8px;\n }\n\n pre > .toolbar > .toolbar-copy:active {\n transform: scale(0.95);\n }\n\n .toolbar > .toolbar-copy::after {\n display: block;\n font-size: 24px;\n font-family: sans-serif;\n color: var(--text-color);\n user-select: none;\n content: '⎘';\n line-height: 24px;\n transition-property: color, transform;\n }\n\n .toolbar > .toolbar-copy:hover::after {\n color: var(--primary-color, #5794ff);\n }\n\n .not-toolbar > code {\n padding-block-start: 8px !important;\n }\n\n pre::-webkit-scrollbar {\n block-size: 5px;\n inline-size: 5px;\n }\n\n @keyframes copy-slide-in {\n from {\n opacity: 0;\n transform: translate3d(0, -100%, 0) scale(0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0) scale(1);\n }\n }\n\n @keyframes copy-slide-out {\n from {\n opacity: 1;\n transform: translate3d(0, 0, 0) scale(1);\n }\n\n to {\n opacity: 0;\n transform: translate3d(0, -100%, 0) scale(0);\n }\n }\n`;\nexport const darkCss = css({\n ':host': {\n '--code-color': '#eee',\n '--code-lang-style-color': '#fd9170',\n '--code-toolbar-bg': 'rgb(63, 63, 63, 0.7)',\n '--atrule': '#c792ea',\n '--attr-name': '#9cdcfe',\n '--attr-value': '#ce9178',\n '--attr-equals': '#ccc',\n '--attribute': '#a5e844',\n '--boolean': '#c792ea',\n '--builtin': '#ffcb6b',\n '--cdata': '#80cbc4',\n '--char': '#80cbc4',\n '--class': '#ffcb6b',\n '--class-name': '#f2ff00',\n '--comment': '#616161',\n '--constant': '#c792ea',\n '--doctype': '#616161',\n '--entity': '#f66',\n '--function': '#dcdcaa',\n '--hexcode': '#f2ff00',\n '--id': '#c792ea',\n '--important': '#c792ea',\n '--keyword': '#c792ea',\n '--number': '#fd9170',\n '--operator': '#569cd6',\n '--prolog': '#616161',\n '--property': '#80cbc4',\n '--pseudo-class': '#a5e844',\n '--pseudo-element': '#a5e844',\n '--punctuation': '#89ddff',\n '--regex': '#f2ff00',\n '--selector': '#f66',\n '--string': '#a5e844',\n '--symbol': '#c792ea',\n '--tag': '#569cd6',\n '--unit': '#fd9170',\n '--url': '#f66',\n '--variable': '#f66',\n '--inserted-bg': 'rgba(0, 255, 128, .15)',\n '--deleted-bg': 'rgba(255, 0, 0, .15)',\n },\n});\nexport const lightCss = css({\n ':host': {\n '--code-color': '#90a4ae',\n '--code-lang-style-color': '#f76d47',\n '--namespace': 'rgba(56, 64, 68, 0.7)',\n '--tag': '#4b69c6',\n '--atrule': '#7c4dff',\n '--attr-name': '#39adb5',\n '--attr-value': '#f6a434',\n '--attr-equals': '#90a4ae',\n '--attribute': '#f6a434',\n '--boolean': '#7c4dff',\n '--builtin': '#39adb5',\n '--cdata': '#39adb5',\n '--char': '#39adb5',\n '--class': '#39adb5',\n '--class-name': '#6182b8',\n '--comment': '#aabfc9',\n '--constant': '#7c4dff',\n '--doctype': '#aabfc9',\n '--entity': '#e53935',\n '--hexcode': '#f76d47',\n '--id': '#7c4dff',\n '--important': '#7c4dff',\n '--keyword': '#7c4dff',\n '--number': '#f76d47',\n '--operator': '#91b3e0',\n '--prolog': '#aabfc9',\n '--property': '#39adb5',\n '--pseudo-class': '#f6a434',\n '--pseudo-element': '#f6a434',\n '--punctuation': '#39adb5',\n '--regex': '#6182b8',\n '--selector': '#e53935',\n '--string': '#f6a434',\n '--symbol': '#7c4dff',\n '--unit': '#f76d47',\n '--url': '#e53935',\n '--variable': '#e53935',\n '--function': '#4078f2',\n '--name': '#39adb5',\n '--prefix-inserted': 'green',\n '--prefix-deleted': 'red',\n '--inserted-bg': 'rgba(0, 255, 128, .1)',\n '--deleted-bg': 'rgba(255, 0, 0, .1)',\n },\n});\n"],"names":["css","style","darkCss","lightCss"],"mappings":"AAAA,OAASA,OAAAA,CAAG,KAAQ,aAAc,AAElC,QAAO,MAAMC,MAAQD,CAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6MzB,CAAC,AAAC,AACF,QAAO,MAAME,QAAUF,EAAI,CACzB,QAAS,CACP,eAAgB,OAChB,0BAA2B,UAC3B,oBAAqB,uBACrB,WAAY,UACZ,cAAe,UACf,eAAgB,UAChB,gBAAiB,OACjB,cAAe,UACf,YAAa,UACb,YAAa,UACb,UAAW,UACX,SAAU,UACV,UAAW,UACX,eAAgB,UAChB,YAAa,UACb,aAAc,UACd,YAAa,UACb,WAAY,OACZ,aAAc,UACd,YAAa,UACb,OAAQ,UACR,cAAe,UACf,YAAa,UACb,WAAY,UACZ,aAAc,UACd,WAAY,UACZ,aAAc,UACd,iBAAkB,UAClB,mBAAoB,UACpB,gBAAiB,UACjB,UAAW,UACX,aAAc,OACd,WAAY,UACZ,WAAY,UACZ,QAAS,UACT,SAAU,UACV,QAAS,OACT,aAAc,OACd,gBAAiB,yBACjB,eAAgB,sBAClB,CACF,EAAG,AACH,QAAO,MAAMG,SAAWH,EAAI,CAC1B,QAAS,CACP,eAAgB,UAChB,0BAA2B,UAC3B,cAAe,wBACf,QAAS,UACT,WAAY,UACZ,cAAe,UACf,eAAgB,UAChB,gBAAiB,UACjB,cAAe,UACf,YAAa,UACb,YAAa,UACb,UAAW,UACX,SAAU,UACV,UAAW,UACX,eAAgB,UAChB,YAAa,UACb,aAAc,UACd,YAAa,UACb,WAAY,UACZ,YAAa,UACb,OAAQ,UACR,cAAe,UACf,YAAa,UACb,WAAY,UACZ,aAAc,UACd,WAAY,UACZ,aAAc,UACd,iBAAkB,UAClB,mBAAoB,UACpB,gBAAiB,UACjB,UAAW,UACX,aAAc,UACd,WAAY,UACZ,WAAY,UACZ,SAAU,UACV,QAAS,UACT,aAAc,UACd,aAAc,UACd,SAAU,UACV,oBAAqB,QACrB,mBAAoB,MACpB,gBAAiB,wBACjB,eAAgB,qBAClB,CACF,EAAG"}
package/es/code/worker.js CHANGED
@@ -1,3 +1,2 @@
1
1
  self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-clike.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-css.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-diff.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-docker.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-git.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-javascript.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-jsx.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-latex.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-less.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markdown.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markup-templating.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markup.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-regex.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-rust.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-sql.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-swift.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-toml.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-tsx.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-typescript.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-wasm.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-yaml.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/diff-highlight/prism-diff-highlight.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/highlight-keywords/prism-highlight-keywords.js"),self.importScripts("https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.js"),self.addEventListener("message",function(s){let p;try{let{code:t,language:i="markup"}=JSON.parse(s.data);/^diff-([\w-]+)/i.test(i)&&!self.Prism.languages[i]&&(self.Prism.languages[i]=self.Prism.languages.diff),p=self.Prism.highlight(`${t}
2
- `,self.Prism.languages[i],i)}catch(s){p=""}self.postMessage(p)},!1);
3
- //# sourceMappingURL=worker.js.map
2
+ `,self.Prism.languages[i],i)}catch(s){p=""}self.postMessage(p)},!1);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../components/code/worker.ts"],"sourcesContent":["self.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-clike.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-css.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-diff.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-docker.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-git.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-javascript.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-jsx.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-latex.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-less.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markdown.js');\nself.importScripts(\n 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markup-templating.js',\n);\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markup.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-regex.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-rust.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-sql.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-swift.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-toml.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-tsx.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-typescript.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-wasm.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-yaml.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.js');\n// plugins\nself.importScripts(\n 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/diff-highlight/prism-diff-highlight.js',\n);\nself.importScripts(\n 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/highlight-keywords/prism-highlight-keywords.js',\n);\nself.importScripts(\n 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.js',\n);\n\nfunction onMessage(e: MessageEvent<string>) {\n let result;\n\n try {\n const { code, language = 'markup' } = JSON.parse(e.data) as {\n code: string;\n language: string;\n };\n\n if (/^diff-([\\w-]+)/i.test(language) && !self.Prism.languages[language]) {\n self.Prism.languages[language] = self.Prism.languages.diff;\n }\n\n result = self.Prism.highlight(`${code}\\n`, self.Prism.languages[language], language);\n } catch {\n result = '';\n }\n self.postMessage(result); // 向主线程发送消息\n}\n\nself.addEventListener('message', onMessage, false);\n"],"names":["self","importScripts","addEventListener","e","result","code","language","JSON","parse","data","test","Prism","languages","diff","highlight","postMessage"],"mappings":"AAAAA,KAAKC,aAAa,CAAC,wDACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,yEACnBD,KAAKC,aAAa,CAAC,uEACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,0EACnBD,KAAKC,aAAa,CAAC,uEACnBD,KAAKC,aAAa,CAAC,8EACnBD,KAAKC,aAAa,CAAC,uEACnBD,KAAKC,aAAa,CAAC,yEACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,4EACnBD,KAAKC,aAAa,CAChB,qFAEFD,KAAKC,aAAa,CAAC,0EACnBD,KAAKC,aAAa,CAAC,yEACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,uEACnBD,KAAKC,aAAa,CAAC,yEACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,uEACnBD,KAAKC,aAAa,CAAC,8EACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,wEAEnBD,KAAKC,aAAa,CAChB,8FAEFD,KAAKC,aAAa,CAChB,sGAEFD,KAAKC,aAAa,CAChB,0FAuBFD,KAAKE,gBAAgB,CAAC,UApBtB,SAAmBC,CAAuB,EACxC,IAAIC,EAEJ,GAAI,CACF,GAAM,CAAEC,KAAAA,CAAI,CAAEC,SAAAA,EAAW,QAAQ,CAAE,CAAGC,KAAKC,KAAK,CAACL,EAAEM,IAAI,EAKnD,kBAAkBC,IAAI,CAACJ,IAAa,CAACN,KAAKW,KAAK,CAACC,SAAS,CAACN,EAAS,EACrEN,CAAAA,KAAKW,KAAK,CAACC,SAAS,CAACN,EAAS,CAAGN,KAAKW,KAAK,CAACC,SAAS,CAACC,IAAI,AAAD,EAG3DT,EAASJ,KAAKW,KAAK,CAACG,SAAS,CAAC,CAAC,EAAET,EAAK;AAAE,CAAC,CAAEL,KAAKW,KAAK,CAACC,SAAS,CAACN,EAAS,CAAEA,EAC7E,CAAE,QAAM,CACNF,EAAS,EACX,CACAJ,KAAKe,WAAW,CAACX,EACnB,EAE4C,CAAA"}
1
+ {"version":3,"sources":["components/code/worker.ts"],"sourcesContent":["self.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-clike.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-css.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-diff.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-docker.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-git.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-javascript.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-jsx.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-latex.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-less.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markdown.js');\nself.importScripts(\n 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markup-templating.js',\n);\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-markup.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-regex.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-rust.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-sql.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-swift.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-toml.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-tsx.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-typescript.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-wasm.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-yaml.js');\nself.importScripts('https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.js');\n// plugins\nself.importScripts(\n 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/diff-highlight/prism-diff-highlight.js',\n);\nself.importScripts(\n 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/highlight-keywords/prism-highlight-keywords.js',\n);\nself.importScripts(\n 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/line-numbers/prism-line-numbers.js',\n);\n\nfunction onMessage(e: MessageEvent<string>) {\n let result;\n\n try {\n const { code, language = 'markup' } = JSON.parse(e.data) as {\n code: string;\n language: string;\n };\n\n if (/^diff-([\\w-]+)/i.test(language) && !self.Prism.languages[language]) {\n self.Prism.languages[language] = self.Prism.languages.diff;\n }\n\n result = self.Prism.highlight(`${code}\\n`, self.Prism.languages[language], language);\n } catch {\n result = '';\n }\n self.postMessage(result); // 向主线程发送消息\n}\n\nself.addEventListener('message', onMessage, false);\n"],"names":["self","importScripts","addEventListener","e","result","code","language","JSON","parse","data","test","Prism","languages","diff","highlight","postMessage"],"mappings":"AAAAA,KAAKC,aAAa,CAAC,wDACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,yEACnBD,KAAKC,aAAa,CAAC,uEACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,0EACnBD,KAAKC,aAAa,CAAC,uEACnBD,KAAKC,aAAa,CAAC,8EACnBD,KAAKC,aAAa,CAAC,uEACnBD,KAAKC,aAAa,CAAC,yEACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,4EACnBD,KAAKC,aAAa,CAChB,qFAEFD,KAAKC,aAAa,CAAC,0EACnBD,KAAKC,aAAa,CAAC,yEACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,uEACnBD,KAAKC,aAAa,CAAC,yEACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,uEACnBD,KAAKC,aAAa,CAAC,8EACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,wEACnBD,KAAKC,aAAa,CAAC,wEAEnBD,KAAKC,aAAa,CAChB,8FAEFD,KAAKC,aAAa,CAChB,sGAEFD,KAAKC,aAAa,CAChB,0FAuBFD,KAAKE,gBAAgB,CAAC,UApBtB,SAAmBC,CAAuB,EACxC,IAAIC,EAEJ,GAAI,CACF,GAAM,CAAEC,KAAAA,CAAI,CAAEC,SAAAA,EAAW,QAAQ,CAAE,CAAGC,KAAKC,KAAK,CAACL,EAAEM,IAAI,EAKnD,kBAAkBC,IAAI,CAACJ,IAAa,CAACN,KAAKW,KAAK,CAACC,SAAS,CAACN,EAAS,EACrEN,CAAAA,KAAKW,KAAK,CAACC,SAAS,CAACN,EAAS,CAAGN,KAAKW,KAAK,CAACC,SAAS,CAACC,IAAI,AAAD,EAG3DT,EAASJ,KAAKW,KAAK,CAACG,SAAS,CAAC,CAAC,EAAET,EAAK;AAAE,CAAC,CAAEL,KAAKW,KAAK,CAACC,SAAS,CAACN,EAAS,CAAEA,EAC7E,CAAE,QAAM,CACNF,EAAS,EACX,CACAJ,KAAKe,WAAW,CAACX,EACnB,EAE4C,CAAA"}
@@ -1,2 +1 @@
1
- function e(e,t,r,n,o,i,l){try{var a=e[i](l),s=a.value}catch(e){r(e);return}a.done?t(s):Promise.resolve(s).then(n,o)}function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}import{use as r}from"solid-js/web";import{template as n}from"solid-js/web";import{spread as o}from"solid-js/web";import{mergeProps as i}from"solid-js/web";import"solid-js/web";import{insert as l}from"solid-js/web";import{getOwner as a}from"solid-js/web";import{effect as s}from"solid-js/web";import{delegateEvents as u}from"solid-js/web";import{createComponent as m}from"solid-js/web";import{className as p}from"solid-js/web";import{addEventListener as c}from"solid-js/web";let d=n("<style> "),f=n("<style>"),v=n("<n-input>",!0,!1),g=n('<i class="eye-dropper">'),h=n('<div><div class="picker"></div><div class="chooser"><div class="range"><input class="slider hue" min="0" max="360" type="range"><input class="slider opacity" min="0" max="1" step="0.01" type="range"></div><div class="preview"></div></div><div class="form"><n-dropdown placement="right" trigger="click"><span class="switch"></span></n-dropdown></div><div class="color">',!0,!1),b=n("<n-input-number>",!0,!1),y=n("<i>");import{createEffect as w,createMemo as C,createSignal as x,For as j,Index as k,mergeProps as E,onCleanup as S,onMount as P,Show as $,untrack as B}from"solid-js";import D from"@moneko/common/lib/colorParse";import F from"@moneko/common/lib/isFunction";import L from"@moneko/common/lib/passiveSupported";import M from"@moneko/common/lib/setClipboard";import A from"@moneko/common/lib/throttle";import{css as H,cx as O}from"@moneko/css";import{customElement as R}from"solid-element";import{clearAttribute as N}from"../basic-config";import V,{block as G}from"../theme";import{style as _,switchCss as z}from"./style";import"../dropdown";import"../input";import"../input-number";function U(n){let u;let{baseStyle:R}=V,N=E({defaultValue:"#5794ff"},n),G=[{label:"RGBA",value:"rgba",handleClosed:!1},{label:"HSLA",value:"hsla",handleClosed:!1},{label:"HEXA",value:"hexa",handleClosed:!1}],U=["#f44336","#E91E63","#9C27B0","#673AB7","#3F51B5","#2196F3","#00BCD4","#009688","#4CAF50","#CDDC39","#FF9800","#795548","#607D8B"],X={class:"input",size:"small",css:".input{text-align:center;font-size:12px;}"},[K,Y]=x(D(N.value||N.defaultValue)),[q,I]=x(!1);function J(e){return e?Number((100*e).toFixed()):e}function Q(e){let t=e;return"string"==typeof e&&(t=e.replace(/[^\d]/g,"")),t/100}let T=C(()=>{var e;let t=K(),r=t[e=t.type,`to${e[0].toUpperCase()+e.slice(1)}`]();return F(N.onChange)&&r.toString()!==N.value&&N.onChange(r.toString()),r});function W(e=N.defaultValue){B(T).toString()!==e&&Y(D(e))}function Z(e){e.target&&(e.target.value=e.detail)}function ee(e){e.target.value&&W(e.target.value)}function et(e){"Enter"===e.key&&"string"==typeof e.target.value&&W(e.target.value)}function er(e){if(u){let{x:r,y:n,width:o,height:i}=u.getBoundingClientRect(),l=B(K),a=l.value;a[1]=Math.floor(Math.min(Math.max(0,(e.clientX-r)/o*100),100)),a[2]=Math.floor(100-Math.min(Math.max(0,(e.clientY-n)/i*100),100)),Y(t({},l,{value:a}))}}function en(e,r,n){if("number"==typeof r){let o=B(K),i=3===e||"hsva"===n,l=i?o.value:B(T);l[e]=r||0,i?Y(t({},o,{value:l})):Y(D(l.toString()))}}function eo(e){I(!0),er(e)}function ei(){I(!1)}function el(e){Y(r=>t({},r,{type:e.detail[0]}))}function ea(e){M(B(T).toString(),e.target)}function es(){return eu.apply(this,arguments)}function eu(){var t;return t=function*(){if(window.EyeDropper){let e=yield new window.EyeDropper().open();e.sRGBHex&&W(e.sRGBHex);return}},(eu=function(){var r=this,n=arguments;return new Promise(function(o,i){var l=t.apply(r,n);function a(t){e(l,o,i,a,s,"next",t)}function s(t){e(l,o,i,a,s,"throw",t)}a(void 0)})}).apply(this,arguments)}let em=C(()=>{let e=K(),t=e.value;return`.palette {--c:${e.toRgbaString()};--h:${t[0]};--s:${t[1]};--v:${t[2]};--a:${t[3]};}`});return w(()=>{A(W,8)(N.value)}),w(()=>{q()&&document.body.addEventListener("mousemove",er,{passive:L}),S(()=>{document.body.removeEventListener("mousemove",er,!1)})}),P(()=>{document.body.addEventListener("mouseup",ei,{passive:L})}),S(()=>{document.body.removeEventListener("mouseup",ei,!1)}),[(()=>{let e=d(),t=e.firstChild;return s(()=>t.data=R()),e})(),(()=>{let e=f();return e.textContent=_,e})(),(()=>{let e=d(),t=e.firstChild;return s(()=>t.data=em()),e})(),m($,{get when(){return N.css},get children(){let e=d(),t=e.firstChild;return s(()=>t.data=H(N.css)),e}}),(()=>{let e=h(),t=e.firstChild,n=u,d=t.nextSibling,f=d.firstChild,w=f.firstChild,C=w.nextSibling,x=f.nextSibling,E=d.nextSibling,S=E.firstChild,P=S.firstChild,D=E.nextSibling;return c(t,"mousedown",eo,!0),"function"==typeof n?r(n,t):u=t,w.$$input=e=>{en(0,Number(e.target.value),"hsva")},C.$$input=e=>{en(3,Number(e.target.value))},c(x,"click",ea,!0),l(E,m($,{get when(){return"hexa"===K().type},get fallback(){return m(k,{get each(){return T()},children:(e,t)=>{let r=Object.assign({},X,3===t&&{step:.01,formatter:J,parse:Q});return(()=>{let n=b();return o(n,i(r,{get value(){return e()},get max(){return B(T).max[t]},min:0,onChange:e=>{en(t,e.detail)}}),!1,!1),n._$owner=a(),n})()}})},get children(){let e=v();return o(e,i(X,{get value(){return K().toHexaString()},onChange:Z,onBlur:ee,onKeyUp:et}),!1,!1),e._$owner=a(),e}}),S),c(S,"change",el),S.css=z,S.items=G,S._$owner=a(),l(P,()=>K().type),l(D,m($,{get when(){return window.EyeDropper},get fallback(){return(()=>{let e=y();return c(e,"click",W.bind(null,"rgba(168,16,16,0.15)"),!0),e.style.setProperty("--c","rgba(168,16,16,0.15)"),e})()},get children(){let e=g();return c(e,"click",es,!0),e.style.setProperty("--c","transparent"),e}}),null),l(D,m(j,{each:U,children:e=>(()=>{let t=y();return c(t,"click",W.bind(null,e),!0),null!=e?t.style.setProperty("--c",e):t.style.removeProperty("--c"),t})()}),null),s(()=>p(e,O("palette",N.class))),s(()=>w.value=K().value[0]),s(()=>C.value=K().value[3]),s(()=>S.value=K().type),e})()]}export const defaultColorPaletteProps={class:void 0,style:void 0,css:void 0,value:void 0,defaultValue:void 0,onChange:void 0};R("n-color-palette",defaultColorPaletteProps,(e,t)=>{let r=t.element,n=E({onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return w(()=>{N(r,["css"])}),[(()=>{let e=f();return e.textContent=G,e})(),m(U,n)]});export default U;u(["click","input","mousedown"]);
2
- //# sourceMappingURL=index.js.map
1
+ function e(e,t,r,n,o,i,l){try{var a=e[i](l),s=a.value}catch(e){r(e);return}a.done?t(s):Promise.resolve(s).then(n,o)}function t(){return(t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}import{use as r}from"solid-js/web";import{template as n}from"solid-js/web";import{spread as o}from"solid-js/web";import{mergeProps as i}from"solid-js/web";import"solid-js/web";import{insert as l}from"solid-js/web";import{getOwner as a}from"solid-js/web";import{effect as s}from"solid-js/web";import{delegateEvents as u}from"solid-js/web";import{createComponent as m}from"solid-js/web";import{className as p}from"solid-js/web";import{addEventListener as c}from"solid-js/web";let d=n("<style> "),f=n("<style>"),v=n("<n-input>",!0,!1),g=n('<i class="eye-dropper">'),h=n('<div><div class="picker"></div><div class="chooser"><div class="range"><input class="slider hue" min="0" max="360" type="range"><input class="slider opacity" min="0" max="1" step="0.01" type="range"></div><div class="preview"></div></div><div class="form"><n-dropdown placement="right" trigger="click"><span class="switch"></span></n-dropdown></div><div class="color">',!0,!1),b=n("<n-input-number>",!0,!1),y=n("<i>");import{createEffect as w,createMemo as C,createSignal as x,For as j,Index as k,mergeProps as E,onCleanup as S,onMount as P,Show as $,untrack as B}from"solid-js";import D from"@moneko/common/lib/colorParse";import F from"@moneko/common/lib/isFunction";import L from"@moneko/common/lib/passiveSupported";import M from"@moneko/common/lib/setClipboard";import A from"@moneko/common/lib/throttle";import{css as H,cx as O}from"@moneko/css";import{customElement as R}from"solid-element";import{clearAttribute as N}from"../basic-config";import V,{block as G}from"../theme";import{style as _,switchCss as z}from"./style";import"../dropdown";import"../input";import"../input-number";function U(n){let u;let{baseStyle:R}=V,N=E({defaultValue:"#5794ff"},n),G=[{label:"RGBA",value:"rgba",handleClosed:!1},{label:"HSLA",value:"hsla",handleClosed:!1},{label:"HEXA",value:"hexa",handleClosed:!1}],U=["#f44336","#E91E63","#9C27B0","#673AB7","#3F51B5","#2196F3","#00BCD4","#009688","#4CAF50","#CDDC39","#FF9800","#795548","#607D8B"],X={class:"input",size:"small",css:".input{text-align:center;font-size:12px;}"},[K,Y]=x(D(N.value||N.defaultValue)),[q,I]=x(!1);function J(e){return e?Number((100*e).toFixed()):e}function Q(e){let t=e;return"string"==typeof e&&(t=e.replace(/[^\d]/g,"")),t/100}let T=C(()=>{var e;let t=K(),r=t[e=t.type,`to${e[0].toUpperCase()+e.slice(1)}`]();return F(N.onChange)&&r.toString()!==N.value&&N.onChange(r.toString()),r});function W(e=N.defaultValue){B(T).toString()!==e&&Y(D(e))}function Z(e){e.target&&(e.target.value=e.detail)}function ee(e){e.target.value&&W(e.target.value)}function et(e){"Enter"===e.key&&"string"==typeof e.target.value&&W(e.target.value)}function er(e){if(u){let{x:r,y:n,width:o,height:i}=u.getBoundingClientRect(),l=B(K),a=l.value;a[1]=Math.floor(Math.min(Math.max(0,(e.clientX-r)/o*100),100)),a[2]=Math.floor(100-Math.min(Math.max(0,(e.clientY-n)/i*100),100)),Y(t({},l,{value:a}))}}function en(e,r,n){if("number"==typeof r){let o=B(K),i=3===e||"hsva"===n,l=i?o.value:B(T);l[e]=r||0,i?Y(t({},o,{value:l})):Y(D(l.toString()))}}function eo(e){I(!0),er(e)}function ei(){I(!1)}function el(e){Y(r=>t({},r,{type:e.detail[0]}))}function ea(e){M(B(T).toString(),e.target)}function es(){return eu.apply(this,arguments)}function eu(){var t;return t=function*(){if(window.EyeDropper){let e=yield new window.EyeDropper().open();e.sRGBHex&&W(e.sRGBHex);return}},(eu=function(){var r=this,n=arguments;return new Promise(function(o,i){var l=t.apply(r,n);function a(t){e(l,o,i,a,s,"next",t)}function s(t){e(l,o,i,a,s,"throw",t)}a(void 0)})}).apply(this,arguments)}let em=C(()=>{let e=K(),t=e.value;return`.palette {--c:${e.toRgbaString()};--h:${t[0]};--s:${t[1]};--v:${t[2]};--a:${t[3]};}`});return w(()=>{A(W,8)(N.value)}),w(()=>{q()&&document.body.addEventListener("mousemove",er,{passive:L}),S(()=>{document.body.removeEventListener("mousemove",er,!1)})}),P(()=>{document.body.addEventListener("mouseup",ei,{passive:L})}),S(()=>{document.body.removeEventListener("mouseup",ei,!1)}),[(()=>{let e=d(),t=e.firstChild;return s(()=>t.data=R()),e})(),(()=>{let e=f();return e.textContent=_,e})(),(()=>{let e=d(),t=e.firstChild;return s(()=>t.data=em()),e})(),m($,{get when(){return N.css},get children(){let e=d(),t=e.firstChild;return s(()=>t.data=H(N.css)),e}}),(()=>{let e=h(),t=e.firstChild,n=u,d=t.nextSibling,f=d.firstChild,w=f.firstChild,C=w.nextSibling,x=f.nextSibling,E=d.nextSibling,S=E.firstChild,P=S.firstChild,D=E.nextSibling;return c(t,"mousedown",eo,!0),"function"==typeof n?r(n,t):u=t,w.$$input=e=>{en(0,Number(e.target.value),"hsva")},C.$$input=e=>{en(3,Number(e.target.value))},c(x,"click",ea,!0),l(E,m($,{get when(){return"hexa"===K().type},get fallback(){return m(k,{get each(){return T()},children:(e,t)=>{let r=Object.assign({},X,3===t&&{step:.01,formatter:J,parse:Q});return(()=>{let n=b();return o(n,i(r,{get value(){return e()},get max(){return B(T).max[t]},min:0,onChange:e=>{en(t,e.detail)}}),!1,!1),n._$owner=a(),n})()}})},get children(){let e=v();return o(e,i(X,{get value(){return K().toHexaString()},onChange:Z,onBlur:ee,onKeyUp:et}),!1,!1),e._$owner=a(),e}}),S),c(S,"change",el),S.css=z,S.items=G,S._$owner=a(),l(P,()=>K().type),l(D,m($,{get when(){return window.EyeDropper},get fallback(){return(()=>{let e=y();return c(e,"click",W.bind(null,"rgba(168,16,16,0.15)"),!0),e.style.setProperty("--c","rgba(168,16,16,0.15)"),e})()},get children(){let e=g();return c(e,"click",es,!0),e.style.setProperty("--c","transparent"),e}}),null),l(D,m(j,{each:U,children:e=>(()=>{let t=y();return c(t,"click",W.bind(null,e),!0),null!=e?t.style.setProperty("--c",e):t.style.removeProperty("--c"),t})()}),null),s(()=>p(e,O("palette",N.class))),s(()=>w.value=K().value[0]),s(()=>C.value=K().value[3]),s(()=>S.value=K().type),e})()]}export const defaultColorPaletteProps={class:void 0,style:void 0,css:void 0,value:void 0,defaultValue:void 0,onChange:void 0};R("n-color-palette",defaultColorPaletteProps,(e,t)=>{let r=t.element,n=E({onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return w(()=>{N(r,["css"])}),[(()=>{let e=f();return e.textContent=G,e})(),m(U,n)]});export default U;u(["click","input","mousedown"]);