@greypan/web-ui 11.2.0 → 12.0.0

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 (667) hide show
  1. package/README.CN.md +79 -68
  2. package/README.md +81 -72
  3. package/dist/_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js +8 -0
  4. package/dist/assets/menu-portal.js +3 -4
  5. package/dist/assets/menu-portal.js.map +1 -1
  6. package/dist/assets/modal-surface.js +3 -4
  7. package/dist/assets/modal-surface.js.map +1 -1
  8. package/dist/assets/overlay-motion.js +3 -4
  9. package/dist/assets/overlay-motion.js.map +1 -1
  10. package/dist/assets/scrollbar.js +5 -0
  11. package/dist/assets/scrollbar.js.map +1 -0
  12. package/dist/assets/selection-control.js +3 -4
  13. package/dist/assets/selection-control.js.map +1 -1
  14. package/dist/assets/toast-containers.js +3 -4
  15. package/dist/assets/toast-containers.js.map +1 -1
  16. package/dist/classes/glass.js +3 -4
  17. package/dist/classes/glass.js.map +1 -1
  18. package/dist/classes/glow.js +3 -4
  19. package/dist/classes/glow.js.map +1 -1
  20. package/dist/components/autocomplete/index.d.ts +485 -483
  21. package/dist/components/autocomplete/index.d.ts.map +1 -0
  22. package/dist/components/autocomplete/index.js +475 -267
  23. package/dist/components/autocomplete/index.js.map +1 -1
  24. package/dist/components/autocomplete/style.js +3 -4
  25. package/dist/components/autocomplete/style.js.map +1 -1
  26. package/dist/components/avatar/index.d.ts +26 -24
  27. package/dist/components/avatar/index.d.ts.map +1 -0
  28. package/dist/components/avatar/index.js +72 -52
  29. package/dist/components/avatar/index.js.map +1 -1
  30. package/dist/components/avatar/style.js +3 -4
  31. package/dist/components/avatar/style.js.map +1 -1
  32. package/dist/components/back-top/index.d.ts +30 -27
  33. package/dist/components/back-top/index.d.ts.map +1 -0
  34. package/dist/components/back-top/index.js +96 -62
  35. package/dist/components/back-top/index.js.map +1 -1
  36. package/dist/components/back-top/style.js +3 -4
  37. package/dist/components/back-top/style.js.map +1 -1
  38. package/dist/components/badge/index.d.ts +32 -26
  39. package/dist/components/badge/index.d.ts.map +1 -0
  40. package/dist/components/badge/index.js +116 -74
  41. package/dist/components/badge/index.js.map +1 -1
  42. package/dist/components/badge/style.js +3 -4
  43. package/dist/components/badge/style.js.map +1 -1
  44. package/dist/components/button/index.d.ts +392 -390
  45. package/dist/components/button/index.d.ts.map +1 -0
  46. package/dist/components/button/index.js +108 -74
  47. package/dist/components/button/index.js.map +1 -1
  48. package/dist/components/button/style.js +3 -4
  49. package/dist/components/button/style.js.map +1 -1
  50. package/dist/components/button-group/index.d.ts +14 -13
  51. package/dist/components/button-group/index.d.ts.map +1 -0
  52. package/dist/components/button-group/index.js +43 -33
  53. package/dist/components/button-group/index.js.map +1 -1
  54. package/dist/components/button-group/style.js +3 -4
  55. package/dist/components/button-group/style.js.map +1 -1
  56. package/dist/components/checkbox/index.d.ts +399 -397
  57. package/dist/components/checkbox/index.d.ts.map +1 -0
  58. package/dist/components/checkbox/index.js +103 -74
  59. package/dist/components/checkbox/index.js.map +1 -1
  60. package/dist/components/checkbox/style.js +3 -4
  61. package/dist/components/checkbox/style.js.map +1 -1
  62. package/dist/components/checkbox-group/index.d.ts +397 -396
  63. package/dist/components/checkbox-group/index.d.ts.map +1 -0
  64. package/dist/components/checkbox-group/index.js +92 -70
  65. package/dist/components/checkbox-group/index.js.map +1 -1
  66. package/dist/components/checkbox-group/style.js +3 -4
  67. package/dist/components/checkbox-group/style.js.map +1 -1
  68. package/dist/components/collapse/index.d.ts +72 -71
  69. package/dist/components/collapse/index.d.ts.map +1 -0
  70. package/dist/components/collapse/index.js +225 -130
  71. package/dist/components/collapse/index.js.map +1 -1
  72. package/dist/components/collapse/style.js +3 -4
  73. package/dist/components/collapse/style.js.map +1 -1
  74. package/dist/components/context-menu/index.d.ts +307 -310
  75. package/dist/components/context-menu/index.d.ts.map +1 -0
  76. package/dist/components/context-menu/index.js +685 -270
  77. package/dist/components/context-menu/index.js.map +1 -1
  78. package/dist/components/context-menu/scrim.js +3 -4
  79. package/dist/components/context-menu/scrim.js.map +1 -1
  80. package/dist/components/context-menu/style.js +3 -4
  81. package/dist/components/context-menu/style.js.map +1 -1
  82. package/dist/components/dialog/index.d.ts +87 -78
  83. package/dist/components/dialog/index.d.ts.map +1 -0
  84. package/dist/components/dialog/index.js +183 -88
  85. package/dist/components/dialog/index.js.map +1 -1
  86. package/dist/components/dialog/style.js +3 -4
  87. package/dist/components/dialog/style.js.map +1 -1
  88. package/dist/components/drawer/index.d.ts +159 -150
  89. package/dist/components/drawer/index.d.ts.map +1 -0
  90. package/dist/components/drawer/index.js +503 -242
  91. package/dist/components/drawer/index.js.map +1 -1
  92. package/dist/components/drawer/style.js +3 -4
  93. package/dist/components/drawer/style.js.map +1 -1
  94. package/dist/components/dropdown/index.d.ts +125 -124
  95. package/dist/components/dropdown/index.d.ts.map +1 -0
  96. package/dist/components/dropdown/index.js +556 -328
  97. package/dist/components/dropdown/index.js.map +1 -1
  98. package/dist/components/dropdown/style.js +3 -4
  99. package/dist/components/dropdown/style.js.map +1 -1
  100. package/dist/components/dropdown-divider/index.d.ts +7 -6
  101. package/dist/components/dropdown-divider/index.d.ts.map +1 -0
  102. package/dist/components/dropdown-divider/index.js +10 -11
  103. package/dist/components/dropdown-divider/index.js.map +1 -1
  104. package/dist/components/dropdown-divider/style.js +3 -4
  105. package/dist/components/dropdown-divider/style.js.map +1 -1
  106. package/dist/components/dropdown-header/index.d.ts +7 -6
  107. package/dist/components/dropdown-header/index.d.ts.map +1 -0
  108. package/dist/components/dropdown-header/index.js +10 -11
  109. package/dist/components/dropdown-header/index.js.map +1 -1
  110. package/dist/components/dropdown-header/style.js +3 -4
  111. package/dist/components/dropdown-header/style.js.map +1 -1
  112. package/dist/components/dropdown-item/index.d.ts +13 -11
  113. package/dist/components/dropdown-item/index.d.ts.map +1 -0
  114. package/dist/components/dropdown-item/index.js +32 -25
  115. package/dist/components/dropdown-item/index.js.map +1 -1
  116. package/dist/components/dropdown-item/style.js +3 -4
  117. package/dist/components/dropdown-item/style.js.map +1 -1
  118. package/dist/components/editable-text/index.d.ts +506 -505
  119. package/dist/components/editable-text/index.d.ts.map +1 -0
  120. package/dist/components/editable-text/index.js +281 -127
  121. package/dist/components/editable-text/index.js.map +1 -1
  122. package/dist/components/editable-text/style.js +3 -4
  123. package/dist/components/editable-text/style.js.map +1 -1
  124. package/dist/components/empty/index.d.ts +17 -15
  125. package/dist/components/empty/index.d.ts.map +1 -0
  126. package/dist/components/empty/index.js +66 -37
  127. package/dist/components/empty/index.js.map +1 -1
  128. package/dist/components/empty/style.js +3 -4
  129. package/dist/components/empty/style.js.map +1 -1
  130. package/dist/components/icon/index.d.ts +12 -11
  131. package/dist/components/icon/index.d.ts.map +1 -0
  132. package/dist/components/icon/index.js +34 -27
  133. package/dist/components/icon/index.js.map +1 -1
  134. package/dist/components/icon/style.js +3 -4
  135. package/dist/components/icon/style.js.map +1 -1
  136. package/dist/components/image-preview/index.d.ts +58 -44
  137. package/dist/components/image-preview/index.d.ts.map +1 -0
  138. package/dist/components/image-preview/index.js +536 -265
  139. package/dist/components/image-preview/index.js.map +1 -1
  140. package/dist/components/image-preview/style.js +3 -4
  141. package/dist/components/image-preview/style.js.map +1 -1
  142. package/dist/components/index.d.ts +46 -43
  143. package/dist/components/index.d.ts.map +1 -0
  144. package/dist/components/index.js +41 -41
  145. package/dist/components/input/index.d.ts +418 -413
  146. package/dist/components/input/index.d.ts.map +1 -0
  147. package/dist/components/input/index.js +148 -84
  148. package/dist/components/input/index.js.map +1 -1
  149. package/dist/components/input/style.js +3 -4
  150. package/dist/components/input/style.js.map +1 -1
  151. package/dist/components/input-number/index.d.ts +453 -447
  152. package/dist/components/input-number/index.d.ts.map +1 -0
  153. package/dist/components/input-number/index.js +484 -292
  154. package/dist/components/input-number/index.js.map +1 -1
  155. package/dist/components/input-number/style.js +3 -4
  156. package/dist/components/input-number/style.js.map +1 -1
  157. package/dist/components/layout/index.d.ts +110 -87
  158. package/dist/components/layout/index.d.ts.map +1 -0
  159. package/dist/components/layout/index.js +238 -144
  160. package/dist/components/layout/index.js.map +1 -1
  161. package/dist/components/layout/style.js +3 -4
  162. package/dist/components/layout/style.js.map +1 -1
  163. package/dist/components/middle-ellipsis/index.d.ts +93 -92
  164. package/dist/components/middle-ellipsis/index.d.ts.map +1 -0
  165. package/dist/components/middle-ellipsis/index.js +261 -107
  166. package/dist/components/middle-ellipsis/index.js.map +1 -1
  167. package/dist/components/middle-ellipsis/style.js +3 -4
  168. package/dist/components/middle-ellipsis/style.js.map +1 -1
  169. package/dist/components/middle-ellipsis/truncate.js +60 -30
  170. package/dist/components/middle-ellipsis/truncate.js.map +1 -1
  171. package/dist/components/option/index.d.ts +20 -18
  172. package/dist/components/option/index.d.ts.map +1 -0
  173. package/dist/components/option/index.js +53 -40
  174. package/dist/components/option/index.js.map +1 -1
  175. package/dist/components/option/style.js +3 -4
  176. package/dist/components/option/style.js.map +1 -1
  177. package/dist/components/popover/index.d.ts +69 -68
  178. package/dist/components/popover/index.d.ts.map +1 -0
  179. package/dist/components/popover/index.js +221 -104
  180. package/dist/components/popover/index.js.map +1 -1
  181. package/dist/components/popover/style.js +3 -4
  182. package/dist/components/popover/style.js.map +1 -1
  183. package/dist/components/radio/index.d.ts +396 -395
  184. package/dist/components/radio/index.d.ts.map +1 -0
  185. package/dist/components/radio/index.js +91 -62
  186. package/dist/components/radio/index.js.map +1 -1
  187. package/dist/components/radio/interaction.js +10 -11
  188. package/dist/components/radio/interaction.js.map +1 -1
  189. package/dist/components/radio/style.js +3 -4
  190. package/dist/components/radio/style.js.map +1 -1
  191. package/dist/components/radio-group/index.d.ts +417 -416
  192. package/dist/components/radio-group/index.d.ts.map +1 -0
  193. package/dist/components/radio-group/index.js +307 -207
  194. package/dist/components/radio-group/index.js.map +1 -1
  195. package/dist/components/radio-group/style.js +3 -4
  196. package/dist/components/radio-group/style.js.map +1 -1
  197. package/dist/components/segmented/index.d.ts +408 -402
  198. package/dist/components/segmented/index.d.ts.map +1 -0
  199. package/dist/components/segmented/index.js +267 -158
  200. package/dist/components/segmented/index.js.map +1 -1
  201. package/dist/components/segmented/style.js +3 -4
  202. package/dist/components/segmented/style.js.map +1 -1
  203. package/dist/components/segmented-trigger/index.d.ts +18 -17
  204. package/dist/components/segmented-trigger/index.d.ts.map +1 -0
  205. package/dist/components/segmented-trigger/index.js +45 -36
  206. package/dist/components/segmented-trigger/index.js.map +1 -1
  207. package/dist/components/segmented-trigger/style.js +3 -4
  208. package/dist/components/segmented-trigger/style.js.map +1 -1
  209. package/dist/components/select/index.d.ts +450 -448
  210. package/dist/components/select/index.d.ts.map +1 -0
  211. package/dist/components/select/index.js +342 -188
  212. package/dist/components/select/index.js.map +1 -1
  213. package/dist/components/select/style.js +3 -4
  214. package/dist/components/select/style.js.map +1 -1
  215. package/dist/components/slider/index.d.ts +428 -427
  216. package/dist/components/slider/index.d.ts.map +1 -0
  217. package/dist/components/slider/index.js +308 -216
  218. package/dist/components/slider/index.js.map +1 -1
  219. package/dist/components/slider/style.js +3 -4
  220. package/dist/components/slider/style.js.map +1 -1
  221. package/dist/components/spinner/index.d.ts +39 -38
  222. package/dist/components/spinner/index.d.ts.map +1 -0
  223. package/dist/components/spinner/index.js +118 -65
  224. package/dist/components/spinner/index.js.map +1 -1
  225. package/dist/components/spinner/style.js +3 -4
  226. package/dist/components/spinner/style.js.map +1 -1
  227. package/dist/components/svg-draw-lines/index.d.ts +40 -39
  228. package/dist/components/svg-draw-lines/index.d.ts.map +1 -0
  229. package/dist/components/svg-draw-lines/index.js +189 -106
  230. package/dist/components/svg-draw-lines/index.js.map +1 -1
  231. package/dist/components/svg-draw-lines/style.js +3 -4
  232. package/dist/components/svg-draw-lines/style.js.map +1 -1
  233. package/dist/components/switch/index.d.ts +411 -409
  234. package/dist/components/switch/index.d.ts.map +1 -0
  235. package/dist/components/switch/index.js +193 -106
  236. package/dist/components/switch/index.js.map +1 -1
  237. package/dist/components/switch/style.js +3 -4
  238. package/dist/components/switch/style.js.map +1 -1
  239. package/dist/components/textarea/index.d.ts +430 -425
  240. package/dist/components/textarea/index.d.ts.map +1 -0
  241. package/dist/components/textarea/index.js +187 -100
  242. package/dist/components/textarea/index.js.map +1 -1
  243. package/dist/components/textarea/style.js +3 -4
  244. package/dist/components/textarea/style.js.map +1 -1
  245. package/dist/components/theme/index.d.ts +45 -44
  246. package/dist/components/theme/index.d.ts.map +1 -0
  247. package/dist/components/theme/index.js +268 -161
  248. package/dist/components/theme/index.js.map +1 -1
  249. package/dist/components/theme/style.js +3 -4
  250. package/dist/components/theme/style.js.map +1 -1
  251. package/dist/components/toast/index.d.ts +4 -3
  252. package/dist/components/toast/index.js +3 -3
  253. package/dist/components/toast/manager.d.ts +9 -8
  254. package/dist/components/toast/manager.d.ts.map +1 -0
  255. package/dist/components/toast/manager.js +215 -119
  256. package/dist/components/toast/manager.js.map +1 -1
  257. package/dist/components/toast/style.js +3 -4
  258. package/dist/components/toast/style.js.map +1 -1
  259. package/dist/components/toast/toast.d.ts +75 -71
  260. package/dist/components/toast/toast.d.ts.map +1 -0
  261. package/dist/components/toast/toast.js +203 -96
  262. package/dist/components/toast/toast.js.map +1 -1
  263. package/dist/components/toast/types.d.ts +10 -9
  264. package/dist/components/toast/types.d.ts.map +1 -0
  265. package/dist/components/tooltip/index.d.ts +72 -62
  266. package/dist/components/tooltip/index.d.ts.map +1 -0
  267. package/dist/components/tooltip/index.js +251 -93
  268. package/dist/components/tooltip/index.js.map +1 -1
  269. package/dist/components/tooltip/style.js +3 -4
  270. package/dist/components/tooltip/style.js.map +1 -1
  271. package/dist/icons/generated/akar-icons-check.d.ts +5 -4
  272. package/dist/icons/generated/akar-icons-check.d.ts.map +1 -0
  273. package/dist/icons/generated/akar-icons-check.js +3 -4
  274. package/dist/icons/generated/akar-icons-check.js.map +1 -1
  275. package/dist/icons/generated/akar-icons-circle-check.d.ts +5 -4
  276. package/dist/icons/generated/akar-icons-circle-check.d.ts.map +1 -0
  277. package/dist/icons/generated/akar-icons-circle-check.js +3 -4
  278. package/dist/icons/generated/akar-icons-circle-check.js.map +1 -1
  279. package/dist/icons/generated/andrsrxn-inbox.d.ts +5 -4
  280. package/dist/icons/generated/andrsrxn-inbox.d.ts.map +1 -0
  281. package/dist/icons/generated/andrsrxn-inbox.js +3 -4
  282. package/dist/icons/generated/andrsrxn-inbox.js.map +1 -1
  283. package/dist/icons/generated/bi-check-lg.d.ts +5 -4
  284. package/dist/icons/generated/bi-check-lg.d.ts.map +1 -0
  285. package/dist/icons/generated/bi-check-lg.js +3 -4
  286. package/dist/icons/generated/bi-check-lg.js.map +1 -1
  287. package/dist/icons/generated/bi-check.d.ts +5 -4
  288. package/dist/icons/generated/bi-check.d.ts.map +1 -0
  289. package/dist/icons/generated/bi-check.js +3 -4
  290. package/dist/icons/generated/bi-check.js.map +1 -1
  291. package/dist/icons/generated/fluent-tag-search-24-regular.d.ts +5 -4
  292. package/dist/icons/generated/fluent-tag-search-24-regular.d.ts.map +1 -0
  293. package/dist/icons/generated/fluent-tag-search-24-regular.js +3 -4
  294. package/dist/icons/generated/fluent-tag-search-24-regular.js.map +1 -1
  295. package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.d.ts +5 -4
  296. package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.d.ts.map +1 -0
  297. package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.js +3 -4
  298. package/dist/icons/generated/heroicons-bars-arrow-down-16-solid.js.map +1 -1
  299. package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.d.ts +5 -4
  300. package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.d.ts.map +1 -0
  301. package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.js +3 -4
  302. package/dist/icons/generated/heroicons-bars-arrow-up-16-solid.js.map +1 -1
  303. package/dist/icons/generated/heroicons-check-16-solid.d.ts +5 -4
  304. package/dist/icons/generated/heroicons-check-16-solid.d.ts.map +1 -0
  305. package/dist/icons/generated/heroicons-check-16-solid.js +3 -4
  306. package/dist/icons/generated/heroicons-check-16-solid.js.map +1 -1
  307. package/dist/icons/generated/heroicons-x-mark-16-solid.d.ts +5 -4
  308. package/dist/icons/generated/heroicons-x-mark-16-solid.d.ts.map +1 -0
  309. package/dist/icons/generated/heroicons-x-mark-16-solid.js +3 -4
  310. package/dist/icons/generated/heroicons-x-mark-16-solid.js.map +1 -1
  311. package/dist/icons/generated/jam-close-circle-f.d.ts +7 -6
  312. package/dist/icons/generated/jam-close-circle-f.d.ts.map +1 -0
  313. package/dist/icons/generated/jam-close-circle-f.js +3 -4
  314. package/dist/icons/generated/jam-close-circle-f.js.map +1 -1
  315. package/dist/icons/generated/lucide-arrow-down-to-line.d.ts +5 -4
  316. package/dist/icons/generated/lucide-arrow-down-to-line.d.ts.map +1 -0
  317. package/dist/icons/generated/lucide-arrow-down-to-line.js +3 -4
  318. package/dist/icons/generated/lucide-arrow-down-to-line.js.map +1 -1
  319. package/dist/icons/generated/lucide-arrow-up-to-line.d.ts +5 -4
  320. package/dist/icons/generated/lucide-arrow-up-to-line.d.ts.map +1 -0
  321. package/dist/icons/generated/lucide-arrow-up-to-line.js +3 -4
  322. package/dist/icons/generated/lucide-arrow-up-to-line.js.map +1 -1
  323. package/dist/icons/generated/lucide-bell.d.ts +5 -4
  324. package/dist/icons/generated/lucide-bell.d.ts.map +1 -0
  325. package/dist/icons/generated/lucide-bell.js +3 -4
  326. package/dist/icons/generated/lucide-bell.js.map +1 -1
  327. package/dist/icons/generated/lucide-check.d.ts +5 -4
  328. package/dist/icons/generated/lucide-check.d.ts.map +1 -0
  329. package/dist/icons/generated/lucide-check.js +3 -4
  330. package/dist/icons/generated/lucide-check.js.map +1 -1
  331. package/dist/icons/generated/lucide-chevron-down.d.ts +5 -4
  332. package/dist/icons/generated/lucide-chevron-down.d.ts.map +1 -0
  333. package/dist/icons/generated/lucide-chevron-down.js +3 -4
  334. package/dist/icons/generated/lucide-chevron-down.js.map +1 -1
  335. package/dist/icons/generated/lucide-chevron-left.d.ts +5 -4
  336. package/dist/icons/generated/lucide-chevron-left.d.ts.map +1 -0
  337. package/dist/icons/generated/lucide-chevron-left.js +3 -4
  338. package/dist/icons/generated/lucide-chevron-left.js.map +1 -1
  339. package/dist/icons/generated/lucide-chevron-right.d.ts +5 -4
  340. package/dist/icons/generated/lucide-chevron-right.d.ts.map +1 -0
  341. package/dist/icons/generated/lucide-chevron-right.js +3 -4
  342. package/dist/icons/generated/lucide-chevron-right.js.map +1 -1
  343. package/dist/icons/generated/lucide-chevron-up.d.ts +5 -4
  344. package/dist/icons/generated/lucide-chevron-up.d.ts.map +1 -0
  345. package/dist/icons/generated/lucide-chevron-up.js +3 -4
  346. package/dist/icons/generated/lucide-chevron-up.js.map +1 -1
  347. package/dist/icons/generated/lucide-circle-alert.d.ts +5 -4
  348. package/dist/icons/generated/lucide-circle-alert.d.ts.map +1 -0
  349. package/dist/icons/generated/lucide-circle-alert.js +3 -4
  350. package/dist/icons/generated/lucide-circle-alert.js.map +1 -1
  351. package/dist/icons/generated/lucide-clapperboard.d.ts +5 -4
  352. package/dist/icons/generated/lucide-clapperboard.d.ts.map +1 -0
  353. package/dist/icons/generated/lucide-clapperboard.js +3 -4
  354. package/dist/icons/generated/lucide-clapperboard.js.map +1 -1
  355. package/dist/icons/generated/lucide-clipboard-paste.d.ts +5 -4
  356. package/dist/icons/generated/lucide-clipboard-paste.d.ts.map +1 -0
  357. package/dist/icons/generated/lucide-clipboard-paste.js +3 -4
  358. package/dist/icons/generated/lucide-clipboard-paste.js.map +1 -1
  359. package/dist/icons/generated/lucide-code.d.ts +5 -4
  360. package/dist/icons/generated/lucide-code.d.ts.map +1 -0
  361. package/dist/icons/generated/lucide-code.js +3 -4
  362. package/dist/icons/generated/lucide-code.js.map +1 -1
  363. package/dist/icons/generated/lucide-copy.d.ts +5 -4
  364. package/dist/icons/generated/lucide-copy.d.ts.map +1 -0
  365. package/dist/icons/generated/lucide-copy.js +3 -4
  366. package/dist/icons/generated/lucide-copy.js.map +1 -1
  367. package/dist/icons/generated/lucide-download.d.ts +5 -4
  368. package/dist/icons/generated/lucide-download.d.ts.map +1 -0
  369. package/dist/icons/generated/lucide-download.js +3 -4
  370. package/dist/icons/generated/lucide-download.js.map +1 -1
  371. package/dist/icons/generated/lucide-ellipsis-vertical.d.ts +5 -4
  372. package/dist/icons/generated/lucide-ellipsis-vertical.d.ts.map +1 -0
  373. package/dist/icons/generated/lucide-ellipsis-vertical.js +3 -4
  374. package/dist/icons/generated/lucide-ellipsis-vertical.js.map +1 -1
  375. package/dist/icons/generated/lucide-external-link.d.ts +5 -4
  376. package/dist/icons/generated/lucide-external-link.d.ts.map +1 -0
  377. package/dist/icons/generated/lucide-external-link.js +3 -4
  378. package/dist/icons/generated/lucide-external-link.js.map +1 -1
  379. package/dist/icons/generated/lucide-eye.d.ts +5 -4
  380. package/dist/icons/generated/lucide-eye.d.ts.map +1 -0
  381. package/dist/icons/generated/lucide-eye.js +3 -4
  382. package/dist/icons/generated/lucide-eye.js.map +1 -1
  383. package/dist/icons/generated/lucide-file-text.d.ts +5 -4
  384. package/dist/icons/generated/lucide-file-text.d.ts.map +1 -0
  385. package/dist/icons/generated/lucide-file-text.js +3 -4
  386. package/dist/icons/generated/lucide-file-text.js.map +1 -1
  387. package/dist/icons/generated/lucide-file.d.ts +5 -4
  388. package/dist/icons/generated/lucide-file.d.ts.map +1 -0
  389. package/dist/icons/generated/lucide-file.js +3 -4
  390. package/dist/icons/generated/lucide-file.js.map +1 -1
  391. package/dist/icons/generated/lucide-film.d.ts +5 -4
  392. package/dist/icons/generated/lucide-film.d.ts.map +1 -0
  393. package/dist/icons/generated/lucide-film.js +3 -4
  394. package/dist/icons/generated/lucide-film.js.map +1 -1
  395. package/dist/icons/generated/lucide-folder-open.d.ts +5 -4
  396. package/dist/icons/generated/lucide-folder-open.d.ts.map +1 -0
  397. package/dist/icons/generated/lucide-folder-open.js +3 -4
  398. package/dist/icons/generated/lucide-folder-open.js.map +1 -1
  399. package/dist/icons/generated/lucide-folder.d.ts +5 -4
  400. package/dist/icons/generated/lucide-folder.d.ts.map +1 -0
  401. package/dist/icons/generated/lucide-folder.js +3 -4
  402. package/dist/icons/generated/lucide-folder.js.map +1 -1
  403. package/dist/icons/generated/lucide-globe.d.ts +5 -4
  404. package/dist/icons/generated/lucide-globe.d.ts.map +1 -0
  405. package/dist/icons/generated/lucide-globe.js +3 -4
  406. package/dist/icons/generated/lucide-globe.js.map +1 -1
  407. package/dist/icons/generated/lucide-headphones.d.ts +5 -4
  408. package/dist/icons/generated/lucide-headphones.d.ts.map +1 -0
  409. package/dist/icons/generated/lucide-headphones.js +3 -4
  410. package/dist/icons/generated/lucide-headphones.js.map +1 -1
  411. package/dist/icons/generated/lucide-heart.d.ts +5 -4
  412. package/dist/icons/generated/lucide-heart.d.ts.map +1 -0
  413. package/dist/icons/generated/lucide-heart.js +3 -4
  414. package/dist/icons/generated/lucide-heart.js.map +1 -1
  415. package/dist/icons/generated/lucide-image.d.ts +5 -4
  416. package/dist/icons/generated/lucide-image.d.ts.map +1 -0
  417. package/dist/icons/generated/lucide-image.js +3 -4
  418. package/dist/icons/generated/lucide-image.js.map +1 -1
  419. package/dist/icons/generated/lucide-inbox.d.ts +5 -4
  420. package/dist/icons/generated/lucide-inbox.d.ts.map +1 -0
  421. package/dist/icons/generated/lucide-inbox.js +3 -4
  422. package/dist/icons/generated/lucide-inbox.js.map +1 -1
  423. package/dist/icons/generated/lucide-info.d.ts +5 -4
  424. package/dist/icons/generated/lucide-info.d.ts.map +1 -0
  425. package/dist/icons/generated/lucide-info.js +3 -4
  426. package/dist/icons/generated/lucide-info.js.map +1 -1
  427. package/dist/icons/generated/lucide-layout-grid.d.ts +5 -4
  428. package/dist/icons/generated/lucide-layout-grid.d.ts.map +1 -0
  429. package/dist/icons/generated/lucide-layout-grid.js +3 -4
  430. package/dist/icons/generated/lucide-layout-grid.js.map +1 -1
  431. package/dist/icons/generated/lucide-link.d.ts +5 -4
  432. package/dist/icons/generated/lucide-link.d.ts.map +1 -0
  433. package/dist/icons/generated/lucide-link.js +3 -4
  434. package/dist/icons/generated/lucide-link.js.map +1 -1
  435. package/dist/icons/generated/lucide-list-filter.d.ts +5 -4
  436. package/dist/icons/generated/lucide-list-filter.d.ts.map +1 -0
  437. package/dist/icons/generated/lucide-list-filter.js +3 -4
  438. package/dist/icons/generated/lucide-list-filter.js.map +1 -1
  439. package/dist/icons/generated/lucide-list-restart.d.ts +5 -4
  440. package/dist/icons/generated/lucide-list-restart.d.ts.map +1 -0
  441. package/dist/icons/generated/lucide-list-restart.js +3 -4
  442. package/dist/icons/generated/lucide-list-restart.js.map +1 -1
  443. package/dist/icons/generated/lucide-loader-circle.d.ts +5 -4
  444. package/dist/icons/generated/lucide-loader-circle.d.ts.map +1 -0
  445. package/dist/icons/generated/lucide-loader-circle.js +3 -4
  446. package/dist/icons/generated/lucide-loader-circle.js.map +1 -1
  447. package/dist/icons/generated/lucide-mail.d.ts +5 -4
  448. package/dist/icons/generated/lucide-mail.d.ts.map +1 -0
  449. package/dist/icons/generated/lucide-mail.js +3 -4
  450. package/dist/icons/generated/lucide-mail.js.map +1 -1
  451. package/dist/icons/generated/lucide-minus.d.ts +5 -4
  452. package/dist/icons/generated/lucide-minus.d.ts.map +1 -0
  453. package/dist/icons/generated/lucide-minus.js +3 -4
  454. package/dist/icons/generated/lucide-minus.js.map +1 -1
  455. package/dist/icons/generated/lucide-music.d.ts +5 -4
  456. package/dist/icons/generated/lucide-music.d.ts.map +1 -0
  457. package/dist/icons/generated/lucide-music.js +3 -4
  458. package/dist/icons/generated/lucide-music.js.map +1 -1
  459. package/dist/icons/generated/lucide-package.d.ts +5 -4
  460. package/dist/icons/generated/lucide-package.d.ts.map +1 -0
  461. package/dist/icons/generated/lucide-package.js +3 -4
  462. package/dist/icons/generated/lucide-package.js.map +1 -1
  463. package/dist/icons/generated/lucide-pen-line.d.ts +5 -4
  464. package/dist/icons/generated/lucide-pen-line.d.ts.map +1 -0
  465. package/dist/icons/generated/lucide-pen-line.js +3 -4
  466. package/dist/icons/generated/lucide-pen-line.js.map +1 -1
  467. package/dist/icons/generated/lucide-pencil.d.ts +5 -4
  468. package/dist/icons/generated/lucide-pencil.d.ts.map +1 -0
  469. package/dist/icons/generated/lucide-pencil.js +3 -4
  470. package/dist/icons/generated/lucide-pencil.js.map +1 -1
  471. package/dist/icons/generated/lucide-play.d.ts +5 -4
  472. package/dist/icons/generated/lucide-play.d.ts.map +1 -0
  473. package/dist/icons/generated/lucide-play.js +3 -4
  474. package/dist/icons/generated/lucide-play.js.map +1 -1
  475. package/dist/icons/generated/lucide-plus.d.ts +5 -4
  476. package/dist/icons/generated/lucide-plus.d.ts.map +1 -0
  477. package/dist/icons/generated/lucide-plus.js +3 -4
  478. package/dist/icons/generated/lucide-plus.js.map +1 -1
  479. package/dist/icons/generated/lucide-printer.d.ts +5 -4
  480. package/dist/icons/generated/lucide-printer.d.ts.map +1 -0
  481. package/dist/icons/generated/lucide-printer.js +3 -4
  482. package/dist/icons/generated/lucide-printer.js.map +1 -1
  483. package/dist/icons/generated/lucide-redo-2.d.ts +5 -4
  484. package/dist/icons/generated/lucide-redo-2.d.ts.map +1 -0
  485. package/dist/icons/generated/lucide-redo-2.js +3 -4
  486. package/dist/icons/generated/lucide-redo-2.js.map +1 -1
  487. package/dist/icons/generated/lucide-refresh-cw.d.ts +5 -4
  488. package/dist/icons/generated/lucide-refresh-cw.d.ts.map +1 -0
  489. package/dist/icons/generated/lucide-refresh-cw.js +3 -4
  490. package/dist/icons/generated/lucide-refresh-cw.js.map +1 -1
  491. package/dist/icons/generated/lucide-scissors.d.ts +5 -4
  492. package/dist/icons/generated/lucide-scissors.d.ts.map +1 -0
  493. package/dist/icons/generated/lucide-scissors.js +3 -4
  494. package/dist/icons/generated/lucide-scissors.js.map +1 -1
  495. package/dist/icons/generated/lucide-search.d.ts +5 -4
  496. package/dist/icons/generated/lucide-search.d.ts.map +1 -0
  497. package/dist/icons/generated/lucide-search.js +3 -4
  498. package/dist/icons/generated/lucide-search.js.map +1 -1
  499. package/dist/icons/generated/lucide-settings.d.ts +5 -4
  500. package/dist/icons/generated/lucide-settings.d.ts.map +1 -0
  501. package/dist/icons/generated/lucide-settings.js +3 -4
  502. package/dist/icons/generated/lucide-settings.js.map +1 -1
  503. package/dist/icons/generated/lucide-sliders-horizontal.d.ts +5 -4
  504. package/dist/icons/generated/lucide-sliders-horizontal.d.ts.map +1 -0
  505. package/dist/icons/generated/lucide-sliders-horizontal.js +3 -4
  506. package/dist/icons/generated/lucide-sliders-horizontal.js.map +1 -1
  507. package/dist/icons/generated/lucide-star.d.ts +5 -4
  508. package/dist/icons/generated/lucide-star.d.ts.map +1 -0
  509. package/dist/icons/generated/lucide-star.js +3 -4
  510. package/dist/icons/generated/lucide-star.js.map +1 -1
  511. package/dist/icons/generated/lucide-tag.d.ts +5 -4
  512. package/dist/icons/generated/lucide-tag.d.ts.map +1 -0
  513. package/dist/icons/generated/lucide-tag.js +3 -4
  514. package/dist/icons/generated/lucide-tag.js.map +1 -1
  515. package/dist/icons/generated/lucide-tags.d.ts +5 -4
  516. package/dist/icons/generated/lucide-tags.d.ts.map +1 -0
  517. package/dist/icons/generated/lucide-tags.js +3 -4
  518. package/dist/icons/generated/lucide-tags.js.map +1 -1
  519. package/dist/icons/generated/lucide-trash-2.d.ts +5 -4
  520. package/dist/icons/generated/lucide-trash-2.d.ts.map +1 -0
  521. package/dist/icons/generated/lucide-trash-2.js +3 -4
  522. package/dist/icons/generated/lucide-trash-2.js.map +1 -1
  523. package/dist/icons/generated/lucide-triangle-alert.d.ts +5 -4
  524. package/dist/icons/generated/lucide-triangle-alert.d.ts.map +1 -0
  525. package/dist/icons/generated/lucide-triangle-alert.js +3 -4
  526. package/dist/icons/generated/lucide-triangle-alert.js.map +1 -1
  527. package/dist/icons/generated/lucide-undo-2.d.ts +5 -4
  528. package/dist/icons/generated/lucide-undo-2.d.ts.map +1 -0
  529. package/dist/icons/generated/lucide-undo-2.js +3 -4
  530. package/dist/icons/generated/lucide-undo-2.js.map +1 -1
  531. package/dist/icons/generated/lucide-upload.d.ts +5 -4
  532. package/dist/icons/generated/lucide-upload.d.ts.map +1 -0
  533. package/dist/icons/generated/lucide-upload.js +3 -4
  534. package/dist/icons/generated/lucide-upload.js.map +1 -1
  535. package/dist/icons/generated/lucide-user.d.ts +5 -4
  536. package/dist/icons/generated/lucide-user.d.ts.map +1 -0
  537. package/dist/icons/generated/lucide-user.js +3 -4
  538. package/dist/icons/generated/lucide-user.js.map +1 -1
  539. package/dist/icons/generated/lucide-wrench.d.ts +5 -4
  540. package/dist/icons/generated/lucide-wrench.d.ts.map +1 -0
  541. package/dist/icons/generated/lucide-wrench.js +3 -4
  542. package/dist/icons/generated/lucide-wrench.js.map +1 -1
  543. package/dist/icons/generated/lucide-x.d.ts +5 -4
  544. package/dist/icons/generated/lucide-x.d.ts.map +1 -0
  545. package/dist/icons/generated/lucide-x.js +3 -4
  546. package/dist/icons/generated/lucide-x.js.map +1 -1
  547. package/dist/icons/generated/mdi-tag-search-outline.d.ts +5 -4
  548. package/dist/icons/generated/mdi-tag-search-outline.d.ts.map +1 -0
  549. package/dist/icons/generated/mdi-tag-search-outline.js +3 -4
  550. package/dist/icons/generated/mdi-tag-search-outline.js.map +1 -1
  551. package/dist/icons/generated/ooui-close.d.ts +5 -4
  552. package/dist/icons/generated/ooui-close.d.ts.map +1 -0
  553. package/dist/icons/generated/ooui-close.js +3 -4
  554. package/dist/icons/generated/ooui-close.js.map +1 -1
  555. package/dist/icons/generated/radix-icons-panel-left-minimized.d.ts +5 -4
  556. package/dist/icons/generated/radix-icons-panel-left-minimized.d.ts.map +1 -0
  557. package/dist/icons/generated/radix-icons-panel-left-minimized.js +3 -4
  558. package/dist/icons/generated/radix-icons-panel-left-minimized.js.map +1 -1
  559. package/dist/icons/generated/radix-icons-reset.d.ts +5 -4
  560. package/dist/icons/generated/radix-icons-reset.d.ts.map +1 -0
  561. package/dist/icons/generated/radix-icons-reset.js +3 -4
  562. package/dist/icons/generated/radix-icons-reset.js.map +1 -1
  563. package/dist/icons/generated/tabler-sort-ascending-letters.d.ts +5 -4
  564. package/dist/icons/generated/tabler-sort-ascending-letters.d.ts.map +1 -0
  565. package/dist/icons/generated/tabler-sort-ascending-letters.js +3 -4
  566. package/dist/icons/generated/tabler-sort-ascending-letters.js.map +1 -1
  567. package/dist/icons/index.d.ts +75 -74
  568. package/dist/icons/index.js +75 -75
  569. package/dist/shared/element-height/index.js +51 -25
  570. package/dist/shared/element-height/index.js.map +1 -1
  571. package/dist/shared/element-width/index.js +39 -24
  572. package/dist/shared/element-width/index.js.map +1 -1
  573. package/dist/shared/events/user-change.js +14 -8
  574. package/dist/shared/events/user-change.js.map +1 -1
  575. package/dist/shared/focus/pointer-focus.js +56 -30
  576. package/dist/shared/focus/pointer-focus.js.map +1 -1
  577. package/dist/shared/focus/tabbable.js +96 -0
  578. package/dist/shared/focus/tabbable.js.map +1 -0
  579. package/dist/shared/form-association/field-id.js +13 -6
  580. package/dist/shared/form-association/field-id.js.map +1 -1
  581. package/dist/shared/form-association/index.js +75 -42
  582. package/dist/shared/form-association/index.js.map +1 -1
  583. package/dist/shared/gesture/drag-gesture.js +239 -99
  584. package/dist/shared/gesture/drag-gesture.js.map +1 -1
  585. package/dist/shared/gesture/physics.js +49 -16
  586. package/dist/shared/gesture/physics.js.map +1 -1
  587. package/dist/shared/gesture/pinch-gesture.js +111 -60
  588. package/dist/shared/gesture/pinch-gesture.js.map +1 -1
  589. package/dist/shared/group-management/index.js +181 -84
  590. package/dist/shared/group-management/index.js.map +1 -1
  591. package/dist/shared/label-emptiness/index.js +45 -26
  592. package/dist/shared/label-emptiness/index.js.map +1 -1
  593. package/dist/shared/locale/builtin-labels.js +38 -0
  594. package/dist/shared/locale/builtin-labels.js.map +1 -0
  595. package/dist/shared/menu-behavior/index.js +113 -60
  596. package/dist/shared/menu-behavior/index.js.map +1 -1
  597. package/dist/shared/menu-portal/menu-portal.js +47 -26
  598. package/dist/shared/menu-portal/menu-portal.js.map +1 -1
  599. package/dist/shared/menu-portal/menu-tree.js +132 -75
  600. package/dist/shared/menu-portal/menu-tree.js.map +1 -1
  601. package/dist/shared/normalize/index.js +16 -7
  602. package/dist/shared/normalize/index.js.map +1 -1
  603. package/dist/shared/open-state/index.js +7 -8
  604. package/dist/shared/open-state/index.js.map +1 -1
  605. package/dist/shared/option-portal/combobox-shell.js +121 -56
  606. package/dist/shared/option-portal/combobox-shell.js.map +1 -1
  607. package/dist/shared/option-portal/index.js +65 -44
  608. package/dist/shared/option-portal/index.js.map +1 -1
  609. package/dist/shared/overlay/anchored-panel.js +75 -40
  610. package/dist/shared/overlay/anchored-panel.js.map +1 -1
  611. package/dist/shared/overlay/native-dialog-presence.js +116 -52
  612. package/dist/shared/overlay/native-dialog-presence.js.map +1 -1
  613. package/dist/shared/overlay/nested-drawer-layers.js +76 -46
  614. package/dist/shared/overlay/nested-drawer-layers.js.map +1 -1
  615. package/dist/shared/overlay/open-overlay.js +240 -136
  616. package/dist/shared/overlay/open-overlay.js.map +1 -1
  617. package/dist/shared/overlay/overlay-root.js +33 -24
  618. package/dist/shared/overlay/overlay-root.js.map +1 -1
  619. package/dist/shared/overlay/overlay.js +109 -66
  620. package/dist/shared/overlay/overlay.js.map +1 -1
  621. package/dist/shared/overlay/placement-props.js +9 -4
  622. package/dist/shared/overlay/placement-props.js.map +1 -1
  623. package/dist/shared/overlay/portal.d.ts +2 -0
  624. package/dist/shared/overlay/portal.d.ts.map +1 -0
  625. package/dist/shared/overlay/portal.js +202 -117
  626. package/dist/shared/overlay/portal.js.map +1 -1
  627. package/dist/shared/overlay/positioning-generation.js +9 -10
  628. package/dist/shared/overlay/positioning-generation.js.map +1 -1
  629. package/dist/shared/overlay/presence.js +43 -21
  630. package/dist/shared/overlay/presence.js.map +1 -1
  631. package/dist/shared/overlay/theme-overlay-scope.js +22 -19
  632. package/dist/shared/overlay/theme-overlay-scope.js.map +1 -1
  633. package/dist/shared/scroll-lock/scroll-lock.js +49 -15
  634. package/dist/shared/scroll-lock/scroll-lock.js.map +1 -1
  635. package/dist/shared/theme/duration.js +13 -6
  636. package/dist/shared/theme/duration.js.map +1 -1
  637. package/dist/shared/theme/reduced-motion.js +14 -9
  638. package/dist/shared/theme/reduced-motion.js.map +1 -1
  639. package/dist/shared/theme/root-sync.js +85 -32
  640. package/dist/shared/theme/root-sync.js.map +1 -1
  641. package/dist/shared/visible-area/index.js +81 -37
  642. package/dist/shared/visible-area/index.js.map +1 -1
  643. package/dist/types/iconify.d.ts +1 -1
  644. package/dist/types/iconify.js +0 -0
  645. package/dist/types/react.d.ts +8 -10
  646. package/dist/types/react.d.ts.map +1 -0
  647. package/dist/types/react.js +0 -0
  648. package/dist/types/utils.d.ts +8 -13
  649. package/dist/types/utils.d.ts.map +1 -0
  650. package/dist/types/utils.js +0 -0
  651. package/dist/types/vue.d.ts +9 -13
  652. package/dist/types/vue.d.ts.map +1 -0
  653. package/dist/types/vue.js +0 -0
  654. package/dist/vite/index.d.ts +1 -0
  655. package/dist/vite/index.d.ts.map +1 -0
  656. package/dist/vite/index.js +30 -4
  657. package/dist/vite/index.js.map +1 -1
  658. package/package.json +10 -23
  659. package/dist/_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js +0 -9
  660. package/dist/components/middle-ellipsis/truncate.d.ts +0 -62
  661. package/dist/components/radio/interaction.d.ts +0 -4
  662. package/dist/scrollbars/index.d.ts +0 -33
  663. package/dist/scrollbars/index.js +0 -18
  664. package/dist/scrollbars/index.js.map +0 -1
  665. package/dist/scrollbars/internal.js +0 -6
  666. package/dist/scrollbars/internal.js.map +0 -1
  667. package/dist/scrollbars/style.css +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/slider/index.ts"],"sourcesContent":["import { html, LitElement, nothing, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport glass from '@/classes/glass.css?inline'\nimport { installPointerFocusSuppression } from '@/shared/focus/pointer-focus'\nimport { FormAssociated, defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { createFieldId } from '@/shared/form-association/field-id'\nimport { attachDragGesture, type DragGestureHandle } from '@/shared/gesture/drag-gesture'\nimport { clamp } from '@/shared/gesture/physics'\nimport { normalizeNumber } from '@/shared/normalize'\n\nimport style from './style.css?inline'\n\nconst POINTER_DRAG_THRESHOLD = 6\n\ninstallPointerFocusSuppression()\n\n@customElement('web-ui-slider')\nexport class WebUiSlider extends FormAssociated(LitElement) {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) marks = false\n @property({ type: Boolean, reflect: true }) vertical = false\n @property({ type: String, reflect: true }) name = ''\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: String, attribute: 'aria-label' }) override ariaLabel: string | null = null\n @property({ type: String, attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined\n\n private readonly _fieldId = createFieldId('web-ui-slider')\n private _renderedLabelledbyText = ''\n private _labelledbyControlTargets = new Set<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>()\n private readonly _labelledbyObserver = new MutationObserver(() => {\n const labelledbyText = this._getLabelledbyText()\n if (labelledbyText !== this._renderedLabelledbyText) this.requestUpdate()\n this._observeLabelledbyTargets()\n })\n private readonly _handleLabelledbyControlValueChange = () => {\n const labelledbyText = this._getLabelledbyText()\n if (labelledbyText !== this._renderedLabelledbyText) this.requestUpdate()\n }\n\n // value 使用访问器模式同步表单关联状态。\n private _value = 0\n @property({ type: Number, reflect: true })\n get value(): number {\n return this._value\n }\n set value(v: number) {\n const normalized = normalizeNumber(v, -Infinity, Infinity, 0)\n const old = this._value\n this._value = normalized\n this._formAssociation.sync()\n this.requestUpdate('value', old)\n }\n\n private _min = 0\n @property({ type: Number, reflect: true })\n get min(): number {\n return this._min\n }\n set min(v: number) {\n this._min = normalizeNumber(v, -Infinity, Infinity, 0)\n }\n\n private _max = 100\n @property({ type: Number, reflect: true })\n get max(): number {\n return this._max\n }\n set max(v: number) {\n this._max = normalizeNumber(v, -Infinity, Infinity, 100)\n }\n\n private _step = 1\n @property({ type: Number, reflect: true })\n get step(): number {\n return this._step\n }\n set step(v: number) {\n this._step = normalizeNumber(v, -Infinity, Infinity, 1)\n }\n\n @state() private _dragging = false\n @state() private _pressed = false\n // 避免未改变数值的点击被误认为一次表单提交\n private _interactionStartValue: number | undefined\n private _dragGestureHandle: DragGestureHandle | null = null\n\n override disconnectedCallback() {\n this._labelledbyObserver.disconnect()\n this._syncLabelledbyControlTargets(new Set())\n super.disconnectedCallback()\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = null\n }\n\n override connectedCallback() {\n super.connectedCallback()\n this._observeLabelledbyTargets()\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('ariaLabelledby')) this._observeLabelledbyTargets()\n }\n\n private readonly _formAssociation = defineFormAssociation<number>({\n host: this,\n initialize: () => {\n this._value = this._normalizeValue(this._value)\n },\n getState: () => this._value,\n setState: value => {\n this.value = value\n },\n getFormValue: () => String(this._value),\n getFormState: () => String(this._value),\n restoreState: state => {\n if (typeof state !== 'string') return\n const value = Number(state)\n if (Number.isFinite(value)) this.value = value\n },\n syncValidity: internals => {\n if (typeof internals.setValidity === 'function') internals.setValidity({})\n }\n }).make()\n\n private readonly _formAssociationController = new FormAssociationController(this, this._formAssociation)\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formAssociation.isFormDisabled()\n }\n\n override willUpdate(changed: Map<string, unknown>) {\n if (changed.has('value') || changed.has('min') || changed.has('max') || changed.has('step')) {\n const normalizedValue = this._normalizeValue(this.value)\n if (normalizedValue !== this.value) this.value = normalizedValue\n }\n }\n\n override focus(options?: FocusOptions) {\n this._slider?.focus(options)\n }\n\n override blur() {\n this._slider?.blur()\n }\n\n private get _slider(): HTMLDivElement | null {\n return this.renderRoot.querySelector<HTMLDivElement>('[role=\"slider\"]')\n }\n\n private get _range(): number {\n return Math.max(0, this.max - this.min)\n }\n\n private get _percent(): number {\n return this._range === 0 ? 0 : ((this.value - this.min) / this._range) * 100\n }\n\n private get _markValues(): number[] {\n if (!this.marks || this._range === 0) return []\n const count = Math.min(100, Math.floor(this._range / this._safeStep))\n return Array.from({ length: count + 1 }, (_, index) => this.min + index * this._safeStep)\n }\n\n private get _safeStep(): number {\n return Number.isFinite(this.step) && this.step > 0 ? this.step : 1\n }\n\n private _getLabelledbyText(): string {\n if (!this.ariaLabelledby) return ''\n\n const root = this.getRootNode()\n if (!(root instanceof Document || root instanceof ShadowRoot)) return ''\n\n return this.ariaLabelledby\n .trim()\n .split(/\\s+/)\n .filter(Boolean)\n .map(id => this._getReferencedTextAlternative(root, id))\n .filter(Boolean)\n .join(' ')\n }\n\n private _getReferencedTextAlternative(root: Document | ShadowRoot, id: string, visited = new Set<Element>()): string {\n const escapedId = typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(id) : id\n const element = root.querySelector(`#${escapedId}`)\n if (!element || visited.has(element)) return ''\n visited.add(element)\n\n const hiddenReferenceRoot = this._isHiddenFromAccessibleName(element) ? element : undefined\n return this._getElementTextAlternative(root, element, visited, true, hiddenReferenceRoot)\n }\n\n private _getElementTextAlternative(\n root: Document | ShadowRoot,\n element: Element,\n visited: Set<Element>,\n directlyReferenced = false,\n hiddenReferenceRoot?: Element\n ): string {\n if (!directlyReferenced && this._isHiddenFromAccessibleName(element, hiddenReferenceRoot)) return ''\n\n const labelledby = element.getAttribute('aria-labelledby')\n if (labelledby) {\n const text = labelledby\n .trim()\n .split(/\\s+/)\n .map(referencedId => this._getReferencedTextAlternative(root, referencedId, visited))\n .filter(Boolean)\n .join(' ')\n if (text) return text\n }\n\n const ariaLabel = element.getAttribute('aria-label')?.trim()\n if (ariaLabel) return ariaLabel\n\n if (\n element instanceof HTMLInputElement ||\n element instanceof HTMLTextAreaElement ||\n element instanceof HTMLSelectElement\n ) {\n return element.value.trim()\n }\n\n if (element.localName === 'img') {\n const alt = element.getAttribute('alt')?.trim()\n if (alt) return alt\n }\n\n const content = Array.from(element.childNodes)\n .map(node => {\n if (node.nodeType === Node.TEXT_NODE) return node.textContent?.trim() ?? ''\n if (node instanceof Element) {\n if (visited.has(node)) return ''\n visited.add(node)\n return this._getElementTextAlternative(root, node, visited, false, hiddenReferenceRoot)\n }\n return ''\n })\n .filter(Boolean)\n .join(' ')\n\n return content || element.getAttribute('title')?.trim() || ''\n }\n\n private _isHiddenFromAccessibleName(element: Element, ignoredAncestor?: Element): boolean {\n let current: Element | null = element\n while (current && current !== ignoredAncestor) {\n if (current.hasAttribute('hidden') || current.getAttribute('aria-hidden') === 'true') return true\n\n const style = current.ownerDocument.defaultView?.getComputedStyle(current)\n if (style?.display === 'none' || style?.visibility === 'hidden' || style?.visibility === 'collapse') return true\n\n current = current.parentElement\n }\n return false\n }\n\n private _observeLabelledbyTargets() {\n this._labelledbyObserver.disconnect()\n if (!this.ariaLabelledby || !this.isConnected) {\n this._syncLabelledbyControlTargets(new Set())\n return\n }\n\n const root = this.getRootNode()\n if (!(root instanceof Document || root instanceof ShadowRoot)) {\n this._syncLabelledbyControlTargets(new Set())\n return\n }\n\n const pendingIds = this.ariaLabelledby.trim().split(/\\s+/).filter(Boolean)\n const visitedIds = new Set<string>()\n const targets = new Set<Element>()\n\n while (pendingIds.length) {\n const id = pendingIds.pop()!\n if (visitedIds.has(id)) continue\n visitedIds.add(id)\n\n const escapedId = typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(id) : id\n const target = root.querySelector(`#${escapedId}`)\n if (!target) continue\n\n targets.add(target)\n const nestedLabelledby = target.getAttribute('aria-labelledby')\n if (nestedLabelledby) pendingIds.push(...nestedLabelledby.trim().split(/\\s+/).filter(Boolean))\n }\n\n this._syncLabelledbyControlTargets(\n new Set(\n [...targets].filter(\n (target): target is HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement =>\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n )\n )\n )\n\n const structuralTargets = new Set<Node>()\n for (const target of targets) {\n this._labelledbyObserver.observe(target, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: [\n 'alt',\n 'aria-hidden',\n 'aria-label',\n 'aria-labelledby',\n 'class',\n 'hidden',\n 'id',\n 'style',\n 'title',\n 'value'\n ]\n })\n\n let ancestor = target.parentNode\n while (ancestor && ancestor !== root) {\n if (!(ancestor instanceof Element && targets.has(ancestor))) structuralTargets.add(ancestor)\n ancestor = ancestor.parentNode\n }\n }\n\n for (const target of structuralTargets) {\n this._labelledbyObserver.observe(target, {\n childList: true,\n attributes: true,\n attributeFilter: ['aria-hidden', 'class', 'hidden', 'style']\n })\n }\n\n const missingTargets = visitedIds.size !== targets.size\n this._labelledbyObserver.observe(root, {\n childList: true,\n subtree: missingTargets,\n attributes: missingTargets,\n attributeFilter: missingTargets ? ['aria-hidden', 'class', 'hidden', 'id', 'style'] : undefined\n })\n }\n\n private _syncLabelledbyControlTargets(targets: Set<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) {\n for (const target of this._labelledbyControlTargets) {\n if (targets.has(target)) continue\n target.removeEventListener('input', this._handleLabelledbyControlValueChange)\n target.removeEventListener('change', this._handleLabelledbyControlValueChange)\n }\n\n for (const target of targets) {\n if (this._labelledbyControlTargets.has(target)) continue\n target.addEventListener('input', this._handleLabelledbyControlValueChange)\n target.addEventListener('change', this._handleLabelledbyControlValueChange)\n }\n\n this._labelledbyControlTargets = targets\n }\n\n private _normalizeValue(value: number): number {\n if (!Number.isFinite(value)) return this.min\n const lower = Math.min(this.min, this.max)\n const upper = Math.max(this.min, this.max)\n const clamped = clamp(value, lower, upper)\n const steps = Math.round((clamped - lower) / this._safeStep)\n // 对齐到 step 网格后必须再收敛一次:`round` 会把值推到网格外侧\n // (max=100 / step=15 → 7 * 15 = 105),不收敛就会突破 max,\n // 连带 aria-valuenow 与 --percent 溢出 track。\n const snapped = Number((lower + steps * this._safeStep).toFixed(this._precision))\n return clamp(snapped, lower, upper)\n }\n\n private get _precision(): number {\n return Math.max(this._decimalPlaces(this.min), this._decimalPlaces(this.max), this._decimalPlaces(this._safeStep))\n }\n\n private _decimalPlaces(value: number): number {\n const [, decimal = ''] = String(value).split('.')\n return decimal.length\n }\n\n private _setValue(value: number): boolean {\n if (this._isDisabled) return false\n const nextValue = this._normalizeValue(value)\n if (nextValue === this.value) return false\n this.value = nextValue\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n return true\n }\n\n private _setValueFromPointer(event: PointerEvent): boolean {\n const track = this._slider\n if (!track) return false\n const rect = track.getBoundingClientRect()\n if (this.vertical) {\n if (rect.height <= 0) return false\n // 视觉上的数值从下往上增长,与坐标系相反。\n const ratio = clamp(1 - (event.clientY - rect.top) / rect.height, 0, 1)\n return this._setValue(this.min + ratio * this._range)\n }\n if (rect.width <= 0) return false\n const ratio = clamp((event.clientX - rect.left) / rect.width, 0, 1)\n return this._setValue(this.min + ratio * this._range)\n }\n\n private _handlePointerDown(event: PointerEvent) {\n if (this._isDisabled) return\n this._pressed = true\n this._interactionStartValue = this.value\n\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = attachDragGesture(event, {\n axis: this.vertical ? 'y' : 'x',\n threshold: POINTER_DRAG_THRESHOLD,\n onMove: (_info, e) => {\n this._dragging = true\n this._setValueFromPointer(e)\n },\n onEnd: (_info, e) => {\n this._setValueFromPointer(e)\n this._pressed = false\n this._dragging = false\n if (this._interactionStartValue !== this.value) {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n this._interactionStartValue = undefined\n },\n onTap: (info, e) => {\n const crossAxisDelta = this.vertical ? info.deltaX : info.deltaY\n if (Math.abs(crossAxisDelta) >= POINTER_DRAG_THRESHOLD) return\n\n this._setValueFromPointer(e)\n if (this._interactionStartValue !== this.value) {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n },\n onCancel: () => {\n this._pressed = false\n this._dragging = false\n this._interactionStartValue = undefined\n }\n })\n }\n\n private _handleKeyDown(event: KeyboardEvent) {\n if (this._isDisabled) return\n const pageStep = this._safeStep * 10\n const keyValues: Record<string, number> = {\n ArrowDown: this.value - this._safeStep,\n ArrowLeft: this.value - this._safeStep,\n ArrowUp: this.value + this._safeStep,\n ArrowRight: this.value + this._safeStep,\n PageDown: this.value - pageStep,\n PageUp: this.value + pageStep,\n Home: this.min,\n End: this.max\n }\n const nextValue = keyValues[event.key]\n if (nextValue === undefined) return\n event.preventDefault()\n if (this._setValue(nextValue)) this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n override render() {\n const trackClass = classMap({\n 'wui-slider-track': true,\n 'is-dragging': this._dragging,\n 'is-disabled': this._isDisabled\n })\n const thumbClass = classMap({\n 'wui-slider-thumb': true,\n 'wui-glass': true,\n 'is-pressed': this._pressed,\n 'is-dragging': this._dragging\n })\n const trackStyle = styleMap({ '--percent': `${this._percent}%` })\n const labelledbyText = this._getLabelledbyText()\n this._renderedLabelledbyText = labelledbyText\n const labelledbyId = `${this._fieldId}-label`\n\n return html`\n ${labelledbyText ? html`<span class=\"wui-slider-a11y-only\" id=${labelledbyId}>${labelledbyText}</span>` : nothing}\n <div\n class=${trackClass}\n style=${trackStyle}\n role=\"slider\"\n tabindex=${this._isDisabled ? '-1' : '0'}\n aria-label=${ifDefined(this.ariaLabel)}\n aria-labelledby=${labelledbyText ? labelledbyId : nothing}\n aria-orientation=${this.vertical ? 'vertical' : 'horizontal'}\n aria-valuemin=${this.min}\n aria-valuemax=${this.max}\n aria-valuenow=${this.value}\n aria-disabled=${String(this._isDisabled)}\n @keydown=${this._handleKeyDown}\n @pointerdown=${this._handlePointerDown}\n >\n <div class=\"wui-slider-progress\"></div>\n <div class=\"wui-slider-marks\">\n ${this._markValues.map(\n mark =>\n html`<span\n class=\"wui-slider-mark\"\n style=${styleMap({ '--percent': `${((mark - this.min) / this._range) * 100}%` })}\n ></span>`\n )}\n </div>\n <div class=${thumbClass}></div>\n </div>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-slider': WebUiSlider\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["glass","style"],"sources":["../../../src/components/slider/index.ts"],"sourcesContent":["import { html, LitElement, nothing, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport glass from '@/classes/glass.css?inline'\nimport { installPointerFocusSuppression } from '@/shared/focus/pointer-focus'\nimport { FormAssociated, defineFormAssociation, FormAssociationController } from '@/shared/form-association'\nimport { createFieldId } from '@/shared/form-association/field-id'\nimport { attachDragGesture, type DragGestureHandle } from '@/shared/gesture/drag-gesture'\nimport { clamp } from '@/shared/gesture/physics'\nimport { normalizeNumber } from '@/shared/normalize'\n\nimport style from './style.css?inline'\n\nconst POINTER_DRAG_THRESHOLD = 6\n\ninstallPointerFocusSuppression()\n\n@customElement('web-ui-slider')\nexport class WebUiSlider extends FormAssociated(LitElement) {\n static override styles = [unsafeCSS(glass), unsafeCSS(style)]\n\n @property({ type: Boolean, reflect: true }) disabled = false\n @property({ type: Boolean, reflect: true }) marks = false\n @property({ type: Boolean, reflect: true }) vertical = false\n @property({ type: String, reflect: true }) name = ''\n @property({ type: Boolean, reflect: true }) required = false\n @property({ type: String, attribute: 'aria-label' }) override ariaLabel: string | null = null\n @property({ type: String, attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined\n\n private readonly _fieldId = createFieldId('web-ui-slider')\n private _renderedLabelledbyText = ''\n private _labelledbyControlTargets = new Set<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>()\n private readonly _labelledbyObserver = new MutationObserver(() => {\n const labelledbyText = this._getLabelledbyText()\n if (labelledbyText !== this._renderedLabelledbyText) this.requestUpdate()\n this._observeLabelledbyTargets()\n })\n private readonly _handleLabelledbyControlValueChange = () => {\n const labelledbyText = this._getLabelledbyText()\n if (labelledbyText !== this._renderedLabelledbyText) this.requestUpdate()\n }\n\n // value 使用访问器模式同步表单关联状态。\n private _value = 0\n @property({ type: Number, reflect: true })\n get value(): number {\n return this._value\n }\n set value(v: number) {\n const normalized = normalizeNumber(v, -Infinity, Infinity, 0)\n const old = this._value\n this._value = normalized\n this._formAssociation.sync()\n this.requestUpdate('value', old)\n }\n\n private _min = 0\n @property({ type: Number, reflect: true })\n get min(): number {\n return this._min\n }\n set min(v: number) {\n this._min = normalizeNumber(v, -Infinity, Infinity, 0)\n }\n\n private _max = 100\n @property({ type: Number, reflect: true })\n get max(): number {\n return this._max\n }\n set max(v: number) {\n this._max = normalizeNumber(v, -Infinity, Infinity, 100)\n }\n\n private _step = 1\n @property({ type: Number, reflect: true })\n get step(): number {\n return this._step\n }\n set step(v: number) {\n this._step = normalizeNumber(v, -Infinity, Infinity, 1)\n }\n\n @state() private _dragging = false\n @state() private _pressed = false\n // 避免未改变数值的点击被误认为一次表单提交\n private _interactionStartValue: number | undefined\n private _dragGestureHandle: DragGestureHandle | null = null\n\n override disconnectedCallback() {\n this._labelledbyObserver.disconnect()\n this._syncLabelledbyControlTargets(new Set())\n super.disconnectedCallback()\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = null\n }\n\n override connectedCallback() {\n super.connectedCallback()\n this._observeLabelledbyTargets()\n }\n\n override updated(changed: Map<string, unknown>) {\n if (changed.has('ariaLabelledby')) this._observeLabelledbyTargets()\n }\n\n private readonly _formAssociation = defineFormAssociation<number>({\n host: this,\n initialize: () => {\n this._value = this._normalizeValue(this._value)\n },\n getState: () => this._value,\n setState: value => {\n this.value = value\n },\n getFormValue: () => String(this._value),\n getFormState: () => String(this._value),\n restoreState: state => {\n if (typeof state !== 'string') return\n const value = Number(state)\n if (Number.isFinite(value)) this.value = value\n },\n syncValidity: internals => {\n if (typeof internals.setValidity === 'function') internals.setValidity({})\n }\n }).make()\n\n private readonly _formAssociationController = new FormAssociationController(this, this._formAssociation)\n\n private get _isDisabled(): boolean {\n return this.disabled || this._formAssociation.isFormDisabled()\n }\n\n override willUpdate(changed: Map<string, unknown>) {\n if (changed.has('value') || changed.has('min') || changed.has('max') || changed.has('step')) {\n const normalizedValue = this._normalizeValue(this.value)\n if (normalizedValue !== this.value) this.value = normalizedValue\n }\n }\n\n override focus(options?: FocusOptions) {\n this._slider?.focus(options)\n }\n\n override blur() {\n this._slider?.blur()\n }\n\n private get _slider(): HTMLDivElement | null {\n return this.renderRoot.querySelector<HTMLDivElement>('[role=\"slider\"]')\n }\n\n private get _range(): number {\n return Math.max(0, this.max - this.min)\n }\n\n private get _percent(): number {\n return this._range === 0 ? 0 : ((this.value - this.min) / this._range) * 100\n }\n\n private get _markValues(): number[] {\n if (!this.marks || this._range === 0) return []\n const count = Math.min(100, Math.floor(this._range / this._safeStep))\n return Array.from({ length: count + 1 }, (_, index) => this.min + index * this._safeStep)\n }\n\n private get _safeStep(): number {\n return Number.isFinite(this.step) && this.step > 0 ? this.step : 1\n }\n\n private _getLabelledbyText(): string {\n if (!this.ariaLabelledby) return ''\n\n const root = this.getRootNode()\n if (!(root instanceof Document || root instanceof ShadowRoot)) return ''\n\n return this.ariaLabelledby\n .trim()\n .split(/\\s+/)\n .filter(Boolean)\n .map(id => this._getReferencedTextAlternative(root, id))\n .filter(Boolean)\n .join(' ')\n }\n\n private _getReferencedTextAlternative(root: Document | ShadowRoot, id: string, visited = new Set<Element>()): string {\n const escapedId = typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(id) : id\n const element = root.querySelector(`#${escapedId}`)\n if (!element || visited.has(element)) return ''\n visited.add(element)\n\n const hiddenReferenceRoot = this._isHiddenFromAccessibleName(element) ? element : undefined\n return this._getElementTextAlternative(root, element, visited, true, hiddenReferenceRoot)\n }\n\n private _getElementTextAlternative(\n root: Document | ShadowRoot,\n element: Element,\n visited: Set<Element>,\n directlyReferenced = false,\n hiddenReferenceRoot?: Element\n ): string {\n if (!directlyReferenced && this._isHiddenFromAccessibleName(element, hiddenReferenceRoot)) return ''\n\n const labelledby = element.getAttribute('aria-labelledby')\n if (labelledby) {\n const text = labelledby\n .trim()\n .split(/\\s+/)\n .map(referencedId => this._getReferencedTextAlternative(root, referencedId, visited))\n .filter(Boolean)\n .join(' ')\n if (text) return text\n }\n\n const ariaLabel = element.getAttribute('aria-label')?.trim()\n if (ariaLabel) return ariaLabel\n\n if (\n element instanceof HTMLInputElement ||\n element instanceof HTMLTextAreaElement ||\n element instanceof HTMLSelectElement\n ) {\n return element.value.trim()\n }\n\n if (element.localName === 'img') {\n const alt = element.getAttribute('alt')?.trim()\n if (alt) return alt\n }\n\n const content = Array.from(element.childNodes)\n .map(node => {\n if (node.nodeType === Node.TEXT_NODE) return node.textContent?.trim() ?? ''\n if (node instanceof Element) {\n if (visited.has(node)) return ''\n visited.add(node)\n return this._getElementTextAlternative(root, node, visited, false, hiddenReferenceRoot)\n }\n return ''\n })\n .filter(Boolean)\n .join(' ')\n\n return content || element.getAttribute('title')?.trim() || ''\n }\n\n private _isHiddenFromAccessibleName(element: Element, ignoredAncestor?: Element): boolean {\n let current: Element | null = element\n while (current && current !== ignoredAncestor) {\n if (current.hasAttribute('hidden') || current.getAttribute('aria-hidden') === 'true') return true\n\n const style = current.ownerDocument.defaultView?.getComputedStyle(current)\n if (style?.display === 'none' || style?.visibility === 'hidden' || style?.visibility === 'collapse') return true\n\n current = current.parentElement\n }\n return false\n }\n\n private _observeLabelledbyTargets() {\n this._labelledbyObserver.disconnect()\n if (!this.ariaLabelledby || !this.isConnected) {\n this._syncLabelledbyControlTargets(new Set())\n return\n }\n\n const root = this.getRootNode()\n if (!(root instanceof Document || root instanceof ShadowRoot)) {\n this._syncLabelledbyControlTargets(new Set())\n return\n }\n\n const pendingIds = this.ariaLabelledby.trim().split(/\\s+/).filter(Boolean)\n const visitedIds = new Set<string>()\n const targets = new Set<Element>()\n\n while (pendingIds.length) {\n const id = pendingIds.pop()!\n if (visitedIds.has(id)) continue\n visitedIds.add(id)\n\n const escapedId = typeof CSS !== 'undefined' && CSS.escape ? CSS.escape(id) : id\n const target = root.querySelector(`#${escapedId}`)\n if (!target) continue\n\n targets.add(target)\n const nestedLabelledby = target.getAttribute('aria-labelledby')\n if (nestedLabelledby) pendingIds.push(...nestedLabelledby.trim().split(/\\s+/).filter(Boolean))\n }\n\n this._syncLabelledbyControlTargets(\n new Set(\n [...targets].filter(\n (target): target is HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement =>\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement\n )\n )\n )\n\n const structuralTargets = new Set<Node>()\n for (const target of targets) {\n this._labelledbyObserver.observe(target, {\n subtree: true,\n childList: true,\n characterData: true,\n attributes: true,\n attributeFilter: [\n 'alt',\n 'aria-hidden',\n 'aria-label',\n 'aria-labelledby',\n 'class',\n 'hidden',\n 'id',\n 'style',\n 'title',\n 'value'\n ]\n })\n\n let ancestor = target.parentNode\n while (ancestor && ancestor !== root) {\n if (!(ancestor instanceof Element && targets.has(ancestor))) structuralTargets.add(ancestor)\n ancestor = ancestor.parentNode\n }\n }\n\n for (const target of structuralTargets) {\n this._labelledbyObserver.observe(target, {\n childList: true,\n attributes: true,\n attributeFilter: ['aria-hidden', 'class', 'hidden', 'style']\n })\n }\n\n const missingTargets = visitedIds.size !== targets.size\n this._labelledbyObserver.observe(root, {\n childList: true,\n subtree: missingTargets,\n attributes: missingTargets,\n attributeFilter: missingTargets ? ['aria-hidden', 'class', 'hidden', 'id', 'style'] : undefined\n })\n }\n\n private _syncLabelledbyControlTargets(targets: Set<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) {\n for (const target of this._labelledbyControlTargets) {\n if (targets.has(target)) continue\n target.removeEventListener('input', this._handleLabelledbyControlValueChange)\n target.removeEventListener('change', this._handleLabelledbyControlValueChange)\n }\n\n for (const target of targets) {\n if (this._labelledbyControlTargets.has(target)) continue\n target.addEventListener('input', this._handleLabelledbyControlValueChange)\n target.addEventListener('change', this._handleLabelledbyControlValueChange)\n }\n\n this._labelledbyControlTargets = targets\n }\n\n private _normalizeValue(value: number): number {\n if (!Number.isFinite(value)) return this.min\n const lower = Math.min(this.min, this.max)\n const upper = Math.max(this.min, this.max)\n const clamped = clamp(value, lower, upper)\n const steps = Math.round((clamped - lower) / this._safeStep)\n // 对齐到 step 网格后必须再收敛一次:`round` 会把值推到网格外侧\n // (max=100 / step=15 → 7 * 15 = 105),不收敛就会突破 max,\n // 连带 aria-valuenow 与 --percent 溢出 track。\n const snapped = Number((lower + steps * this._safeStep).toFixed(this._precision))\n return clamp(snapped, lower, upper)\n }\n\n private get _precision(): number {\n return Math.max(this._decimalPlaces(this.min), this._decimalPlaces(this.max), this._decimalPlaces(this._safeStep))\n }\n\n private _decimalPlaces(value: number): number {\n const [, decimal = ''] = String(value).split('.')\n return decimal.length\n }\n\n private _setValue(value: number): boolean {\n if (this._isDisabled) return false\n const nextValue = this._normalizeValue(value)\n if (nextValue === this.value) return false\n this.value = nextValue\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }))\n return true\n }\n\n private _setValueFromPointer(event: PointerEvent): boolean {\n const track = this._slider\n if (!track) return false\n const rect = track.getBoundingClientRect()\n if (this.vertical) {\n if (rect.height <= 0) return false\n // 视觉上的数值从下往上增长,与坐标系相反。\n const ratio = clamp(1 - (event.clientY - rect.top) / rect.height, 0, 1)\n return this._setValue(this.min + ratio * this._range)\n }\n if (rect.width <= 0) return false\n const ratio = clamp((event.clientX - rect.left) / rect.width, 0, 1)\n return this._setValue(this.min + ratio * this._range)\n }\n\n private _handlePointerDown(event: PointerEvent) {\n if (this._isDisabled) return\n this._pressed = true\n this._interactionStartValue = this.value\n\n this._dragGestureHandle?.destroy()\n this._dragGestureHandle = attachDragGesture(event, {\n axis: this.vertical ? 'y' : 'x',\n threshold: POINTER_DRAG_THRESHOLD,\n onMove: (_info, e) => {\n this._dragging = true\n this._setValueFromPointer(e)\n },\n onEnd: (_info, e) => {\n this._setValueFromPointer(e)\n this._pressed = false\n this._dragging = false\n if (this._interactionStartValue !== this.value) {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n this._interactionStartValue = undefined\n },\n onTap: (info, e) => {\n const crossAxisDelta = this.vertical ? info.deltaX : info.deltaY\n if (Math.abs(crossAxisDelta) >= POINTER_DRAG_THRESHOLD) return\n\n this._setValueFromPointer(e)\n if (this._interactionStartValue !== this.value) {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n },\n onCancel: () => {\n this._pressed = false\n this._dragging = false\n this._interactionStartValue = undefined\n }\n })\n }\n\n private _handleKeyDown(event: KeyboardEvent) {\n if (this._isDisabled) return\n const pageStep = this._safeStep * 10\n const keyValues: Record<string, number> = {\n ArrowDown: this.value - this._safeStep,\n ArrowLeft: this.value - this._safeStep,\n ArrowUp: this.value + this._safeStep,\n ArrowRight: this.value + this._safeStep,\n PageDown: this.value - pageStep,\n PageUp: this.value + pageStep,\n Home: this.min,\n End: this.max\n }\n const nextValue = keyValues[event.key]\n if (nextValue === undefined) return\n event.preventDefault()\n if (this._setValue(nextValue)) this.dispatchEvent(new Event('change', { bubbles: true, composed: true }))\n }\n\n override render() {\n const trackClass = classMap({\n 'wui-slider-track': true,\n 'is-dragging': this._dragging,\n 'is-disabled': this._isDisabled\n })\n const thumbClass = classMap({\n 'wui-slider-thumb': true,\n 'wui-glass': true,\n 'is-pressed': this._pressed,\n 'is-dragging': this._dragging\n })\n const trackStyle = styleMap({ '--percent': `${this._percent}%` })\n const labelledbyText = this._getLabelledbyText()\n this._renderedLabelledbyText = labelledbyText\n const labelledbyId = `${this._fieldId}-label`\n\n return html`\n ${labelledbyText ? html`<span class=\"wui-slider-a11y-only\" id=${labelledbyId}>${labelledbyText}</span>` : nothing}\n <div\n class=${trackClass}\n style=${trackStyle}\n role=\"slider\"\n tabindex=${this._isDisabled ? '-1' : '0'}\n aria-label=${ifDefined(this.ariaLabel)}\n aria-labelledby=${labelledbyText ? labelledbyId : nothing}\n aria-orientation=${this.vertical ? 'vertical' : 'horizontal'}\n aria-valuemin=${this.min}\n aria-valuemax=${this.max}\n aria-valuenow=${this.value}\n aria-disabled=${String(this._isDisabled)}\n @keydown=${this._handleKeyDown}\n @pointerdown=${this._handlePointerDown}\n >\n <div class=\"wui-slider-progress\"></div>\n <div class=\"wui-slider-marks\">\n ${this._markValues.map(\n mark =>\n html`<span\n class=\"wui-slider-mark\"\n style=${styleMap({ '--percent': `${((mark - this.min) / this._range) * 100}%` })}\n ></span>`\n )}\n </div>\n <div class=${thumbClass}></div>\n </div>\n `\n }\n\n declare readonly $events: {\n input: Event\n change: Event\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-slider': WebUiSlider\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- //#region src/components/slider/style.css?inline
2
- var e = "*,:before,:after{box-sizing:border-box}:host{touch-action:none;width:var(--wui-slider-width,200px);display:inline-block}:host([vertical]){width:auto;height:var(--wui-slider-vertical-height,200px)}:host([disabled]){cursor:not-allowed}.wui-slider-a11y-only{white-space:nowrap;clip-path:inset(50%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.wui-slider-track{touch-action:none;cursor:default;-webkit-user-select:none;user-select:none;width:100%;height:var(--wui-slider-track-size,6px);border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:var(--wui-color-surface-track,#e5e5ea);position:relative}.wui-slider-track:focus-visible{outline-color:var(--wui-color-focus-ring,color-mix(in srgb, var(--wui-color-accent,#0071e3) 40%, transparent))}.wui-slider-track.is-disabled{cursor:not-allowed;opacity:.38}.wui-slider-track.is-dragging{cursor:grabbing}:host([vertical]) .wui-slider-track{touch-action:none;width:var(--wui-slider-track-size,6px);height:100%}.wui-slider-progress{z-index:1;width:var(--percent);border-radius:inherit;background-color:var(--wui-color-accent,#0071e3);position:absolute;top:0;bottom:0;left:0}:host([vertical]) .wui-slider-progress{width:100%;height:var(--percent);top:auto;bottom:0}.wui-slider-marks{pointer-events:none;z-index:2;top:calc(100% + 2px);right:var(--wui-slider-marks-inset,0);left:var(--wui-slider-marks-inset,0);height:4px;margin-left:2px;margin-right:2px;position:absolute}:host([vertical]) .wui-slider-marks{top:var(--wui-slider-marks-inset,0);right:auto;bottom:var(--wui-slider-marks-inset,0);width:4px;height:auto;margin:2px 0;left:calc(100% + 2px)}.wui-slider-mark{top:0;left:var(--percent);border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:var(--wui-color-surface-track,#e5e5ea);width:4px;height:4px;position:absolute;transform:translate(-50%)}:host([vertical]) .wui-slider-mark{top:auto;bottom:var(--percent);left:50%;transform:translate(-50%,50%)}.wui-slider-thumb{--wui-glass-corner-radius:calc(var(--wui-slider-thumb-thickness,20px) / 2);cursor:inherit;z-index:3;top:50%;left:var(--percent);transform-origin:50%;width:var(--wui-slider-thumb-thickness,20px);height:var(--wui-slider-thumb-thickness,20px);border-radius:var(--wui-radius-control,calc(infinity * 1px));transition:width var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), height var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), transform var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), background-color var(--wui-duration-press,80ms) ease, box-shadow var(--wui-duration-press,80ms) ease;position:absolute;transform:translate(-50%,-50%)scale(1)}.wui-slider-thumb:not(.is-dragging){background-color:var(--wui-color-on-control,#fff)}.wui-slider-thumb.is-pressed:not(.is-dragging){--wui-color-glass-ring:transparent;width:var(--wui-slider-thumb-length,24px);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 38%, transparent), inset 0 1px .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 52%, transparent), inset 0 -.5px 1px #00000008, 0 2px 20px #0003;background-color:#0000;transform:translate(-50%,-50%)scale(1.5)}.wui-slider-thumb.is-dragging{--wui-color-glass-ring:transparent;cursor:grabbing;width:var(--wui-slider-thumb-length,24px);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 38%, transparent), inset 0 1px .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 52%, transparent), inset 0 -.5px 1px #00000008, 0 2px 20px #0003;background-color:#0000;transform:translate(-50%,-50%)scale(1.5)}:host([vertical]) .wui-slider-thumb{top:auto;bottom:var(--percent);left:50%;transform:translate(-50%,50%)scale(1)}:host([vertical]) .wui-slider-thumb.is-pressed:not(.is-dragging),:host([vertical]) .wui-slider-thumb.is-dragging{width:var(--wui-slider-thumb-thickness,20px);height:var(--wui-slider-thumb-length,24px);transform:translate(-50%,50%)scale(1.5)}:host([data-wui-pointer-focus]) .wui-slider-track:focus-visible{outline-color:#0000}";
3
- //#endregion
4
- export { e as default };
1
+ // src/components/slider/style.css?inline
2
+ var style_default = "*,:before,:after{box-sizing:border-box}:host{touch-action:none;width:var(--wui-slider-width,200px);display:inline-block}:host([vertical]){width:auto;height:var(--wui-slider-vertical-height,200px)}:host([disabled]){cursor:not-allowed}.wui-slider-a11y-only{white-space:nowrap;clip-path:inset(50%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.wui-slider-track{touch-action:none;cursor:default;-webkit-user-select:none;user-select:none;width:100%;height:var(--wui-slider-track-size,6px);border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:var(--wui-color-surface-track,#e5e5ea);position:relative}.wui-slider-track:focus-visible{outline-color:var(--wui-color-focus-ring,color-mix(in srgb, var(--wui-color-accent,#0071e3) 40%, transparent))}.wui-slider-track.is-disabled{cursor:not-allowed;opacity:.38}.wui-slider-track.is-dragging{cursor:grabbing}:host([vertical]) .wui-slider-track{touch-action:none;width:var(--wui-slider-track-size,6px);height:100%}.wui-slider-progress{z-index:1;width:var(--percent);border-radius:inherit;background-color:var(--wui-color-accent,#0071e3);position:absolute;top:0;bottom:0;left:0}:host([vertical]) .wui-slider-progress{width:100%;height:var(--percent);top:auto;bottom:0}.wui-slider-marks{pointer-events:none;z-index:2;top:calc(100% + 2px);right:var(--wui-slider-marks-inset,0);left:var(--wui-slider-marks-inset,0);height:4px;margin-left:2px;margin-right:2px;position:absolute}:host([vertical]) .wui-slider-marks{top:var(--wui-slider-marks-inset,0);right:auto;bottom:var(--wui-slider-marks-inset,0);width:4px;height:auto;margin:2px 0;left:calc(100% + 2px)}.wui-slider-mark{top:0;left:var(--percent);border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:var(--wui-color-surface-track,#e5e5ea);width:4px;height:4px;position:absolute;transform:translate(-50%)}:host([vertical]) .wui-slider-mark{top:auto;bottom:var(--percent);left:50%;transform:translate(-50%,50%)}.wui-slider-thumb{--wui-glass-corner-radius:calc(var(--wui-slider-thumb-thickness,20px) / 2);cursor:inherit;z-index:3;top:50%;left:var(--percent);transform-origin:50%;width:var(--wui-slider-thumb-thickness,20px);height:var(--wui-slider-thumb-thickness,20px);border-radius:var(--wui-radius-control,calc(infinity * 1px));transition:width var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), height var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), transform var(--wui-duration-press,80ms) cubic-bezier(.4, 0, .2, 1), background-color var(--wui-duration-press,80ms) ease, box-shadow var(--wui-duration-press,80ms) ease;position:absolute;transform:translate(-50%,-50%)scale(1)}.wui-slider-thumb:not(.is-dragging){background-color:var(--wui-color-on-control,#fff)}.wui-slider-thumb.is-pressed:not(.is-dragging){--wui-color-glass-ring:transparent;width:var(--wui-slider-thumb-length,24px);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 38%, transparent), inset 0 1px .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 52%, transparent), inset 0 -.5px 1px #00000008, 0 2px 20px #0003;background-color:#0000;transform:translate(-50%,-50%)scale(1.5)}.wui-slider-thumb.is-dragging{--wui-color-glass-ring:transparent;cursor:grabbing;width:var(--wui-slider-thumb-length,24px);box-shadow:inset 0 0 0 .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 38%, transparent), inset 0 1px .5px color-mix(in srgb, var(--wui-color-glass-highlight,#ffffffe6) 52%, transparent), inset 0 -.5px 1px #00000008, 0 2px 20px #0003;background-color:#0000;transform:translate(-50%,-50%)scale(1.5)}:host([vertical]) .wui-slider-thumb{top:auto;bottom:var(--percent);left:50%;transform:translate(-50%,50%)scale(1)}:host([vertical]) .wui-slider-thumb.is-pressed:not(.is-dragging),:host([vertical]) .wui-slider-thumb.is-dragging{width:var(--wui-slider-thumb-thickness,20px);height:var(--wui-slider-thumb-length,24px);transform:translate(-50%,50%)scale(1.5)}:host([data-wui-pointer-focus]) .wui-slider-track:focus-visible{outline-color:#0000}\n";
3
+ export { style_default as default };
5
4
 
6
5
  //# sourceMappingURL=style.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","names":[],"sources":["../../../src/components/slider/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n touch-action: none;\n display: inline-block;\n width: var(--wui-slider-width, 200px);\n}\n\n:host([vertical]) {\n width: auto;\n height: var(--wui-slider-vertical-height, 200px);\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.wui-slider-a11y-only {\n position: absolute;\n\n overflow: hidden;\n\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n\n white-space: nowrap;\n\n clip-path: inset(50%);\n}\n\n.wui-slider-track {\n touch-action: none;\n cursor: default;\n user-select: none;\n\n position: relative;\n\n width: 100%;\n height: var(--wui-slider-track-size, 6px);\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n\n &:focus-visible {\n outline-color: var(--wui-color-focus-ring, color-mix(in srgb, var(--wui-color-accent, #0071e3) 40%, transparent));\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.38;\n }\n\n &.is-dragging {\n cursor: grabbing;\n }\n}\n\n:host([vertical]) .wui-slider-track {\n touch-action: none;\n width: var(--wui-slider-track-size, 6px);\n height: 100%;\n}\n\n.wui-slider-progress {\n position: absolute;\n z-index: 1;\n top: 0;\n bottom: 0;\n left: 0;\n\n width: var(--percent);\n border-radius: inherit;\n\n background-color: var(--wui-color-accent, #0071e3);\n}\n\n:host([vertical]) .wui-slider-progress {\n top: auto;\n bottom: 0;\n width: 100%;\n height: var(--percent);\n}\n\n.wui-slider-marks {\n pointer-events: none;\n\n position: absolute;\n z-index: 2;\n top: calc(100% + 2px);\n right: var(--wui-slider-marks-inset, 0);\n left: var(--wui-slider-marks-inset, 0);\n\n height: 4px;\n margin-right: 2px;\n margin-left: 2px;\n}\n\n:host([vertical]) .wui-slider-marks {\n top: var(--wui-slider-marks-inset, 0);\n right: auto;\n bottom: var(--wui-slider-marks-inset, 0);\n left: calc(100% + 2px);\n\n width: 4px;\n height: auto;\n margin: 2px 0;\n}\n\n.wui-slider-mark {\n position: absolute;\n top: 0;\n left: var(--percent);\n transform: translateX(-50%);\n\n width: 4px;\n height: 4px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n}\n\n:host([vertical]) .wui-slider-mark {\n top: auto;\n bottom: var(--percent);\n left: 50%;\n transform: translate(-50%, 50%);\n}\n\n.wui-slider-thumb {\n /*\n * thumb 几何:静止态是正圆(直径取厚度 --wui-slider-thumb-thickness),\n * 按压 / 拖拽态沿 track 方向展开成胶囊(长边取 --wui-slider-thumb-length),\n * 与 switch thumb 同一套配方:厚度不变、长度变长。\n * 纵向 slider 把长边放进高度方向,横向放进宽度方向。\n * 描边光影需要有限半径,取厚度的一半:正圆与胶囊两端的圆角都是它。\n */\n --wui-glass-corner-radius: calc(var(--wui-slider-thumb-thickness, 20px) / 2);\n\n cursor: inherit;\n\n position: absolute;\n z-index: 3;\n top: 50%;\n left: var(--percent);\n transform-origin: center center;\n transform: translate(-50%, -50%) scale(1);\n\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-thickness, 20px);\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n transition:\n width var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n height var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n transform var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n background-color var(--wui-duration-press, 80ms) ease,\n box-shadow var(--wui-duration-press, 80ms) ease;\n\n /* 静止态实体白 thumb(wui-glass 恒开仅提供描边/高光,背景被白色覆盖);\n 按压/拖拽时背景转透明让 backdrop blur 透出并放大 1.5x。\n box-shadow 直接写死值(不经自定义属性中转):iOS Safari 对 var 离散切换驱动的\n box-shadow 不触发过渡且可能整体不生效(r2 真机「回退之前」的根因),直接写值\n 后是普通属性变化,transition 正常插值;同时复制 wui-glass 的三条 inset 高光,\n 避免整段覆盖后按压态丢失玻璃描边。 */\n &:not(.is-dragging) {\n background-color: var(--wui-color-on-control, #fff);\n }\n\n &.is-pressed:not(.is-dragging) {\n /* 环底色随按压/拖拽态转 transparent(理由见 menu-portal.css)。 */\n --wui-color-glass-ring: transparent;\n transform: translate(-50%, -50%) scale(1.5);\n\n /* 横向 slider 沿 track 方向展开成胶囊:厚度不变,长边走宽度方向。 */\n width: var(--wui-slider-thumb-length, 24px);\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n\n &.is-dragging {\n --wui-color-glass-ring: transparent;\n cursor: grabbing;\n\n transform: translate(-50%, -50%) scale(1.5);\n\n width: var(--wui-slider-thumb-length, 24px);\n\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n}\n\n:host([vertical]) .wui-slider-thumb {\n top: auto;\n bottom: var(--percent);\n left: 50%;\n transform: translate(-50%, 50%) scale(1);\n\n &.is-pressed:not(.is-dragging) {\n transform: translate(-50%, 50%) scale(1.5);\n\n /* 纵向 slider 的长边走高度方向:厚度不变,长边仍是 --wui-slider-thumb-length。 */\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-length, 24px);\n }\n\n &.is-dragging {\n transform: translate(-50%, 50%) scale(1.5);\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-length, 24px);\n }\n}\n\n:host([data-wui-pointer-focus]) .wui-slider-track:focus-visible {\n outline-color: transparent;\n}\n"],"mappings":""}
1
+ {"version":3,"file":"style.js","names":[],"sources":["../../../src/components/slider/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n touch-action: none;\n display: inline-block;\n width: var(--wui-slider-width, 200px);\n}\n\n:host([vertical]) {\n width: auto;\n height: var(--wui-slider-vertical-height, 200px);\n}\n\n:host([disabled]) {\n cursor: not-allowed;\n}\n\n.wui-slider-a11y-only {\n position: absolute;\n\n overflow: hidden;\n\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n\n white-space: nowrap;\n\n clip-path: inset(50%);\n}\n\n.wui-slider-track {\n touch-action: none;\n cursor: default;\n user-select: none;\n\n position: relative;\n\n width: 100%;\n height: var(--wui-slider-track-size, 6px);\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n\n &:focus-visible {\n outline-color: var(--wui-color-focus-ring, color-mix(in srgb, var(--wui-color-accent, #0071e3) 40%, transparent));\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.38;\n }\n\n &.is-dragging {\n cursor: grabbing;\n }\n}\n\n:host([vertical]) .wui-slider-track {\n touch-action: none;\n width: var(--wui-slider-track-size, 6px);\n height: 100%;\n}\n\n.wui-slider-progress {\n position: absolute;\n z-index: 1;\n top: 0;\n bottom: 0;\n left: 0;\n\n width: var(--percent);\n border-radius: inherit;\n\n background-color: var(--wui-color-accent, #0071e3);\n}\n\n:host([vertical]) .wui-slider-progress {\n top: auto;\n bottom: 0;\n width: 100%;\n height: var(--percent);\n}\n\n.wui-slider-marks {\n pointer-events: none;\n\n position: absolute;\n z-index: 2;\n top: calc(100% + 2px);\n right: var(--wui-slider-marks-inset, 0);\n left: var(--wui-slider-marks-inset, 0);\n\n height: 4px;\n margin-right: 2px;\n margin-left: 2px;\n}\n\n:host([vertical]) .wui-slider-marks {\n top: var(--wui-slider-marks-inset, 0);\n right: auto;\n bottom: var(--wui-slider-marks-inset, 0);\n left: calc(100% + 2px);\n\n width: 4px;\n height: auto;\n margin: 2px 0;\n}\n\n.wui-slider-mark {\n position: absolute;\n top: 0;\n left: var(--percent);\n transform: translateX(-50%);\n\n width: 4px;\n height: 4px;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: var(--wui-color-surface-track, #e5e5ea);\n}\n\n:host([vertical]) .wui-slider-mark {\n top: auto;\n bottom: var(--percent);\n left: 50%;\n transform: translate(-50%, 50%);\n}\n\n.wui-slider-thumb {\n /*\n * thumb 几何:静止态是正圆(直径取厚度 --wui-slider-thumb-thickness),\n * 按压 / 拖拽态沿 track 方向展开成胶囊(长边取 --wui-slider-thumb-length),\n * 与 switch thumb 同一套配方:厚度不变、长度变长。\n * 纵向 slider 把长边放进高度方向,横向放进宽度方向。\n * 描边光影需要有限半径,取厚度的一半:正圆与胶囊两端的圆角都是它。\n */\n --wui-glass-corner-radius: calc(var(--wui-slider-thumb-thickness, 20px) / 2);\n\n cursor: inherit;\n\n position: absolute;\n z-index: 3;\n top: 50%;\n left: var(--percent);\n transform-origin: center center;\n transform: translate(-50%, -50%) scale(1);\n\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-thickness, 20px);\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n transition:\n width var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n height var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n transform var(--wui-duration-press, 80ms) cubic-bezier(0.4, 0, 0.2, 1),\n background-color var(--wui-duration-press, 80ms) ease,\n box-shadow var(--wui-duration-press, 80ms) ease;\n\n /* 静止态实体白 thumb(wui-glass 恒开仅提供描边/高光,背景被白色覆盖);\n 按压/拖拽时背景转透明让 backdrop blur 透出并放大 1.5x。\n box-shadow 直接写死值(不经自定义属性中转):iOS Safari 对 var 离散切换驱动的\n box-shadow 不触发过渡且可能整体不生效(r2 真机「回退之前」的根因),直接写值\n 后是普通属性变化,transition 正常插值;同时复制 wui-glass 的三条 inset 高光,\n 避免整段覆盖后按压态丢失玻璃描边。 */\n &:not(.is-dragging) {\n background-color: var(--wui-color-on-control, #fff);\n }\n\n &.is-pressed:not(.is-dragging) {\n /* 环底色随按压/拖拽态转 transparent(理由见 menu-portal.css)。 */\n --wui-color-glass-ring: transparent;\n transform: translate(-50%, -50%) scale(1.5);\n\n /* 横向 slider 沿 track 方向展开成胶囊:厚度不变,长边走宽度方向。 */\n width: var(--wui-slider-thumb-length, 24px);\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n\n &.is-dragging {\n --wui-color-glass-ring: transparent;\n cursor: grabbing;\n\n transform: translate(-50%, -50%) scale(1.5);\n\n width: var(--wui-slider-thumb-length, 24px);\n\n background-color: transparent;\n box-shadow:\n inset 0 0 0 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 38%, transparent),\n inset 0 1px 0.5px color-mix(in srgb, var(--wui-color-glass-highlight, rgb(255 255 255 / 0.9)) 52%, transparent),\n inset 0 -0.5px 1px rgb(0 0 0 / 0.03),\n 0 2px 20px rgb(0 0 0 / 0.2);\n }\n}\n\n:host([vertical]) .wui-slider-thumb {\n top: auto;\n bottom: var(--percent);\n left: 50%;\n transform: translate(-50%, 50%) scale(1);\n\n &.is-pressed:not(.is-dragging) {\n transform: translate(-50%, 50%) scale(1.5);\n\n /* 纵向 slider 的长边走高度方向:厚度不变,长边仍是 --wui-slider-thumb-length。 */\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-length, 24px);\n }\n\n &.is-dragging {\n transform: translate(-50%, 50%) scale(1.5);\n width: var(--wui-slider-thumb-thickness, 20px);\n height: var(--wui-slider-thumb-length, 24px);\n }\n}\n\n:host([data-wui-pointer-focus]) .wui-slider-track:focus-visible {\n outline-color: transparent;\n}\n"],"mappings":";AAAA,IAAA,gBAAA"}
@@ -1,42 +1,43 @@
1
- import { LitElement, PropertyValues } from 'lit';
1
+ import { LitElement, PropertyValues } from "lit";
2
2
  export declare class WebUiSpinner extends LitElement {
3
- static styles: import('lit').CSSResult;
4
- size: number;
5
- description: string;
6
- /** 叶片颜色;空字符串时跟随主题次要文本色。 */
7
- color: string;
8
- private _ariaLabel?;
9
- private readonly _overlay;
10
- private _overlayHandle?;
11
- private readonly _scrollLock;
12
- /**
13
- * 显示一个全屏加载实例并挂载到主题 overlay root(无主题时挂载到 fallback overlay root);新实例会替换之前由此方法创建的实例。
14
- * @param options 尺寸、说明文字、颜色与可选自动关闭时长。
15
- * @returns 已挂载的 spinner 实例。
16
- */
17
- static show(options?: {
18
- size?: number;
19
- duration?: number;
20
- description?: string;
21
- color?: string;
22
- }): WebUiSpinner;
23
- static hide(): void;
24
- /** @internal 当前命令式实例 */
25
- static _current?: WebUiSpinner;
26
- /** @internal */
27
- _imperative: boolean;
28
- /** @internal */
29
- _timer?: ReturnType<typeof setTimeout>;
30
- connectedCallback(): void;
31
- disconnectedCallback(): void;
32
- protected updated(props: PropertyValues): void;
33
- private _syncImperativeOverlay;
34
- private _handleDialogCancel;
35
- private _closeDialog;
36
- render(): import('lit').TemplateResult<1>;
3
+ static styles: import("lit").CSSResult;
4
+ size: number;
5
+ description: string;
6
+ /** 叶片颜色;空字符串时跟随主题次要文本色。 */
7
+ color: string;
8
+ private _ariaLabel?;
9
+ private readonly _overlay;
10
+ private _overlayHandle?;
11
+ private readonly _scrollLock;
12
+ /**
13
+ * 显示一个全屏加载实例并挂载到主题 overlay root(无主题时挂载到 fallback overlay root);新实例会替换之前由此方法创建的实例。
14
+ * @param options 尺寸、说明文字、颜色与可选自动关闭时长。
15
+ * @returns 已挂载的 spinner 实例。
16
+ */
17
+ static show(options?: {
18
+ size?: number;
19
+ duration?: number;
20
+ description?: string;
21
+ color?: string;
22
+ }): WebUiSpinner;
23
+ static hide(): void;
24
+ /** @internal 当前命令式实例 */
25
+ static _current?: WebUiSpinner;
26
+ /** @internal */
27
+ _imperative: boolean;
28
+ /** @internal */
29
+ _timer?: ReturnType<typeof setTimeout>;
30
+ connectedCallback(): void;
31
+ disconnectedCallback(): void;
32
+ protected updated(props: PropertyValues): void;
33
+ private _syncImperativeOverlay;
34
+ private _handleDialogCancel;
35
+ private _closeDialog;
36
+ render(): import("lit").TemplateResult<1>;
37
37
  }
38
38
  declare global {
39
- interface HTMLElementTagNameMap {
40
- 'web-ui-spinner': WebUiSpinner;
41
- }
39
+ interface HTMLElementTagNameMap {
40
+ 'web-ui-spinner': WebUiSpinner;
41
+ }
42
42
  }
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/spinner/index.ts"],"mappings":";qBAgCa,qBAAqB;SAChB,sBAAM;EAEqB;EACf;;EAEA;UACiC;mBAE5C;UAIT;mBACS;;;;;;SAOV,KAAK;IAAY;IAAe;IAAmB;IAAsB;MAAmB;SA6B5F;;SAcA,WAAW;;EAGlB;;EAEA,SAAS,kBAAkB;EAElB;EAiBA;YAgBU,QAAQ,OAAO;UAQ1B;UAaA;UAIA;EAOC,wBAAM;;QA2BT;YACI;IACR,kBAAkB"}
@@ -1,110 +1,163 @@
1
- import e from "../../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
2
- import { defineOpenOverlay as t } from "../../shared/overlay/open-overlay.js";
3
- import { getFallbackOverlayRoot as n } from "../../shared/overlay/overlay-root.js";
4
- import { findRootTheme as r } from "../../shared/overlay/theme-overlay-scope.js";
5
- import { defineScrollLockLease as i } from "../../shared/scroll-lock/scroll-lock.js";
6
- import a from "./style.js";
7
- import { LitElement as o, html as s, nothing as c, unsafeCSS as l } from "lit";
8
- import { customElement as u, property as d } from "lit/decorators.js";
9
- import { styleMap as f } from "lit/directives/style-map.js";
10
- import { repeat as p } from "lit/directives/repeat.js";
11
- //#region src/components/spinner/index.ts
12
- var m, h = 8;
13
- function g() {
14
- let e = r()?.getOverlayRoot();
15
- if (e) return { element: e };
16
- let t = Array.from(document.querySelectorAll("web-ui-theme")).find((e) => e.appearance !== void 0);
17
- return t ? {
18
- element: t,
19
- initializingTheme: t
20
- } : { element: n() };
1
+ import __decorate from "../../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
2
+ import { defineOpenOverlay } from "../../shared/overlay/open-overlay.js";
3
+ import { getFallbackOverlayRoot } from "../../shared/overlay/overlay-root.js";
4
+ import { findRootTheme } from "../../shared/overlay/theme-overlay-scope.js";
5
+ import { defineScrollLockLease } from "../../shared/scroll-lock/scroll-lock.js";
6
+ import style_default from "./style.js";
7
+ import { LitElement, html, nothing, unsafeCSS } from "lit";
8
+ import { customElement, property } from "lit/decorators.js";
9
+ import { styleMap } from "lit/directives/style-map.js";
10
+ import { repeat } from "lit/directives/repeat.js";
11
+ // src/components/spinner/index.ts
12
+ var _WebUiSpinner;
13
+ const LEAF_COUNT = 8;
14
+ function getSpinnerMountTarget() {
15
+ const overlayRoot = findRootTheme()?.getOverlayRoot();
16
+ if (overlayRoot) return { element: overlayRoot };
17
+ const initializingTheme = Array.from(document.querySelectorAll("web-ui-theme")).find((theme) => theme.appearance !== void 0);
18
+ return initializingTheme ? {
19
+ element: initializingTheme,
20
+ initializingTheme
21
+ } : { element: getFallbackOverlayRoot() };
21
22
  }
22
- var _ = class extends o {
23
+ let WebUiSpinner = class WebUiSpinner extends LitElement {
23
24
  static {
24
- m = this;
25
+ _WebUiSpinner = this;
25
26
  }
26
- constructor(...e) {
27
- super(...e), this.size = 24, this.description = "", this.color = "", this._overlay = t().make({
27
+ constructor(..._args) {
28
+ super(..._args);
29
+ this.size = 24;
30
+ this.description = "";
31
+ this.color = "";
32
+ this._overlay = defineOpenOverlay().make({
28
33
  requestClose: () => void 0,
29
34
  isConnected: () => this.isConnected
30
- }), this._scrollLock = i().make(), this._imperative = !1;
35
+ });
36
+ this._scrollLock = defineScrollLockLease().make();
37
+ this._imperative = false;
31
38
  }
32
39
  static {
33
- this.styles = l(a);
40
+ this.styles = unsafeCSS(style_default);
34
41
  }
35
- static show(e) {
36
- let t = document.createElement("web-ui-spinner");
37
- t._imperative = !0, e?.size && (t.size = e.size), e?.description && (t.description = e.description), e?.color !== void 0 && (t.color = e.color);
38
- let n = g();
39
- if (n.element.appendChild(t), n.initializingTheme) {
40
- let e = n.initializingTheme, r = () => {
41
- let n = e.getOverlayRoot();
42
- n && e.isConnected && t.parentElement === e && n.appendChild(t);
42
+ /**
43
+ * 显示一个全屏加载实例并挂载到主题 overlay root(无主题时挂载到 fallback overlay root);新实例会替换之前由此方法创建的实例。
44
+ * @param options 尺寸、说明文字、颜色与可选自动关闭时长。
45
+ * @returns 已挂载的 spinner 实例。
46
+ */
47
+ static show(options) {
48
+ const el = document.createElement("web-ui-spinner");
49
+ el._imperative = true;
50
+ if (options?.size) el.size = options.size;
51
+ if (options?.description) el.description = options.description;
52
+ if (options?.color !== void 0) el.color = options.color;
53
+ const mountTarget = getSpinnerMountTarget();
54
+ mountTarget.element.appendChild(el);
55
+ if (mountTarget.initializingTheme) {
56
+ const theme = mountTarget.initializingTheme;
57
+ const moveIntoOverlayRoot = () => {
58
+ const overlayRoot = theme.getOverlayRoot();
59
+ if (overlayRoot && theme.isConnected && el.parentElement === theme) overlayRoot.appendChild(el);
43
60
  };
44
- e.updateComplete.then(() => {
45
- r(), t.parentElement === e && window.requestAnimationFrame(r);
61
+ theme.updateComplete.then(() => {
62
+ moveIntoOverlayRoot();
63
+ if (el.parentElement === theme) window.requestAnimationFrame(moveIntoOverlayRoot);
46
64
  }, () => void 0);
47
65
  }
48
- return e?.duration && e.duration > 0 && (t._timer = window.setTimeout(() => m.hide(), e.duration)), t;
66
+ if (options?.duration && options.duration > 0) el._timer = window.setTimeout(() => _WebUiSpinner.hide(), options.duration);
67
+ return el;
49
68
  }
50
69
  static hide() {
51
- let e = m._current;
52
- e && (e._timer &&= (clearTimeout(e._timer), void 0), e._closeDialog(), e.remove(), m._current === e && (m._current = void 0));
70
+ const current = _WebUiSpinner._current;
71
+ if (!current) return;
72
+ if (current._timer) {
73
+ clearTimeout(current._timer);
74
+ current._timer = void 0;
75
+ }
76
+ current._closeDialog();
77
+ current.remove();
78
+ if (_WebUiSpinner._current === current) _WebUiSpinner._current = void 0;
53
79
  }
54
80
  connectedCallback() {
55
- super.connectedCallback(), this.hasAttribute("role") || this.setAttribute("role", "status"), this.hasAttribute("aria-label") || this.setAttribute("aria-label", "Loading"), this._imperative && (m._current && m._current !== this && m._current.remove(), m._current = this, this.classList.add("wui-spinner-overlay"), this._scrollLock.sync(!0), this.requestUpdate());
81
+ super.connectedCallback();
82
+ if (!this.hasAttribute("role")) this.setAttribute("role", "status");
83
+ if (!this.hasAttribute("aria-label")) this.setAttribute("aria-label", "Loading");
84
+ if (this._imperative) {
85
+ if (_WebUiSpinner._current && _WebUiSpinner._current !== this) _WebUiSpinner._current.remove();
86
+ _WebUiSpinner._current = this;
87
+ this.classList.add("wui-spinner-overlay");
88
+ this._scrollLock.sync(true);
89
+ this.requestUpdate();
90
+ }
56
91
  }
57
92
  disconnectedCallback() {
58
- if (super.disconnectedCallback(), this._closeDialog(), this._overlayHandle?.release(), this._overlayHandle = void 0, this._scrollLock.release(), this._timer) {
59
- let e = this._timer;
93
+ super.disconnectedCallback();
94
+ this._closeDialog();
95
+ this._overlayHandle?.release();
96
+ this._overlayHandle = void 0;
97
+ this._scrollLock.release();
98
+ if (this._timer) {
99
+ const timer = this._timer;
60
100
  queueMicrotask(() => {
61
- this.isConnected || this._timer !== e || (clearTimeout(e), this._timer = void 0);
101
+ if (this.isConnected || this._timer !== timer) return;
102
+ clearTimeout(timer);
103
+ this._timer = void 0;
62
104
  });
63
105
  }
64
106
  }
65
- updated(e) {
66
- super.updated(e), this._syncImperativeOverlay(), e.has("size") && this.style.setProperty("--wui-spinner-size", `${this.size}px`);
107
+ updated(props) {
108
+ super.updated(props);
109
+ this._syncImperativeOverlay();
110
+ if (props.has("size")) this.style.setProperty("--wui-spinner-size", `${this.size}px`);
67
111
  }
68
112
  _syncImperativeOverlay() {
69
113
  if (!this._imperative || !this.isConnected) return;
70
- let e = this.shadowRoot?.querySelector("dialog");
71
- e && !e.open && (typeof e.showModal == "function" ? (e.showModal(), this._overlayHandle = this._overlay.claim(e, { ancestryFrom: this })) : e.setAttribute("open", ""));
114
+ const dialog = this.shadowRoot?.querySelector("dialog");
115
+ if (!dialog || dialog.open) return;
116
+ if (typeof dialog.showModal === "function") {
117
+ dialog.showModal();
118
+ this._overlayHandle = this._overlay.claim(dialog, { ancestryFrom: this });
119
+ } else dialog.setAttribute("open", "");
72
120
  }
73
- _handleDialogCancel(e) {
74
- e.preventDefault();
121
+ _handleDialogCancel(event) {
122
+ event.preventDefault();
75
123
  }
76
124
  _closeDialog() {
77
- let e = this.shadowRoot?.querySelector("dialog");
78
- e?.open && (typeof e.close == "function" ? e.close() : e.removeAttribute("open"));
125
+ const dialog = this.shadowRoot?.querySelector("dialog");
126
+ if (!dialog?.open) return;
127
+ if (typeof dialog.close === "function") dialog.close();
128
+ else dialog.removeAttribute("open");
79
129
  }
80
130
  render() {
81
- let e = s`
82
- <div class="wui-spinner" style=${f({ color: this.color || void 0 })}>
83
- ${p(Array.from({ length: h }, (e, t) => t), (e) => s`<span
84
- style="transform:rotate(${e * 45}deg);animation-delay:calc(-${h - e} / ${h} * var(--wui-duration-spinner, 800ms))"
131
+ const spinner = html`
132
+ <div class="wui-spinner" style=${styleMap({ color: this.color || void 0 })}>
133
+ ${repeat(Array.from({ length: LEAF_COUNT }, (_, i) => i), (i) => html`<span
134
+ style="transform:rotate(${i * 45}deg);animation-delay:calc(-${LEAF_COUNT - i} / ${LEAF_COUNT} * var(--wui-duration-spinner, 800ms))"
85
135
  ></span>`)}
86
136
  </div>
87
- ${this.description ? s`<div class="spinner-description">${this.description}</div>` : c}
137
+ ${this.description ? html`<div class="spinner-description">${this.description}</div>` : nothing}
88
138
  <slot name="description"></slot>
89
139
  `;
90
- return this._imperative ? s`<dialog
140
+ return this._imperative ? html`<dialog
91
141
  class="wui-spinner-overlay"
92
142
  aria-label=${this._ariaLabel}
93
143
  aria-modal="true"
94
144
  @cancel=${this._handleDialogCancel}
95
145
  >
96
- <div class="wui-spinner-overlay-content" role="status" aria-label=${this._ariaLabel}>${e}</div>
97
- </dialog>` : e;
146
+ <div class="wui-spinner-overlay-content" role="status" aria-label=${this._ariaLabel}>${spinner}</div>
147
+ </dialog>` : spinner;
98
148
  }
99
149
  };
100
- e([d({
150
+ __decorate([property({
101
151
  type: Number,
102
- reflect: !0
103
- })], _.prototype, "size", void 0), e([d({ type: String })], _.prototype, "description", void 0), e([d({ type: String })], _.prototype, "color", void 0), e([d({
152
+ reflect: true
153
+ })], WebUiSpinner.prototype, "size", void 0);
154
+ __decorate([property({ type: String })], WebUiSpinner.prototype, "description", void 0);
155
+ __decorate([property({ type: String })], WebUiSpinner.prototype, "color", void 0);
156
+ __decorate([property({
104
157
  type: String,
105
158
  attribute: "aria-label"
106
- })], _.prototype, "_ariaLabel", void 0), _ = m = e([u("web-ui-spinner")], _);
107
- //#endregion
108
- export { _ as WebUiSpinner };
159
+ })], WebUiSpinner.prototype, "_ariaLabel", void 0);
160
+ WebUiSpinner = _WebUiSpinner = __decorate([customElement("web-ui-spinner")], WebUiSpinner);
161
+ export { WebUiSpinner };
109
162
 
110
163
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/spinner/index.ts"],"sourcesContent":["import { html, LitElement, nothing, type PropertyValues, unsafeCSS } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport type { WebUiTheme } from '@/components/theme'\nimport { defineOpenOverlay, type OpenOverlayHandle } from '@/shared/overlay/open-overlay'\nimport { getFallbackOverlayRoot } from '@/shared/overlay/overlay-root'\nimport { findRootTheme } from '@/shared/overlay/theme-overlay-scope'\nimport { defineScrollLockLease } from '@/shared/scroll-lock/scroll-lock'\n\nimport style from './style.css?inline'\n\nconst LEAF_COUNT = 8\n\ntype SpinnerMountTarget = {\n element: HTMLElement\n initializingTheme?: WebUiTheme\n}\n\nfunction getSpinnerMountTarget(): SpinnerMountTarget {\n const rootTheme = findRootTheme()\n const overlayRoot = rootTheme?.getOverlayRoot()\n if (overlayRoot) return { element: overlayRoot }\n\n const initializingTheme = Array.from(document.querySelectorAll<WebUiTheme>('web-ui-theme')).find(\n theme => theme.appearance !== undefined\n )\n return initializingTheme ? { element: initializingTheme, initializingTheme } : { element: getFallbackOverlayRoot() }\n}\n\n@customElement('web-ui-spinner')\nexport class WebUiSpinner extends LitElement {\n static override styles = unsafeCSS(style)\n\n @property({ type: Number, reflect: true }) size = 24\n @property({ type: String }) description = ''\n /** 叶片颜色;空字符串时跟随主题次要文本色。 */\n @property({ type: String }) color = ''\n @property({ type: String, attribute: 'aria-label' }) private _ariaLabel?: string\n\n private readonly _overlay = defineOpenOverlay().make({\n requestClose: () => undefined,\n isConnected: () => this.isConnected\n })\n private _overlayHandle?: OpenOverlayHandle\n private readonly _scrollLock = defineScrollLockLease().make()\n\n /**\n * 显示一个全屏加载实例并挂载到主题 overlay root(无主题时挂载到 fallback overlay root);新实例会替换之前由此方法创建的实例。\n * @param options 尺寸、说明文字、颜色与可选自动关闭时长。\n * @returns 已挂载的 spinner 实例。\n */\n static show(options?: { size?: number; duration?: number; description?: string; color?: string }): WebUiSpinner {\n const el = document.createElement('web-ui-spinner')\n el._imperative = true\n if (options?.size) el.size = options.size\n if (options?.description) el.description = options.description\n if (options?.color !== undefined) el.color = options.color\n const mountTarget = getSpinnerMountTarget()\n mountTarget.element.appendChild(el)\n if (mountTarget.initializingTheme) {\n const theme = mountTarget.initializingTheme\n const moveIntoOverlayRoot = () => {\n const overlayRoot = theme.getOverlayRoot()\n if (overlayRoot && theme.isConnected && el.parentElement === theme) overlayRoot.appendChild(el)\n }\n void theme.updateComplete.then(\n () => {\n moveIntoOverlayRoot()\n if (el.parentElement === theme) window.requestAnimationFrame(moveIntoOverlayRoot)\n },\n () => undefined\n )\n }\n if (options?.duration && options.duration > 0) {\n el._timer = window.setTimeout(() => WebUiSpinner.hide(), options.duration)\n }\n return el\n }\n\n // 销毁由 show() 挂载的实例。\n static hide() {\n const current = WebUiSpinner._current\n if (!current) return\n\n if (current._timer) {\n clearTimeout(current._timer)\n current._timer = undefined\n }\n current._closeDialog()\n current.remove()\n if (WebUiSpinner._current === current) WebUiSpinner._current = undefined\n }\n\n /** @internal 当前命令式实例 */\n static _current?: WebUiSpinner\n\n /** @internal */\n _imperative = false\n /** @internal */\n _timer?: ReturnType<typeof setTimeout>\n\n override connectedCallback() {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'status')\n }\n if (!this.hasAttribute('aria-label')) {\n this.setAttribute('aria-label', 'Loading')\n }\n if (this._imperative) {\n if (WebUiSpinner._current && WebUiSpinner._current !== this) WebUiSpinner._current.remove()\n WebUiSpinner._current = this\n this.classList.add('wui-spinner-overlay')\n this._scrollLock.sync(true)\n this.requestUpdate()\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback()\n this._closeDialog()\n this._overlayHandle?.release()\n this._overlayHandle = undefined\n this._scrollLock.release()\n if (this._timer) {\n const timer = this._timer\n queueMicrotask(() => {\n if (this.isConnected || this._timer !== timer) return\n clearTimeout(timer)\n this._timer = undefined\n })\n }\n }\n\n protected override updated(props: PropertyValues) {\n super.updated(props)\n this._syncImperativeOverlay()\n if (props.has('size')) {\n this.style.setProperty('--wui-spinner-size', `${this.size}px`)\n }\n }\n\n private _syncImperativeOverlay() {\n if (!this._imperative || !this.isConnected) return\n const dialog = this.shadowRoot?.querySelector('dialog')\n if (!dialog || dialog.open) return\n\n if (typeof dialog.showModal === 'function') {\n dialog.showModal()\n this._overlayHandle = this._overlay.claim(dialog, { ancestryFrom: this })\n } else {\n dialog.setAttribute('open', '')\n }\n }\n\n private _handleDialogCancel(event: Event) {\n event.preventDefault()\n }\n\n private _closeDialog() {\n const dialog = this.shadowRoot?.querySelector('dialog')\n if (!dialog?.open) return\n if (typeof dialog.close === 'function') dialog.close()\n else dialog.removeAttribute('open')\n }\n\n override render() {\n const spinner = html`\n <div class=\"wui-spinner\" style=${styleMap({ color: this.color || undefined })}>\n ${repeat(\n Array.from({ length: LEAF_COUNT }, (_, i) => i),\n i =>\n html`<span\n style=\"transform:rotate(${i * 45}deg);animation-delay:calc(-${LEAF_COUNT - i} / ${LEAF_COUNT} * var(--wui-duration-spinner, 800ms))\"\n ></span>`\n )}\n </div>\n ${this.description ? html`<div class=\"spinner-description\">${this.description}</div>` : nothing}\n <slot name=\"description\"></slot>\n `\n return this._imperative\n ? html`<dialog\n class=\"wui-spinner-overlay\"\n aria-label=${this._ariaLabel}\n aria-modal=\"true\"\n @cancel=${this._handleDialogCancel}\n >\n <div class=\"wui-spinner-overlay-content\" role=\"status\" aria-label=${this._ariaLabel}>${spinner}</div>\n </dialog>`\n : spinner\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-spinner': WebUiSpinner\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["style"],"sources":["../../../src/components/spinner/index.ts"],"sourcesContent":["import { html, LitElement, nothing, type PropertyValues, unsafeCSS } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { styleMap } from 'lit/directives/style-map.js'\n\nimport type { WebUiTheme } from '@/components/theme'\nimport { defineOpenOverlay, type OpenOverlayHandle } from '@/shared/overlay/open-overlay'\nimport { getFallbackOverlayRoot } from '@/shared/overlay/overlay-root'\nimport { findRootTheme } from '@/shared/overlay/theme-overlay-scope'\nimport { defineScrollLockLease } from '@/shared/scroll-lock/scroll-lock'\n\nimport style from './style.css?inline'\n\nconst LEAF_COUNT = 8\n\ntype SpinnerMountTarget = {\n element: HTMLElement\n initializingTheme?: WebUiTheme\n}\n\nfunction getSpinnerMountTarget(): SpinnerMountTarget {\n const rootTheme = findRootTheme()\n const overlayRoot = rootTheme?.getOverlayRoot()\n if (overlayRoot) return { element: overlayRoot }\n\n const initializingTheme = Array.from(document.querySelectorAll<WebUiTheme>('web-ui-theme')).find(\n theme => theme.appearance !== undefined\n )\n return initializingTheme ? { element: initializingTheme, initializingTheme } : { element: getFallbackOverlayRoot() }\n}\n\n@customElement('web-ui-spinner')\nexport class WebUiSpinner extends LitElement {\n static override styles = unsafeCSS(style)\n\n @property({ type: Number, reflect: true }) size = 24\n @property({ type: String }) description = ''\n /** 叶片颜色;空字符串时跟随主题次要文本色。 */\n @property({ type: String }) color = ''\n @property({ type: String, attribute: 'aria-label' }) private _ariaLabel?: string\n\n private readonly _overlay = defineOpenOverlay().make({\n requestClose: () => undefined,\n isConnected: () => this.isConnected\n })\n private _overlayHandle?: OpenOverlayHandle\n private readonly _scrollLock = defineScrollLockLease().make()\n\n /**\n * 显示一个全屏加载实例并挂载到主题 overlay root(无主题时挂载到 fallback overlay root);新实例会替换之前由此方法创建的实例。\n * @param options 尺寸、说明文字、颜色与可选自动关闭时长。\n * @returns 已挂载的 spinner 实例。\n */\n static show(options?: { size?: number; duration?: number; description?: string; color?: string }): WebUiSpinner {\n const el = document.createElement('web-ui-spinner')\n el._imperative = true\n if (options?.size) el.size = options.size\n if (options?.description) el.description = options.description\n if (options?.color !== undefined) el.color = options.color\n const mountTarget = getSpinnerMountTarget()\n mountTarget.element.appendChild(el)\n if (mountTarget.initializingTheme) {\n const theme = mountTarget.initializingTheme\n const moveIntoOverlayRoot = () => {\n const overlayRoot = theme.getOverlayRoot()\n if (overlayRoot && theme.isConnected && el.parentElement === theme) overlayRoot.appendChild(el)\n }\n void theme.updateComplete.then(\n () => {\n moveIntoOverlayRoot()\n if (el.parentElement === theme) window.requestAnimationFrame(moveIntoOverlayRoot)\n },\n () => undefined\n )\n }\n if (options?.duration && options.duration > 0) {\n el._timer = window.setTimeout(() => WebUiSpinner.hide(), options.duration)\n }\n return el\n }\n\n // 销毁由 show() 挂载的实例。\n static hide() {\n const current = WebUiSpinner._current\n if (!current) return\n\n if (current._timer) {\n clearTimeout(current._timer)\n current._timer = undefined\n }\n current._closeDialog()\n current.remove()\n if (WebUiSpinner._current === current) WebUiSpinner._current = undefined\n }\n\n /** @internal 当前命令式实例 */\n static _current?: WebUiSpinner\n\n /** @internal */\n _imperative = false\n /** @internal */\n _timer?: ReturnType<typeof setTimeout>\n\n override connectedCallback() {\n super.connectedCallback()\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'status')\n }\n if (!this.hasAttribute('aria-label')) {\n this.setAttribute('aria-label', 'Loading')\n }\n if (this._imperative) {\n if (WebUiSpinner._current && WebUiSpinner._current !== this) WebUiSpinner._current.remove()\n WebUiSpinner._current = this\n this.classList.add('wui-spinner-overlay')\n this._scrollLock.sync(true)\n this.requestUpdate()\n }\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback()\n this._closeDialog()\n this._overlayHandle?.release()\n this._overlayHandle = undefined\n this._scrollLock.release()\n if (this._timer) {\n const timer = this._timer\n queueMicrotask(() => {\n if (this.isConnected || this._timer !== timer) return\n clearTimeout(timer)\n this._timer = undefined\n })\n }\n }\n\n protected override updated(props: PropertyValues) {\n super.updated(props)\n this._syncImperativeOverlay()\n if (props.has('size')) {\n this.style.setProperty('--wui-spinner-size', `${this.size}px`)\n }\n }\n\n private _syncImperativeOverlay() {\n if (!this._imperative || !this.isConnected) return\n const dialog = this.shadowRoot?.querySelector('dialog')\n if (!dialog || dialog.open) return\n\n if (typeof dialog.showModal === 'function') {\n dialog.showModal()\n this._overlayHandle = this._overlay.claim(dialog, { ancestryFrom: this })\n } else {\n dialog.setAttribute('open', '')\n }\n }\n\n private _handleDialogCancel(event: Event) {\n event.preventDefault()\n }\n\n private _closeDialog() {\n const dialog = this.shadowRoot?.querySelector('dialog')\n if (!dialog?.open) return\n if (typeof dialog.close === 'function') dialog.close()\n else dialog.removeAttribute('open')\n }\n\n override render() {\n const spinner = html`\n <div class=\"wui-spinner\" style=${styleMap({ color: this.color || undefined })}>\n ${repeat(\n Array.from({ length: LEAF_COUNT }, (_, i) => i),\n i =>\n html`<span\n style=\"transform:rotate(${i * 45}deg);animation-delay:calc(-${LEAF_COUNT - i} / ${LEAF_COUNT} * var(--wui-duration-spinner, 800ms))\"\n ></span>`\n )}\n </div>\n ${this.description ? html`<div class=\"spinner-description\">${this.description}</div>` : nothing}\n <slot name=\"description\"></slot>\n `\n return this._imperative\n ? html`<dialog\n class=\"wui-spinner-overlay\"\n aria-label=${this._ariaLabel}\n aria-modal=\"true\"\n @cancel=${this._handleDialogCancel}\n >\n <div class=\"wui-spinner-overlay-content\" role=\"status\" aria-label=${this._ariaLabel}>${spinner}</div>\n </dialog>`\n : spinner\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'web-ui-spinner': WebUiSpinner\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- //#region src/components/spinner/style.css?inline
2
- var e = "*,:before,:after{box-sizing:border-box}:host{color:var(--wui-color-text-secondary,#6a6a6a);justify-content:center;align-items:center;display:inline-flex}:host(.wui-spinner-overlay){display:contents}.wui-spinner{width:var(--wui-spinner-size,24px);height:var(--wui-spinner-size,24px);position:relative}.wui-spinner span{transform-origin:50%;width:10%;height:100%;animation:wui-spinner-leaf-fade var(--wui-duration-spinner,.8s) linear infinite;position:absolute;top:0;left:50%}.wui-spinner span:before{content:\"\";border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:currentColor;width:100%;height:30%;margin-top:12%;display:block}.wui-spinner-overlay{pointer-events:auto;z-index:var(--wui-layer-loading,300);width:100%;max-width:none;height:100%;max-height:none;color:inherit;background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:fixed;inset:0;overflow:hidden}.wui-spinner-overlay::backdrop{background:0 0}.wui-spinner-overlay-content{gap:var(--wui-space-2,8px);flex-direction:column;justify-content:center;align-items:center;display:flex}.spinner-description{max-width:240px;font-size:var(--wui-font-size,14px);line-height:var(--wui-line-height-normal,1.5);color:var(--wui-color-text-secondary,#6a6a6a);text-align:center}@keyframes wui-spinner-leaf-fade{0%{opacity:1}to{opacity:0}}";
3
- //#endregion
4
- export { e as default };
1
+ // src/components/spinner/style.css?inline
2
+ var style_default = "*,:before,:after{box-sizing:border-box}:host{color:var(--wui-color-text-secondary,#6a6a6a);justify-content:center;align-items:center;display:inline-flex}:host(.wui-spinner-overlay){display:contents}.wui-spinner{width:var(--wui-spinner-size,24px);height:var(--wui-spinner-size,24px);position:relative}.wui-spinner span{transform-origin:50%;width:10%;height:100%;animation:wui-spinner-leaf-fade var(--wui-duration-spinner,.8s) linear infinite;position:absolute;top:0;left:50%}.wui-spinner span:before{content:\"\";border-radius:var(--wui-radius-control,calc(infinity * 1px));background-color:currentColor;width:100%;height:30%;margin-top:12%;display:block}.wui-spinner-overlay{pointer-events:auto;z-index:var(--wui-layer-loading,300);width:100%;max-width:none;height:100%;max-height:none;color:inherit;background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:fixed;inset:0;overflow:hidden}.wui-spinner-overlay::backdrop{background:0 0}.wui-spinner-overlay-content{gap:var(--wui-space-2,8px);flex-direction:column;justify-content:center;align-items:center;display:flex}.spinner-description{max-width:240px;font-size:var(--wui-font-size,14px);line-height:var(--wui-line-height-normal,1.5);color:var(--wui-color-text-secondary,#6a6a6a);text-align:center}@keyframes wui-spinner-leaf-fade{0%{opacity:1}to{opacity:0}}\n";
3
+ export { style_default as default };
5
4
 
6
5
  //# sourceMappingURL=style.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","names":[],"sources":["../../../src/components/spinner/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--wui-color-text-secondary, #6a6a6a);\n}\n\n:host(.wui-spinner-overlay) {\n display: contents;\n}\n\n.wui-spinner {\n position: relative;\n width: var(--wui-spinner-size, 24px);\n height: var(--wui-spinner-size, 24px);\n\n span {\n position: absolute;\n top: 0;\n left: 50%;\n transform-origin: center center;\n\n width: 10%;\n height: 100%;\n\n animation: wui-spinner-leaf-fade var(--wui-duration-spinner, 800ms) linear infinite;\n\n &::before {\n content: '';\n\n display: block;\n\n width: 100%;\n height: 30%;\n margin-top: 12%;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: currentcolor;\n }\n }\n}\n\n.wui-spinner-overlay {\n pointer-events: auto;\n\n position: fixed;\n z-index: var(--wui-layer-loading, 300);\n inset: 0;\n\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 100%;\n max-width: none;\n height: 100%;\n max-height: none;\n margin: 0;\n padding: 0;\n border: 0;\n\n color: inherit;\n\n background: transparent;\n\n &::backdrop {\n background: transparent;\n }\n}\n\n.wui-spinner-overlay-content {\n display: flex;\n flex-direction: column;\n gap: var(--wui-space-2, 8px);\n align-items: center;\n justify-content: center;\n}\n\n.spinner-description {\n max-width: 240px;\n\n font-size: var(--wui-font-size, 14px);\n line-height: var(--wui-line-height-normal, 1.5);\n color: var(--wui-color-text-secondary, #6a6a6a);\n text-align: center;\n}\n\n@keyframes wui-spinner-leaf-fade {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"style.js","names":[],"sources":["../../../src/components/spinner/style.css?inline"],"sourcesContent":["*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--wui-color-text-secondary, #6a6a6a);\n}\n\n:host(.wui-spinner-overlay) {\n display: contents;\n}\n\n.wui-spinner {\n position: relative;\n width: var(--wui-spinner-size, 24px);\n height: var(--wui-spinner-size, 24px);\n\n span {\n position: absolute;\n top: 0;\n left: 50%;\n transform-origin: center center;\n\n width: 10%;\n height: 100%;\n\n animation: wui-spinner-leaf-fade var(--wui-duration-spinner, 800ms) linear infinite;\n\n &::before {\n content: '';\n\n display: block;\n\n width: 100%;\n height: 30%;\n margin-top: 12%;\n border-radius: var(--wui-radius-control, calc(infinity * 1px));\n\n background-color: currentcolor;\n }\n }\n}\n\n.wui-spinner-overlay {\n pointer-events: auto;\n\n position: fixed;\n z-index: var(--wui-layer-loading, 300);\n inset: 0;\n\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 100%;\n max-width: none;\n height: 100%;\n max-height: none;\n margin: 0;\n padding: 0;\n border: 0;\n\n color: inherit;\n\n background: transparent;\n\n &::backdrop {\n background: transparent;\n }\n}\n\n.wui-spinner-overlay-content {\n display: flex;\n flex-direction: column;\n gap: var(--wui-space-2, 8px);\n align-items: center;\n justify-content: center;\n}\n\n.spinner-description {\n max-width: 240px;\n\n font-size: var(--wui-font-size, 14px);\n line-height: var(--wui-line-height-normal, 1.5);\n color: var(--wui-color-text-secondary, #6a6a6a);\n text-align: center;\n}\n\n@keyframes wui-spinner-leaf-fade {\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n}\n"],"mappings":";AAAA,IAAA,gBAAA"}