@zerodep-dev/vue-tsx-pro-ui 0.0.0-stage → 0.1.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 (1109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -2
  3. package/dist/base/Badge.d.ts +28 -0
  4. package/dist/base/Badge.js +72 -0
  5. package/dist/base/Badge.js.map +1 -0
  6. package/dist/base/Blockquote.d.ts +13 -0
  7. package/dist/base/Blockquote.js +26 -0
  8. package/dist/base/Blockquote.js.map +1 -0
  9. package/dist/base/Button.d.ts +18 -0
  10. package/dist/base/Button.js +86 -0
  11. package/dist/base/Button.js.map +1 -0
  12. package/dist/base/ButtonBase.d.ts +21 -0
  13. package/dist/base/ButtonBase.js +51 -0
  14. package/dist/base/ButtonBase.js.map +1 -0
  15. package/dist/base/ButtonGroup.d.ts +24 -0
  16. package/dist/base/ButtonGroup.js +52 -0
  17. package/dist/base/ButtonGroup.js.map +1 -0
  18. package/dist/base/CloseButton.d.ts +15 -0
  19. package/dist/base/CloseButton.js +38 -0
  20. package/dist/base/CloseButton.js.map +1 -0
  21. package/dist/base/Code.d.ts +13 -0
  22. package/dist/base/Code.js +27 -0
  23. package/dist/base/Code.js.map +1 -0
  24. package/dist/base/CodeBlock.d.ts +89 -0
  25. package/dist/base/CodeBlock.js +265 -0
  26. package/dist/base/CodeBlock.js.map +1 -0
  27. package/dist/base/CopyButton.d.ts +40 -0
  28. package/dist/base/CopyButton.js +113 -0
  29. package/dist/base/CopyButton.js.map +1 -0
  30. package/dist/base/Heading.d.ts +49 -0
  31. package/dist/base/Heading.js +122 -0
  32. package/dist/base/Heading.js.map +1 -0
  33. package/dist/base/Icon.d.ts +48 -0
  34. package/dist/base/Icon.js +110 -0
  35. package/dist/base/Icon.js.map +1 -0
  36. package/dist/base/IconButton.d.ts +34 -0
  37. package/dist/base/IconButton.js +81 -0
  38. package/dist/base/IconButton.js.map +1 -0
  39. package/dist/base/IconLinkButton.d.ts +34 -0
  40. package/dist/base/IconLinkButton.js +81 -0
  41. package/dist/base/IconLinkButton.js.map +1 -0
  42. package/dist/base/Indicator.d.ts +126 -0
  43. package/dist/base/Indicator.js +158 -0
  44. package/dist/base/Indicator.js.map +1 -0
  45. package/dist/base/Kbd.d.ts +13 -0
  46. package/dist/base/Kbd.js +34 -0
  47. package/dist/base/Kbd.js.map +1 -0
  48. package/dist/base/Link.d.ts +61 -0
  49. package/dist/base/Link.js +114 -0
  50. package/dist/base/Link.js.map +1 -0
  51. package/dist/base/LinkButton.d.ts +18 -0
  52. package/dist/base/LinkButton.js +109 -0
  53. package/dist/base/LinkButton.js.map +1 -0
  54. package/dist/base/List.d.ts +61 -0
  55. package/dist/base/List.js +116 -0
  56. package/dist/base/List.js.map +1 -0
  57. package/dist/base/Mark.d.ts +13 -0
  58. package/dist/base/Mark.js +23 -0
  59. package/dist/base/Mark.js.map +1 -0
  60. package/dist/base/Spinner.d.ts +20 -0
  61. package/dist/base/Spinner.js +59 -0
  62. package/dist/base/Spinner.js.map +1 -0
  63. package/dist/base/StatusDot.d.ts +48 -0
  64. package/dist/base/StatusDot.js +62 -0
  65. package/dist/base/StatusDot.js.map +1 -0
  66. package/dist/base/Tag.d.ts +29 -0
  67. package/dist/base/Tag.js +92 -0
  68. package/dist/base/Tag.js.map +1 -0
  69. package/dist/base/Text.d.ts +57 -0
  70. package/dist/base/Text.js +74 -0
  71. package/dist/base/Text.js.map +1 -0
  72. package/dist/base/VisuallyHidden.d.ts +13 -0
  73. package/dist/base/VisuallyHidden.js +28 -0
  74. package/dist/base/VisuallyHidden.js.map +1 -0
  75. package/dist/base/badge-styles.d.ts +57 -0
  76. package/dist/base/badge-styles.js +329 -0
  77. package/dist/base/badge-styles.js.map +1 -0
  78. package/dist/base/button-core.d.ts +191 -0
  79. package/dist/base/button-core.js +660 -0
  80. package/dist/base/button-core.js.map +1 -0
  81. package/dist/charts/AreaChart.d.ts +18 -0
  82. package/dist/charts/AreaChart.js +90 -0
  83. package/dist/charts/AreaChart.js.map +1 -0
  84. package/dist/charts/BarChart.d.ts +19 -0
  85. package/dist/charts/BarChart.js +88 -0
  86. package/dist/charts/BarChart.js.map +1 -0
  87. package/dist/charts/ChordChart.d.ts +48 -0
  88. package/dist/charts/ChordChart.js +149 -0
  89. package/dist/charts/ChordChart.js.map +1 -0
  90. package/dist/charts/ComboChart.d.ts +30 -0
  91. package/dist/charts/ComboChart.js +157 -0
  92. package/dist/charts/ComboChart.js.map +1 -0
  93. package/dist/charts/DonutChart.d.ts +65 -0
  94. package/dist/charts/DonutChart.js +162 -0
  95. package/dist/charts/DonutChart.js.map +1 -0
  96. package/dist/charts/FunnelChart.d.ts +69 -0
  97. package/dist/charts/FunnelChart.js +181 -0
  98. package/dist/charts/FunnelChart.js.map +1 -0
  99. package/dist/charts/GraphChart.d.ts +135 -0
  100. package/dist/charts/GraphChart.js +274 -0
  101. package/dist/charts/GraphChart.js.map +1 -0
  102. package/dist/charts/LineChart.d.ts +50 -0
  103. package/dist/charts/LineChart.js +94 -0
  104. package/dist/charts/LineChart.js.map +1 -0
  105. package/dist/charts/MapChart.d.ts +167 -0
  106. package/dist/charts/MapChart.js +627 -0
  107. package/dist/charts/MapChart.js.map +1 -0
  108. package/dist/charts/RadarChart.d.ts +60 -0
  109. package/dist/charts/RadarChart.js +224 -0
  110. package/dist/charts/RadarChart.js.map +1 -0
  111. package/dist/charts/SankeyChart.d.ts +57 -0
  112. package/dist/charts/SankeyChart.js +150 -0
  113. package/dist/charts/SankeyChart.js.map +1 -0
  114. package/dist/charts/ScatterChart.d.ts +18 -0
  115. package/dist/charts/ScatterChart.js +82 -0
  116. package/dist/charts/ScatterChart.js.map +1 -0
  117. package/dist/charts/TimelineChart.d.ts +71 -0
  118. package/dist/charts/TimelineChart.js +267 -0
  119. package/dist/charts/TimelineChart.js.map +1 -0
  120. package/dist/charts/TreemapChart.d.ts +40 -0
  121. package/dist/charts/TreemapChart.js +155 -0
  122. package/dist/charts/TreemapChart.js.map +1 -0
  123. package/dist/charts/WaterfallChart.d.ts +61 -0
  124. package/dist/charts/WaterfallChart.js +167 -0
  125. package/dist/charts/WaterfallChart.js.map +1 -0
  126. package/dist/charts/XYChart.d.ts +206 -0
  127. package/dist/charts/XYChart.js +520 -0
  128. package/dist/charts/XYChart.js.map +1 -0
  129. package/dist/charts/axis-ticks.d.ts +23 -0
  130. package/dist/charts/axis-ticks.js +59 -0
  131. package/dist/charts/axis-ticks.js.map +1 -0
  132. package/dist/charts/export.d.ts +17 -0
  133. package/dist/charts/export.js +65 -0
  134. package/dist/charts/export.js.map +1 -0
  135. package/dist/charts/flow.d.ts +53 -0
  136. package/dist/charts/flow.js +29 -0
  137. package/dist/charts/flow.js.map +1 -0
  138. package/dist/charts/frame.d.ts +147 -0
  139. package/dist/charts/frame.js +358 -0
  140. package/dist/charts/frame.js.map +1 -0
  141. package/dist/charts/index.d.ts +30 -0
  142. package/dist/charts/index.js +24 -0
  143. package/dist/charts/label-layout.d.ts +59 -0
  144. package/dist/charts/label-layout.js +64 -0
  145. package/dist/charts/label-layout.js.map +1 -0
  146. package/dist/charts/series.d.ts +36 -0
  147. package/dist/charts/series.js +60 -0
  148. package/dist/charts/series.js.map +1 -0
  149. package/dist/charts/single.d.ts +41 -0
  150. package/dist/charts/single.js +65 -0
  151. package/dist/charts/single.js.map +1 -0
  152. package/dist/config/Provider.d.ts +52 -0
  153. package/dist/config/Provider.js +111 -0
  154. package/dist/config/Provider.js.map +1 -0
  155. package/dist/config/context.d.ts +90 -0
  156. package/dist/config/context.js +58 -0
  157. package/dist/config/context.js.map +1 -0
  158. package/dist/config/createUi.d.ts +52 -0
  159. package/dist/config/createUi.js +96 -0
  160. package/dist/config/createUi.js.map +1 -0
  161. package/dist/config/defaults.d.ts +71 -0
  162. package/dist/config/defaults.js +45 -0
  163. package/dist/config/defaults.js.map +1 -0
  164. package/dist/config/lang/en-US.d.ts +3 -0
  165. package/dist/config/lang/en-US.js +386 -0
  166. package/dist/config/lang/en-US.js.map +1 -0
  167. package/dist/config/lang/format.d.ts +50 -0
  168. package/dist/config/lang/format.js +113 -0
  169. package/dist/config/lang/format.js.map +1 -0
  170. package/dist/config/lang/lang.d.ts +653 -0
  171. package/dist/config/lang/lang.js +22 -0
  172. package/dist/config/lang/lang.js.map +1 -0
  173. package/dist/config/lang/messages.d.ts +12 -0
  174. package/dist/config/lang/messages.js +36 -0
  175. package/dist/config/lang/messages.js.map +1 -0
  176. package/dist/config/lang/zh-CN.d.ts +3 -0
  177. package/dist/config/lang/zh-CN.js +386 -0
  178. package/dist/config/lang/zh-CN.js.map +1 -0
  179. package/dist/config/pinyin.d.ts +3 -0
  180. package/dist/config/pinyin.js +26 -0
  181. package/dist/config/pinyin.js.map +1 -0
  182. package/dist/config/query-state.d.ts +61 -0
  183. package/dist/config/query-state.js +113 -0
  184. package/dist/config/query-state.js.map +1 -0
  185. package/dist/config/shiki.d.ts +13 -0
  186. package/dist/config/shiki.js +97 -0
  187. package/dist/config/shiki.js.map +1 -0
  188. package/dist/config/styles.d.ts +108 -0
  189. package/dist/config/styles.js +59 -0
  190. package/dist/config/styles.js.map +1 -0
  191. package/dist/config/theme/boot.d.ts +97 -0
  192. package/dist/config/theme/boot.js +90 -0
  193. package/dist/config/theme/boot.js.map +1 -0
  194. package/dist/config/theme/builtin.d.ts +21 -0
  195. package/dist/config/theme/builtin.js +58 -0
  196. package/dist/config/theme/builtin.js.map +1 -0
  197. package/dist/config/theme/coffee.d.ts +84 -0
  198. package/dist/config/theme/coffee.js +102 -0
  199. package/dist/config/theme/coffee.js.map +1 -0
  200. package/dist/config/theme/cyberpunk.d.ts +110 -0
  201. package/dist/config/theme/cyberpunk.js +125 -0
  202. package/dist/config/theme/cyberpunk.js.map +1 -0
  203. package/dist/config/theme/dark.d.ts +90 -0
  204. package/dist/config/theme/dark.js +106 -0
  205. package/dist/config/theme/dark.js.map +1 -0
  206. package/dist/config/theme/festive.d.ts +93 -0
  207. package/dist/config/theme/festive.js +110 -0
  208. package/dist/config/theme/festive.js.map +1 -0
  209. package/dist/config/theme/forest.d.ts +93 -0
  210. package/dist/config/theme/forest.js +109 -0
  211. package/dist/config/theme/forest.js.map +1 -0
  212. package/dist/config/theme/high-contrast.d.ts +103 -0
  213. package/dist/config/theme/high-contrast.js +119 -0
  214. package/dist/config/theme/high-contrast.js.map +1 -0
  215. package/dist/config/theme/lemon.d.ts +103 -0
  216. package/dist/config/theme/lemon.js +119 -0
  217. package/dist/config/theme/lemon.js.map +1 -0
  218. package/dist/config/theme/light.d.ts +107 -0
  219. package/dist/config/theme/light.js +122 -0
  220. package/dist/config/theme/light.js.map +1 -0
  221. package/dist/config/theme/midnight.d.ts +86 -0
  222. package/dist/config/theme/midnight.js +103 -0
  223. package/dist/config/theme/midnight.js.map +1 -0
  224. package/dist/config/theme/ocean.d.ts +103 -0
  225. package/dist/config/theme/ocean.js +119 -0
  226. package/dist/config/theme/ocean.js.map +1 -0
  227. package/dist/config/theme/paper.d.ts +101 -0
  228. package/dist/config/theme/paper.js +117 -0
  229. package/dist/config/theme/paper.js.map +1 -0
  230. package/dist/config/theme/preference.d.ts +34 -0
  231. package/dist/config/theme/preference.js +67 -0
  232. package/dist/config/theme/preference.js.map +1 -0
  233. package/dist/config/theme/sakura.d.ts +103 -0
  234. package/dist/config/theme/sakura.js +119 -0
  235. package/dist/config/theme/sakura.js.map +1 -0
  236. package/dist/config/theme/theme.d.ts +59 -0
  237. package/dist/config/theme/theme.js +68 -0
  238. package/dist/config/theme/theme.js.map +1 -0
  239. package/dist/config/theme/token-names.d.ts +1897 -0
  240. package/dist/config/theme/tokens.d.ts +833 -0
  241. package/dist/config/theme/tokens.js +480 -0
  242. package/dist/config/theme/tokens.js.map +1 -0
  243. package/dist/config/vue-router.d.ts +67 -0
  244. package/dist/config/vue-router.js +143 -0
  245. package/dist/config/vue-router.js.map +1 -0
  246. package/dist/date/Calendar.d.ts +36 -0
  247. package/dist/date/Calendar.js +83 -0
  248. package/dist/date/Calendar.js.map +1 -0
  249. package/dist/date/CalendarBoard.d.ts +79 -0
  250. package/dist/date/CalendarBoard.js +403 -0
  251. package/dist/date/CalendarBoard.js.map +1 -0
  252. package/dist/date/CalendarView.d.ts +86 -0
  253. package/dist/date/CalendarView.js +427 -0
  254. package/dist/date/CalendarView.js.map +1 -0
  255. package/dist/date/Countdown.d.ts +45 -0
  256. package/dist/date/Countdown.js +75 -0
  257. package/dist/date/Countdown.js.map +1 -0
  258. package/dist/date/DateField.d.ts +34 -0
  259. package/dist/date/DateField.js +124 -0
  260. package/dist/date/DateField.js.map +1 -0
  261. package/dist/date/DatePicker.d.ts +41 -0
  262. package/dist/date/DatePicker.js +272 -0
  263. package/dist/date/DatePicker.js.map +1 -0
  264. package/dist/date/DateRangePicker.d.ts +71 -0
  265. package/dist/date/DateRangePicker.js +411 -0
  266. package/dist/date/DateRangePicker.js.map +1 -0
  267. package/dist/date/DateSegmentGroup.d.ts +38 -0
  268. package/dist/date/DateSegmentGroup.js +176 -0
  269. package/dist/date/DateSegmentGroup.js.map +1 -0
  270. package/dist/date/DateTime.d.ts +21 -0
  271. package/dist/date/DateTime.js +39 -0
  272. package/dist/date/DateTime.js.map +1 -0
  273. package/dist/date/QuarterCalendar.d.ts +22 -0
  274. package/dist/date/QuarterCalendar.js +231 -0
  275. package/dist/date/QuarterCalendar.js.map +1 -0
  276. package/dist/date/RangeCalendar.d.ts +24 -0
  277. package/dist/date/RangeCalendar.js +89 -0
  278. package/dist/date/RangeCalendar.js.map +1 -0
  279. package/dist/date/RelativeTime.d.ts +16 -0
  280. package/dist/date/RelativeTime.js +61 -0
  281. package/dist/date/RelativeTime.js.map +1 -0
  282. package/dist/date/SegmentedField.d.ts +60 -0
  283. package/dist/date/SegmentedField.js +175 -0
  284. package/dist/date/SegmentedField.js.map +1 -0
  285. package/dist/date/TimeField.d.ts +36 -0
  286. package/dist/date/TimeField.js +56 -0
  287. package/dist/date/TimeField.js.map +1 -0
  288. package/dist/date/TimePicker.d.ts +25 -0
  289. package/dist/date/TimePicker.js +206 -0
  290. package/dist/date/TimePicker.js.map +1 -0
  291. package/dist/date/calendar-state.d.ts +119 -0
  292. package/dist/date/calendar-state.js +267 -0
  293. package/dist/date/calendar-state.js.map +1 -0
  294. package/dist/date/clock.d.ts +11 -0
  295. package/dist/date/clock.js +37 -0
  296. package/dist/date/clock.js.map +1 -0
  297. package/dist/date/date-locale.d.ts +67 -0
  298. package/dist/date/date-locale.js +89 -0
  299. package/dist/date/date-locale.js.map +1 -0
  300. package/dist/date/date-segments.d.ts +132 -0
  301. package/dist/date/date-segments.js +410 -0
  302. package/dist/date/date-segments.js.map +1 -0
  303. package/dist/date/picker-popover.d.ts +88 -0
  304. package/dist/date/picker-popover.js +126 -0
  305. package/dist/date/picker-popover.js.map +1 -0
  306. package/dist/diagram/Diagram.d.ts +223 -0
  307. package/dist/diagram/Diagram.js +1121 -0
  308. package/dist/diagram/Diagram.js.map +1 -0
  309. package/dist/diagram/DiagramControls.d.ts +35 -0
  310. package/dist/diagram/DiagramControls.js +114 -0
  311. package/dist/diagram/DiagramControls.js.map +1 -0
  312. package/dist/diagram/DiagramLanes.d.ts +49 -0
  313. package/dist/diagram/DiagramLanes.js +92 -0
  314. package/dist/diagram/DiagramLanes.js.map +1 -0
  315. package/dist/diagram/DiagramMinimap.d.ts +39 -0
  316. package/dist/diagram/DiagramMinimap.js +133 -0
  317. package/dist/diagram/DiagramMinimap.js.map +1 -0
  318. package/dist/diagram/DiagramNode.d.ts +65 -0
  319. package/dist/diagram/DiagramNode.js +142 -0
  320. package/dist/diagram/DiagramNode.js.map +1 -0
  321. package/dist/diagram/controller.d.ts +68 -0
  322. package/dist/diagram/controller.js +117 -0
  323. package/dist/diagram/controller.js.map +1 -0
  324. package/dist/diagram/export.d.ts +14 -0
  325. package/dist/diagram/export.js +115 -0
  326. package/dist/diagram/export.js.map +1 -0
  327. package/dist/diagram/geometry.d.ts +65 -0
  328. package/dist/diagram/geometry.js +219 -0
  329. package/dist/diagram/geometry.js.map +1 -0
  330. package/dist/diagram/index.d.ts +19 -0
  331. package/dist/diagram/index.js +11 -0
  332. package/dist/diagram/messages.d.ts +28 -0
  333. package/dist/diagram/messages.js +30 -0
  334. package/dist/diagram/messages.js.map +1 -0
  335. package/dist/diagram/route.d.ts +81 -0
  336. package/dist/diagram/route.js +327 -0
  337. package/dist/diagram/route.js.map +1 -0
  338. package/dist/display/Accordion.d.ts +71 -0
  339. package/dist/display/Accordion.js +219 -0
  340. package/dist/display/Accordion.js.map +1 -0
  341. package/dist/display/AnimatedNumber.d.ts +44 -0
  342. package/dist/display/AnimatedNumber.js +97 -0
  343. package/dist/display/AnimatedNumber.js.map +1 -0
  344. package/dist/display/Avatar.d.ts +74 -0
  345. package/dist/display/Avatar.js +158 -0
  346. package/dist/display/Avatar.js.map +1 -0
  347. package/dist/display/AvatarGroup.d.ts +29 -0
  348. package/dist/display/AvatarGroup.js +67 -0
  349. package/dist/display/AvatarGroup.js.map +1 -0
  350. package/dist/display/Card.d.ts +219 -0
  351. package/dist/display/Card.js +319 -0
  352. package/dist/display/Card.js.map +1 -0
  353. package/dist/display/Checklist.d.ts +93 -0
  354. package/dist/display/Checklist.js +260 -0
  355. package/dist/display/Checklist.js.map +1 -0
  356. package/dist/display/Collapse.d.ts +24 -0
  357. package/dist/display/Collapse.js +65 -0
  358. package/dist/display/Collapse.js.map +1 -0
  359. package/dist/display/Collapsible.d.ts +12 -0
  360. package/dist/display/Collapsible.js +41 -0
  361. package/dist/display/Collapsible.js.map +1 -0
  362. package/dist/display/Descriptions.d.ts +88 -0
  363. package/dist/display/Descriptions.js +185 -0
  364. package/dist/display/Descriptions.js.map +1 -0
  365. package/dist/display/Ellipsis.d.ts +29 -0
  366. package/dist/display/Ellipsis.js +111 -0
  367. package/dist/display/Ellipsis.js.map +1 -0
  368. package/dist/display/FieldCompare.d.ts +58 -0
  369. package/dist/display/FieldCompare.js +205 -0
  370. package/dist/display/FieldCompare.js.map +1 -0
  371. package/dist/display/Gauge.d.ts +60 -0
  372. package/dist/display/Gauge.js +215 -0
  373. package/dist/display/Gauge.js.map +1 -0
  374. package/dist/display/Image.d.ts +87 -0
  375. package/dist/display/Image.js +212 -0
  376. package/dist/display/Image.js.map +1 -0
  377. package/dist/display/ItemList.d.ts +69 -0
  378. package/dist/display/ItemList.js +147 -0
  379. package/dist/display/ItemList.js.map +1 -0
  380. package/dist/display/Marquee.d.ts +59 -0
  381. package/dist/display/Marquee.js +155 -0
  382. package/dist/display/Marquee.js.map +1 -0
  383. package/dist/display/ProportionBar.d.ts +55 -0
  384. package/dist/display/ProportionBar.js +99 -0
  385. package/dist/display/ProportionBar.js.map +1 -0
  386. package/dist/display/Sortable.d.ts +43 -0
  387. package/dist/display/Sortable.js +163 -0
  388. package/dist/display/Sortable.js.map +1 -0
  389. package/dist/display/Sparkline.d.ts +48 -0
  390. package/dist/display/Sparkline.js +130 -0
  391. package/dist/display/Sparkline.js.map +1 -0
  392. package/dist/display/Stat.d.ts +105 -0
  393. package/dist/display/Stat.js +268 -0
  394. package/dist/display/Stat.js.map +1 -0
  395. package/dist/display/Timeline.d.ts +106 -0
  396. package/dist/display/Timeline.js +257 -0
  397. package/dist/display/Timeline.js.map +1 -0
  398. package/dist/display/Tree.d.ts +132 -0
  399. package/dist/display/Tree.js +645 -0
  400. package/dist/display/Tree.js.map +1 -0
  401. package/dist/display/VirtualList.d.ts +80 -0
  402. package/dist/display/VirtualList.js +166 -0
  403. package/dist/display/VirtualList.js.map +1 -0
  404. package/dist/display/Watermark.d.ts +39 -0
  405. package/dist/display/Watermark.js +130 -0
  406. package/dist/display/Watermark.js.map +1 -0
  407. package/dist/docs-kit/CodeGroup.d.ts +29 -0
  408. package/dist/docs-kit/CodeGroup.js +81 -0
  409. package/dist/docs-kit/CodeGroup.js.map +1 -0
  410. package/dist/docs-kit/CodePreview.d.ts +60 -0
  411. package/dist/docs-kit/CodePreview.js +183 -0
  412. package/dist/docs-kit/CodePreview.js.map +1 -0
  413. package/dist/docs-kit/ColorSwatch.d.ts +28 -0
  414. package/dist/docs-kit/ColorSwatch.js +85 -0
  415. package/dist/docs-kit/ColorSwatch.js.map +1 -0
  416. package/dist/docs-kit/PropsTable.d.ts +73 -0
  417. package/dist/docs-kit/PropsTable.js +122 -0
  418. package/dist/docs-kit/PropsTable.js.map +1 -0
  419. package/dist/docs-kit/index.d.ts +13 -0
  420. package/dist/docs-kit/index.js +6 -0
  421. package/dist/docs-kit/messages.d.ts +25 -0
  422. package/dist/docs-kit/messages.js +30 -0
  423. package/dist/docs-kit/messages.js.map +1 -0
  424. package/dist/feedback/Alert.d.ts +83 -0
  425. package/dist/feedback/Alert.js +179 -0
  426. package/dist/feedback/Alert.js.map +1 -0
  427. package/dist/feedback/Banner.d.ts +60 -0
  428. package/dist/feedback/Banner.js +122 -0
  429. package/dist/feedback/Banner.js.map +1 -0
  430. package/dist/feedback/Empty.d.ts +38 -0
  431. package/dist/feedback/Empty.js +114 -0
  432. package/dist/feedback/Empty.js.map +1 -0
  433. package/dist/feedback/LoadingBar.d.ts +45 -0
  434. package/dist/feedback/LoadingBar.js +124 -0
  435. package/dist/feedback/LoadingBar.js.map +1 -0
  436. package/dist/feedback/LoadingOverlay.d.ts +29 -0
  437. package/dist/feedback/LoadingOverlay.js +70 -0
  438. package/dist/feedback/LoadingOverlay.js.map +1 -0
  439. package/dist/feedback/Progress.d.ts +215 -0
  440. package/dist/feedback/Progress.js +437 -0
  441. package/dist/feedback/Progress.js.map +1 -0
  442. package/dist/feedback/Result.d.ts +69 -0
  443. package/dist/feedback/Result.js +165 -0
  444. package/dist/feedback/Result.js.map +1 -0
  445. package/dist/feedback/Skeleton.d.ts +50 -0
  446. package/dist/feedback/Skeleton.js +100 -0
  447. package/dist/feedback/Skeleton.js.map +1 -0
  448. package/dist/feedback/SkeletonText.d.ts +25 -0
  449. package/dist/feedback/SkeletonText.js +40 -0
  450. package/dist/feedback/SkeletonText.js.map +1 -0
  451. package/dist/feedback/Toast.d.ts +204 -0
  452. package/dist/feedback/Toast.js +572 -0
  453. package/dist/feedback/Toast.js.map +1 -0
  454. package/dist/form/Field.d.ts +158 -0
  455. package/dist/form/Field.js +327 -0
  456. package/dist/form/Field.js.map +1 -0
  457. package/dist/form/Form.d.ts +14 -0
  458. package/dist/form/Form.js +66 -0
  459. package/dist/form/Form.js.map +1 -0
  460. package/dist/form/FormErrorSummary.d.ts +23 -0
  461. package/dist/form/FormErrorSummary.js +102 -0
  462. package/dist/form/FormErrorSummary.js.map +1 -0
  463. package/dist/form/FormSection.d.ts +66 -0
  464. package/dist/form/FormSection.js +227 -0
  465. package/dist/form/FormSection.js.map +1 -0
  466. package/dist/form/FormValue.d.ts +17 -0
  467. package/dist/form/FormValue.js +40 -0
  468. package/dist/form/FormValue.js.map +1 -0
  469. package/dist/form/field-layout.d.ts +34 -0
  470. package/dist/form/field-layout.js +39 -0
  471. package/dist/form/field-layout.js.map +1 -0
  472. package/dist/form/form-constraints.d.ts +38 -0
  473. package/dist/form/form-constraints.js +131 -0
  474. package/dist/form/form-constraints.js.map +1 -0
  475. package/dist/form/leave-confirmation.d.ts +9 -0
  476. package/dist/form/leave-confirmation.js +31 -0
  477. package/dist/form/leave-confirmation.js.map +1 -0
  478. package/dist/form/schemas.d.ts +52 -0
  479. package/dist/form/schemas.js +97 -0
  480. package/dist/form/schemas.js.map +1 -0
  481. package/dist/form/useForm.d.ts +192 -0
  482. package/dist/form/useForm.js +394 -0
  483. package/dist/form/useForm.js.map +1 -0
  484. package/dist/index.d.ts +282 -0
  485. package/dist/index.js +282 -0
  486. package/dist/input/Autocomplete.d.ts +14 -0
  487. package/dist/input/Autocomplete.js +35 -0
  488. package/dist/input/Autocomplete.js.map +1 -0
  489. package/dist/input/Cascader.d.ts +86 -0
  490. package/dist/input/Cascader.js +593 -0
  491. package/dist/input/Cascader.js.map +1 -0
  492. package/dist/input/CharacterCount.d.ts +21 -0
  493. package/dist/input/CharacterCount.js +47 -0
  494. package/dist/input/CharacterCount.js.map +1 -0
  495. package/dist/input/Checkbox.d.ts +93 -0
  496. package/dist/input/Checkbox.js +250 -0
  497. package/dist/input/Checkbox.js.map +1 -0
  498. package/dist/input/ColorField.d.ts +37 -0
  499. package/dist/input/ColorField.js +143 -0
  500. package/dist/input/ColorField.js.map +1 -0
  501. package/dist/input/Combobox.d.ts +75 -0
  502. package/dist/input/Combobox.js +321 -0
  503. package/dist/input/Combobox.js.map +1 -0
  504. package/dist/input/ConditionBuilder.d.ts +55 -0
  505. package/dist/input/ConditionBuilder.js +471 -0
  506. package/dist/input/ConditionBuilder.js.map +1 -0
  507. package/dist/input/ControlGroup.d.ts +26 -0
  508. package/dist/input/ControlGroup.js +50 -0
  509. package/dist/input/ControlGroup.js.map +1 -0
  510. package/dist/input/FileDrop.d.ts +49 -0
  511. package/dist/input/FileDrop.js +201 -0
  512. package/dist/input/FileDrop.js.map +1 -0
  513. package/dist/input/ListPopover.d.ts +39 -0
  514. package/dist/input/ListPopover.js +81 -0
  515. package/dist/input/ListPopover.js.map +1 -0
  516. package/dist/input/Listbox.d.ts +91 -0
  517. package/dist/input/Listbox.js +408 -0
  518. package/dist/input/Listbox.js.map +1 -0
  519. package/dist/input/Mentions.d.ts +74 -0
  520. package/dist/input/Mentions.js +287 -0
  521. package/dist/input/Mentions.js.map +1 -0
  522. package/dist/input/NumberField.d.ts +64 -0
  523. package/dist/input/NumberField.js +288 -0
  524. package/dist/input/NumberField.js.map +1 -0
  525. package/dist/input/NumberRangeField.d.ts +58 -0
  526. package/dist/input/NumberRangeField.js +157 -0
  527. package/dist/input/NumberRangeField.js.map +1 -0
  528. package/dist/input/OtpField.d.ts +58 -0
  529. package/dist/input/OtpField.js +200 -0
  530. package/dist/input/OtpField.js.map +1 -0
  531. package/dist/input/PeoplePicker.d.ts +42 -0
  532. package/dist/input/PeoplePicker.js +185 -0
  533. package/dist/input/PeoplePicker.js.map +1 -0
  534. package/dist/input/PeoplePickerPanel.d.ts +42 -0
  535. package/dist/input/PeoplePickerPanel.js +357 -0
  536. package/dist/input/PeoplePickerPanel.js.map +1 -0
  537. package/dist/input/Radio.d.ts +90 -0
  538. package/dist/input/Radio.js +211 -0
  539. package/dist/input/Radio.js.map +1 -0
  540. package/dist/input/Rating.d.ts +62 -0
  541. package/dist/input/Rating.js +225 -0
  542. package/dist/input/Rating.js.map +1 -0
  543. package/dist/input/Select.d.ts +97 -0
  544. package/dist/input/Select.js +455 -0
  545. package/dist/input/Select.js.map +1 -0
  546. package/dist/input/SelectedTags.d.ts +28 -0
  547. package/dist/input/SelectedTags.js +81 -0
  548. package/dist/input/SelectedTags.js.map +1 -0
  549. package/dist/input/Slider.d.ts +99 -0
  550. package/dist/input/Slider.js +343 -0
  551. package/dist/input/Slider.js.map +1 -0
  552. package/dist/input/Switch.d.ts +63 -0
  553. package/dist/input/Switch.js +198 -0
  554. package/dist/input/Switch.js.map +1 -0
  555. package/dist/input/TagsInput.d.ts +70 -0
  556. package/dist/input/TagsInput.js +314 -0
  557. package/dist/input/TagsInput.js.map +1 -0
  558. package/dist/input/TextField.d.ts +51 -0
  559. package/dist/input/TextField.js +185 -0
  560. package/dist/input/TextField.js.map +1 -0
  561. package/dist/input/Textarea.d.ts +50 -0
  562. package/dist/input/Textarea.js +146 -0
  563. package/dist/input/Textarea.js.map +1 -0
  564. package/dist/input/ToggleGroup.d.ts +82 -0
  565. package/dist/input/ToggleGroup.js +211 -0
  566. package/dist/input/ToggleGroup.js.map +1 -0
  567. package/dist/input/Transfer.d.ts +67 -0
  568. package/dist/input/Transfer.js +407 -0
  569. package/dist/input/Transfer.js.map +1 -0
  570. package/dist/input/TreeSelect.d.ts +94 -0
  571. package/dist/input/TreeSelect.js +412 -0
  572. package/dist/input/TreeSelect.js.map +1 -0
  573. package/dist/input/Upload.d.ts +143 -0
  574. package/dist/input/Upload.js +597 -0
  575. package/dist/input/Upload.js.map +1 -0
  576. package/dist/input/choice-styles.d.ts +117 -0
  577. package/dist/input/choice-styles.js +176 -0
  578. package/dist/input/choice-styles.js.map +1 -0
  579. package/dist/input/condition.d.ts +153 -0
  580. package/dist/input/condition.js +169 -0
  581. package/dist/input/condition.js.map +1 -0
  582. package/dist/input/control.d.ts +160 -0
  583. package/dist/input/control.js +236 -0
  584. package/dist/input/control.js.map +1 -0
  585. package/dist/input/list-state.d.ts +118 -0
  586. package/dist/input/list-state.js +186 -0
  587. package/dist/input/list-state.js.map +1 -0
  588. package/dist/input/people.d.ts +65 -0
  589. package/dist/input/people.js +47 -0
  590. package/dist/input/people.js.map +1 -0
  591. package/dist/input/remote-items.d.ts +20 -0
  592. package/dist/input/remote-items.js +36 -0
  593. package/dist/input/remote-items.js.map +1 -0
  594. package/dist/input/text-format.d.ts +46 -0
  595. package/dist/input/text-format.js +64 -0
  596. package/dist/input/text-format.js.map +1 -0
  597. package/dist/layout/Affix.d.ts +32 -0
  598. package/dist/layout/Affix.js +81 -0
  599. package/dist/layout/Affix.js.map +1 -0
  600. package/dist/layout/AsideLayout.d.ts +45 -0
  601. package/dist/layout/AsideLayout.js +69 -0
  602. package/dist/layout/AsideLayout.js.map +1 -0
  603. package/dist/layout/BackTop.d.ts +16 -0
  604. package/dist/layout/BackTop.js +83 -0
  605. package/dist/layout/BackTop.js.map +1 -0
  606. package/dist/layout/Container.d.ts +60 -0
  607. package/dist/layout/Container.js +62 -0
  608. package/dist/layout/Container.js.map +1 -0
  609. package/dist/layout/Flex.d.ts +116 -0
  610. package/dist/layout/Flex.js +109 -0
  611. package/dist/layout/Flex.js.map +1 -0
  612. package/dist/layout/Grid.d.ts +139 -0
  613. package/dist/layout/Grid.js +168 -0
  614. package/dist/layout/Grid.js.map +1 -0
  615. package/dist/layout/PageScrollbar.d.ts +20 -0
  616. package/dist/layout/PageScrollbar.js +49 -0
  617. package/dist/layout/PageScrollbar.js.map +1 -0
  618. package/dist/layout/Prose.d.ts +19 -0
  619. package/dist/layout/Prose.js +37 -0
  620. package/dist/layout/Prose.js.map +1 -0
  621. package/dist/layout/ResizeHandle.d.ts +28 -0
  622. package/dist/layout/ResizeHandle.js +94 -0
  623. package/dist/layout/ResizeHandle.js.map +1 -0
  624. package/dist/layout/ScrollArea.d.ts +99 -0
  625. package/dist/layout/ScrollArea.js +344 -0
  626. package/dist/layout/ScrollArea.js.map +1 -0
  627. package/dist/layout/Separator.d.ts +47 -0
  628. package/dist/layout/Separator.js +96 -0
  629. package/dist/layout/Separator.js.map +1 -0
  630. package/dist/layout/Splitter.d.ts +75 -0
  631. package/dist/layout/Splitter.js +236 -0
  632. package/dist/layout/Splitter.js.map +1 -0
  633. package/dist/layout/ViewportFill.d.ts +26 -0
  634. package/dist/layout/ViewportFill.js +59 -0
  635. package/dist/layout/ViewportFill.js.map +1 -0
  636. package/dist/navigation/Breadcrumbs.d.ts +59 -0
  637. package/dist/navigation/Breadcrumbs.js +150 -0
  638. package/dist/navigation/Breadcrumbs.js.map +1 -0
  639. package/dist/navigation/NavBar.d.ts +35 -0
  640. package/dist/navigation/NavBar.js +182 -0
  641. package/dist/navigation/NavBar.js.map +1 -0
  642. package/dist/navigation/NavList.d.ts +112 -0
  643. package/dist/navigation/NavList.js +375 -0
  644. package/dist/navigation/NavList.js.map +1 -0
  645. package/dist/navigation/PageJump.d.ts +27 -0
  646. package/dist/navigation/PageJump.js +77 -0
  647. package/dist/navigation/PageJump.js.map +1 -0
  648. package/dist/navigation/PageSizeSelect.d.ts +19 -0
  649. package/dist/navigation/PageSizeSelect.js +65 -0
  650. package/dist/navigation/PageSizeSelect.js.map +1 -0
  651. package/dist/navigation/Pager.d.ts +30 -0
  652. package/dist/navigation/Pager.js +111 -0
  653. package/dist/navigation/Pager.js.map +1 -0
  654. package/dist/navigation/Pagination.d.ts +51 -0
  655. package/dist/navigation/Pagination.js +157 -0
  656. package/dist/navigation/Pagination.js.map +1 -0
  657. package/dist/navigation/PaginationBar.d.ts +54 -0
  658. package/dist/navigation/PaginationBar.js +125 -0
  659. package/dist/navigation/PaginationBar.js.map +1 -0
  660. package/dist/navigation/SkipLink.d.ts +16 -0
  661. package/dist/navigation/SkipLink.js +58 -0
  662. package/dist/navigation/SkipLink.js.map +1 -0
  663. package/dist/navigation/Steps.d.ts +93 -0
  664. package/dist/navigation/Steps.js +198 -0
  665. package/dist/navigation/Steps.js.map +1 -0
  666. package/dist/navigation/TableOfContents.d.ts +32 -0
  667. package/dist/navigation/TableOfContents.js +119 -0
  668. package/dist/navigation/TableOfContents.js.map +1 -0
  669. package/dist/navigation/Tabs.d.ts +208 -0
  670. package/dist/navigation/Tabs.js +626 -0
  671. package/dist/navigation/Tabs.js.map +1 -0
  672. package/dist/navigation/Toolbar.d.ts +39 -0
  673. package/dist/navigation/Toolbar.js +67 -0
  674. package/dist/navigation/Toolbar.js.map +1 -0
  675. package/dist/overlay/AlertDialog.d.ts +43 -0
  676. package/dist/overlay/AlertDialog.js +106 -0
  677. package/dist/overlay/AlertDialog.js.map +1 -0
  678. package/dist/overlay/CommandPalette.d.ts +64 -0
  679. package/dist/overlay/CommandPalette.js +250 -0
  680. package/dist/overlay/CommandPalette.js.map +1 -0
  681. package/dist/overlay/ContextMenu.d.ts +21 -0
  682. package/dist/overlay/ContextMenu.js +76 -0
  683. package/dist/overlay/ContextMenu.js.map +1 -0
  684. package/dist/overlay/Dialog.d.ts +70 -0
  685. package/dist/overlay/Dialog.js +91 -0
  686. package/dist/overlay/Dialog.js.map +1 -0
  687. package/dist/overlay/Drawer.d.ts +186 -0
  688. package/dist/overlay/Drawer.js +214 -0
  689. package/dist/overlay/Drawer.js.map +1 -0
  690. package/dist/overlay/HoverCard.d.ts +48 -0
  691. package/dist/overlay/HoverCard.js +86 -0
  692. package/dist/overlay/HoverCard.js.map +1 -0
  693. package/dist/overlay/Lightbox.d.ts +57 -0
  694. package/dist/overlay/Lightbox.js +374 -0
  695. package/dist/overlay/Lightbox.js.map +1 -0
  696. package/dist/overlay/Menu.d.ts +218 -0
  697. package/dist/overlay/Menu.js +816 -0
  698. package/dist/overlay/Menu.js.map +1 -0
  699. package/dist/overlay/ModalCore.d.ts +132 -0
  700. package/dist/overlay/ModalCore.js +274 -0
  701. package/dist/overlay/ModalCore.js.map +1 -0
  702. package/dist/overlay/Popconfirm.d.ts +49 -0
  703. package/dist/overlay/Popconfirm.js +167 -0
  704. package/dist/overlay/Popconfirm.js.map +1 -0
  705. package/dist/overlay/Popover.d.ts +40 -0
  706. package/dist/overlay/Popover.js +96 -0
  707. package/dist/overlay/Popover.js.map +1 -0
  708. package/dist/overlay/Tooltip.d.ts +47 -0
  709. package/dist/overlay/Tooltip.js +86 -0
  710. package/dist/overlay/Tooltip.js.map +1 -0
  711. package/dist/overlay/Tour.d.ts +74 -0
  712. package/dist/overlay/Tour.js +309 -0
  713. package/dist/overlay/Tour.js.map +1 -0
  714. package/dist/overlay/detached.d.ts +40 -0
  715. package/dist/overlay/detached.js +109 -0
  716. package/dist/overlay/detached.js.map +1 -0
  717. package/dist/patterns/ActionBar.d.ts +29 -0
  718. package/dist/patterns/ActionBar.js +75 -0
  719. package/dist/patterns/ActionBar.js.map +1 -0
  720. package/dist/patterns/AppShell.d.ts +168 -0
  721. package/dist/patterns/AppShell.js +620 -0
  722. package/dist/patterns/AppShell.js.map +1 -0
  723. package/dist/patterns/CommentThread.d.ts +128 -0
  724. package/dist/patterns/CommentThread.js +386 -0
  725. package/dist/patterns/CommentThread.js.map +1 -0
  726. package/dist/patterns/DataImport.d.ts +72 -0
  727. package/dist/patterns/DataImport.js +486 -0
  728. package/dist/patterns/DataImport.js.map +1 -0
  729. package/dist/patterns/DeadlineBadge.d.ts +21 -0
  730. package/dist/patterns/DeadlineBadge.js +76 -0
  731. package/dist/patterns/DeadlineBadge.js.map +1 -0
  732. package/dist/patterns/FilterBar.d.ts +66 -0
  733. package/dist/patterns/FilterBar.js +254 -0
  734. package/dist/patterns/FilterBar.js.map +1 -0
  735. package/dist/patterns/KanbanBoard.d.ts +79 -0
  736. package/dist/patterns/KanbanBoard.js +294 -0
  737. package/dist/patterns/KanbanBoard.js.map +1 -0
  738. package/dist/patterns/NotificationCenter.d.ts +110 -0
  739. package/dist/patterns/NotificationCenter.js +342 -0
  740. package/dist/patterns/NotificationCenter.js.map +1 -0
  741. package/dist/patterns/PageTabs.d.ts +30 -0
  742. package/dist/patterns/PageTabs.js +97 -0
  743. package/dist/patterns/PageTabs.js.map +1 -0
  744. package/dist/patterns/QueryTable.d.ts +64 -0
  745. package/dist/patterns/QueryTable.js +276 -0
  746. package/dist/patterns/QueryTable.js.map +1 -0
  747. package/dist/patterns/StepsForm.d.ts +49 -0
  748. package/dist/patterns/StepsForm.js +130 -0
  749. package/dist/patterns/StepsForm.js.map +1 -0
  750. package/dist/patterns/ThemeSwitcher.d.ts +20 -0
  751. package/dist/patterns/ThemeSwitcher.js +102 -0
  752. package/dist/patterns/ThemeSwitcher.js.map +1 -0
  753. package/dist/patterns/form-dialog.d.ts +62 -0
  754. package/dist/patterns/form-dialog.js +143 -0
  755. package/dist/patterns/form-dialog.js.map +1 -0
  756. package/dist/patterns/index.d.ts +24 -0
  757. package/dist/patterns/index.js +15 -0
  758. package/dist/patterns/messages.d.ts +172 -0
  759. package/dist/patterns/messages.js +184 -0
  760. package/dist/patterns/messages.js.map +1 -0
  761. package/dist/table/ColumnHeaderActions.d.ts +71 -0
  762. package/dist/table/ColumnHeaderActions.js +247 -0
  763. package/dist/table/ColumnHeaderActions.js.map +1 -0
  764. package/dist/table/ColumnResizer.d.ts +12 -0
  765. package/dist/table/ColumnResizer.js +32 -0
  766. package/dist/table/ColumnResizer.js.map +1 -0
  767. package/dist/table/ColumnSettings.d.ts +34 -0
  768. package/dist/table/ColumnSettings.js +136 -0
  769. package/dist/table/ColumnSettings.js.map +1 -0
  770. package/dist/table/ColumnTable.d.ts +51 -0
  771. package/dist/table/ColumnTable.js +140 -0
  772. package/dist/table/ColumnTable.js.map +1 -0
  773. package/dist/table/DataTable.d.ts +44 -0
  774. package/dist/table/DataTable.js +453 -0
  775. package/dist/table/DataTable.js.map +1 -0
  776. package/dist/table/DataTableView.d.ts +328 -0
  777. package/dist/table/DataTableView.js +963 -0
  778. package/dist/table/DataTableView.js.map +1 -0
  779. package/dist/table/PivotTable.d.ts +66 -0
  780. package/dist/table/PivotTable.js +122 -0
  781. package/dist/table/PivotTable.js.map +1 -0
  782. package/dist/table/SelectionBar.d.ts +29 -0
  783. package/dist/table/SelectionBar.js +86 -0
  784. package/dist/table/SelectionBar.js.map +1 -0
  785. package/dist/table/Table.d.ts +169 -0
  786. package/dist/table/Table.js +304 -0
  787. package/dist/table/Table.js.map +1 -0
  788. package/dist/table/TreeDataTable.d.ts +36 -0
  789. package/dist/table/TreeDataTable.js +168 -0
  790. package/dist/table/TreeDataTable.js.map +1 -0
  791. package/dist/table/column-display.d.ts +20 -0
  792. package/dist/table/column-display.js +43 -0
  793. package/dist/table/column-display.js.map +1 -0
  794. package/dist/table/columns.d.ts +244 -0
  795. package/dist/table/columns.js +271 -0
  796. package/dist/table/columns.js.map +1 -0
  797. package/dist/table/csv.d.ts +24 -0
  798. package/dist/table/csv.js +35 -0
  799. package/dist/table/csv.js.map +1 -0
  800. package/dist/table/pivot.d.ts +66 -0
  801. package/dist/table/pivot.js +85 -0
  802. package/dist/table/pivot.js.map +1 -0
  803. package/dist/table/sheet.d.ts +44 -0
  804. package/dist/table/sheet.js +78 -0
  805. package/dist/table/sheet.js.map +1 -0
  806. package/dist/table/table-styles.d.ts +136 -0
  807. package/dist/table/table-styles.js +403 -0
  808. package/dist/table/table-styles.js.map +1 -0
  809. package/dist/table/use-table-query.d.ts +89 -0
  810. package/dist/table/use-table-query.js +194 -0
  811. package/dist/table/use-table-query.js.map +1 -0
  812. package/dist/theme-customize/ThemeCustomizer.d.ts +63 -0
  813. package/dist/theme-customize/ThemeCustomizer.js +361 -0
  814. package/dist/theme-customize/ThemeCustomizer.js.map +1 -0
  815. package/dist/theme-customize/ThemeThumbnail.d.ts +20 -0
  816. package/dist/theme-customize/ThemeThumbnail.js +82 -0
  817. package/dist/theme-customize/ThemeThumbnail.js.map +1 -0
  818. package/dist/theme-customize/contrast.d.ts +27 -0
  819. package/dist/theme-customize/contrast.js +251 -0
  820. package/dist/theme-customize/contrast.js.map +1 -0
  821. package/dist/theme-customize/customize.d.ts +65 -0
  822. package/dist/theme-customize/customize.js +105 -0
  823. package/dist/theme-customize/customize.js.map +1 -0
  824. package/dist/theme-customize/design-tokens.d.ts +31 -0
  825. package/dist/theme-customize/design-tokens.js +183 -0
  826. package/dist/theme-customize/design-tokens.js.map +1 -0
  827. package/dist/theme-customize/index.d.ts +20 -0
  828. package/dist/theme-customize/index.js +9 -0
  829. package/dist/theme-customize/messages.d.ts +74 -0
  830. package/dist/theme-customize/messages.js +142 -0
  831. package/dist/theme-customize/messages.js.map +1 -0
  832. package/dist/theme-customize/palette.d.ts +898 -0
  833. package/dist/theme-customize/palette.js +111 -0
  834. package/dist/theme-customize/palette.js.map +1 -0
  835. package/dist/theme-customize/token-catalog.d.ts +20 -0
  836. package/dist/theme-customize/token-catalog.js +836 -0
  837. package/dist/theme-customize/token-catalog.js.map +1 -0
  838. package/dist/three/background/AuroraBackground.d.ts +30 -0
  839. package/dist/three/background/AuroraBackground.js +80 -0
  840. package/dist/three/background/AuroraBackground.js.map +1 -0
  841. package/dist/three/background/MeshGradient.d.ts +28 -0
  842. package/dist/three/background/MeshGradient.js +76 -0
  843. package/dist/three/background/MeshGradient.js.map +1 -0
  844. package/dist/three/background/ShaderBackground.d.ts +25 -0
  845. package/dist/three/background/ShaderBackground.js +107 -0
  846. package/dist/three/background/ShaderBackground.js.map +1 -0
  847. package/dist/three/core/EffectSurface.d.ts +41 -0
  848. package/dist/three/core/EffectSurface.js +62 -0
  849. package/dist/three/core/EffectSurface.js.map +1 -0
  850. package/dist/three/core/ThreeCanvas.d.ts +39 -0
  851. package/dist/three/core/ThreeCanvas.js +77 -0
  852. package/dist/three/core/ThreeCanvas.js.map +1 -0
  853. package/dist/three/core/dispose.d.ts +9 -0
  854. package/dist/three/core/dispose.js +26 -0
  855. package/dist/three/core/dispose.js.map +1 -0
  856. package/dist/three/core/orbit.d.ts +31 -0
  857. package/dist/three/core/orbit.js +83 -0
  858. package/dist/three/core/orbit.js.map +1 -0
  859. package/dist/three/core/quality.d.ts +59 -0
  860. package/dist/three/core/quality.js +80 -0
  861. package/dist/three/core/quality.js.map +1 -0
  862. package/dist/three/core/renderer.d.ts +110 -0
  863. package/dist/three/core/renderer.js +303 -0
  864. package/dist/three/core/renderer.js.map +1 -0
  865. package/dist/three/core/shaders.d.ts +19 -0
  866. package/dist/three/core/shaders.js +100 -0
  867. package/dist/three/core/shaders.js.map +1 -0
  868. package/dist/three/core/theme-colors.d.ts +30 -0
  869. package/dist/three/core/theme-colors.js +113 -0
  870. package/dist/three/core/theme-colors.js.map +1 -0
  871. package/dist/three/effects/Confetti.d.ts +62 -0
  872. package/dist/three/effects/Confetti.js +242 -0
  873. package/dist/three/effects/Confetti.js.map +1 -0
  874. package/dist/three/effects/ParticleField.d.ts +39 -0
  875. package/dist/three/effects/ParticleField.js +266 -0
  876. package/dist/three/effects/ParticleField.js.map +1 -0
  877. package/dist/three/effects/WaveGrid.d.ts +37 -0
  878. package/dist/three/effects/WaveGrid.js +130 -0
  879. package/dist/three/effects/WaveGrid.js.map +1 -0
  880. package/dist/three/globe/Globe.d.ts +70 -0
  881. package/dist/three/globe/Globe.js +337 -0
  882. package/dist/three/globe/Globe.js.map +1 -0
  883. package/dist/three/globe/land.d.ts +9 -0
  884. package/dist/three/globe/land.js +14 -0
  885. package/dist/three/globe/land.js.map +1 -0
  886. package/dist/three/index.d.ts +24 -0
  887. package/dist/three/index.js +18 -0
  888. package/dist/three/model/ModelViewer.d.ts +63 -0
  889. package/dist/three/model/ModelViewer.js +193 -0
  890. package/dist/three/model/ModelViewer.js.map +1 -0
  891. package/dist/utils/data/collation.d.ts +36 -0
  892. package/dist/utils/data/collation.js +69 -0
  893. package/dist/utils/data/collation.js.map +1 -0
  894. package/dist/utils/data/color.d.ts +32 -0
  895. package/dist/utils/data/color.js +90 -0
  896. package/dist/utils/data/color.js.map +1 -0
  897. package/dist/utils/data/date.d.ts +186 -0
  898. package/dist/utils/data/date.js +409 -0
  899. package/dist/utils/data/date.js.map +1 -0
  900. package/dist/utils/data/diff.d.ts +21 -0
  901. package/dist/utils/data/diff.js +43 -0
  902. package/dist/utils/data/diff.js.map +1 -0
  903. package/dist/utils/data/equality.d.ts +5 -0
  904. package/dist/utils/data/equality.js +24 -0
  905. package/dist/utils/data/equality.js.map +1 -0
  906. package/dist/utils/data/history.d.ts +59 -0
  907. package/dist/utils/data/history.js +132 -0
  908. package/dist/utils/data/history.js.map +1 -0
  909. package/dist/utils/data/intl-cache.d.ts +8 -0
  910. package/dist/utils/data/intl-cache.js +19 -0
  911. package/dist/utils/data/intl-cache.js.map +1 -0
  912. package/dist/utils/data/number-parse.d.ts +7 -0
  913. package/dist/utils/data/number-parse.js +45 -0
  914. package/dist/utils/data/number-parse.js.map +1 -0
  915. package/dist/utils/data/number.d.ts +10 -0
  916. package/dist/utils/data/number.js +28 -0
  917. package/dist/utils/data/number.js.map +1 -0
  918. package/dist/utils/data/numeric.d.ts +55 -0
  919. package/dist/utils/data/numeric.js +133 -0
  920. package/dist/utils/data/numeric.js.map +1 -0
  921. package/dist/utils/data/pagination.d.ts +21 -0
  922. package/dist/utils/data/pagination.js +22 -0
  923. package/dist/utils/data/pagination.js.map +1 -0
  924. package/dist/utils/data/selection.d.ts +41 -0
  925. package/dist/utils/data/selection.js +21 -0
  926. package/dist/utils/data/selection.js.map +1 -0
  927. package/dist/utils/data/status.d.ts +43 -0
  928. package/dist/utils/data/status.js +27 -0
  929. package/dist/utils/data/status.js.map +1 -0
  930. package/dist/utils/data/text.d.ts +12 -0
  931. package/dist/utils/data/text.js +30 -0
  932. package/dist/utils/data/text.js.map +1 -0
  933. package/dist/utils/data/tree.d.ts +140 -0
  934. package/dist/utils/data/tree.js +273 -0
  935. package/dist/utils/data/tree.js.map +1 -0
  936. package/dist/utils/data/workdays.d.ts +67 -0
  937. package/dist/utils/data/workdays.js +67 -0
  938. package/dist/utils/data/workdays.js.map +1 -0
  939. package/dist/utils/dom/announcer.d.ts +11 -0
  940. package/dist/utils/dom/announcer.js +53 -0
  941. package/dist/utils/dom/announcer.js.map +1 -0
  942. package/dist/utils/dom/caret.d.ts +14 -0
  943. package/dist/utils/dom/caret.js +72 -0
  944. package/dist/utils/dom/caret.js.map +1 -0
  945. package/dist/utils/dom/clipboard.d.ts +16 -0
  946. package/dist/utils/dom/clipboard.js +66 -0
  947. package/dist/utils/dom/clipboard.js.map +1 -0
  948. package/dist/utils/dom/direction.d.ts +12 -0
  949. package/dist/utils/dom/direction.js +20 -0
  950. package/dist/utils/dom/direction.js.map +1 -0
  951. package/dist/utils/dom/download.d.ts +7 -0
  952. package/dist/utils/dom/download.js +19 -0
  953. package/dist/utils/dom/download.js.map +1 -0
  954. package/dist/utils/dom/element.d.ts +3 -0
  955. package/dist/utils/dom/element.js +12 -0
  956. package/dist/utils/dom/element.js.map +1 -0
  957. package/dist/utils/dom/event-listener.d.ts +8 -0
  958. package/dist/utils/dom/event-listener.js +35 -0
  959. package/dist/utils/dom/event-listener.js.map +1 -0
  960. package/dist/utils/dom/floating.d.ts +149 -0
  961. package/dist/utils/dom/floating.js +262 -0
  962. package/dist/utils/dom/floating.js.map +1 -0
  963. package/dist/utils/dom/focus.d.ts +28 -0
  964. package/dist/utils/dom/focus.js +105 -0
  965. package/dist/utils/dom/focus.js.map +1 -0
  966. package/dist/utils/dom/fullscreen.d.ts +11 -0
  967. package/dist/utils/dom/fullscreen.js +43 -0
  968. package/dist/utils/dom/fullscreen.js.map +1 -0
  969. package/dist/utils/dom/hotkeys.d.ts +43 -0
  970. package/dist/utils/dom/hotkeys.js +174 -0
  971. package/dist/utils/dom/hotkeys.js.map +1 -0
  972. package/dist/utils/dom/hover-intent.d.ts +47 -0
  973. package/dist/utils/dom/hover-intent.js +72 -0
  974. package/dist/utils/dom/hover-intent.js.map +1 -0
  975. package/dist/utils/dom/hover-layer.d.ts +36 -0
  976. package/dist/utils/dom/hover-layer.js +74 -0
  977. package/dist/utils/dom/hover-layer.js.map +1 -0
  978. package/dist/utils/dom/intersection.d.ts +13 -0
  979. package/dist/utils/dom/intersection.js +36 -0
  980. package/dist/utils/dom/intersection.js.map +1 -0
  981. package/dist/utils/dom/layout-batch.d.ts +14 -0
  982. package/dist/utils/dom/layout-batch.js +26 -0
  983. package/dist/utils/dom/layout-batch.js.map +1 -0
  984. package/dist/utils/dom/link.d.ts +18 -0
  985. package/dist/utils/dom/link.js +44 -0
  986. package/dist/utils/dom/link.js.map +1 -0
  987. package/dist/utils/dom/media-query.d.ts +18 -0
  988. package/dist/utils/dom/media-query.js +36 -0
  989. package/dist/utils/dom/media-query.js.map +1 -0
  990. package/dist/utils/dom/move.d.ts +47 -0
  991. package/dist/utils/dom/move.js +69 -0
  992. package/dist/utils/dom/move.js.map +1 -0
  993. package/dist/utils/dom/open-change.d.ts +51 -0
  994. package/dist/utils/dom/open-change.js +21 -0
  995. package/dist/utils/dom/open-change.js.map +1 -0
  996. package/dist/utils/dom/overflow.d.ts +29 -0
  997. package/dist/utils/dom/overflow.js +108 -0
  998. package/dist/utils/dom/overflow.js.map +1 -0
  999. package/dist/utils/dom/overlay.d.ts +35 -0
  1000. package/dist/utils/dom/overlay.js +104 -0
  1001. package/dist/utils/dom/overlay.js.map +1 -0
  1002. package/dist/utils/dom/page-visibility.d.ts +10 -0
  1003. package/dist/utils/dom/page-visibility.js +22 -0
  1004. package/dist/utils/dom/page-visibility.js.map +1 -0
  1005. package/dist/utils/dom/pan-zoom.d.ts +109 -0
  1006. package/dist/utils/dom/pan-zoom.js +257 -0
  1007. package/dist/utils/dom/pan-zoom.js.map +1 -0
  1008. package/dist/utils/dom/rasterize.d.ts +18 -0
  1009. package/dist/utils/dom/rasterize.js +41 -0
  1010. package/dist/utils/dom/rasterize.js.map +1 -0
  1011. package/dist/utils/dom/resize.d.ts +4 -0
  1012. package/dist/utils/dom/resize.js +65 -0
  1013. package/dist/utils/dom/resize.js.map +1 -0
  1014. package/dist/utils/dom/ripple.d.ts +40 -0
  1015. package/dist/utils/dom/ripple.js +96 -0
  1016. package/dist/utils/dom/ripple.js.map +1 -0
  1017. package/dist/utils/dom/roving-focus.d.ts +44 -0
  1018. package/dist/utils/dom/roving-focus.js +184 -0
  1019. package/dist/utils/dom/roving-focus.js.map +1 -0
  1020. package/dist/utils/dom/scroll-spy.d.ts +30 -0
  1021. package/dist/utils/dom/scroll-spy.js +55 -0
  1022. package/dist/utils/dom/scroll-spy.js.map +1 -0
  1023. package/dist/utils/dom/sortable.d.ts +82 -0
  1024. package/dist/utils/dom/sortable.js +437 -0
  1025. package/dist/utils/dom/sortable.js.map +1 -0
  1026. package/dist/utils/dom/storage.d.ts +21 -0
  1027. package/dist/utils/dom/storage.js +66 -0
  1028. package/dist/utils/dom/storage.js.map +1 -0
  1029. package/dist/utils/dom/typeahead.d.ts +15 -0
  1030. package/dist/utils/dom/typeahead.js +26 -0
  1031. package/dist/utils/dom/typeahead.js.map +1 -0
  1032. package/dist/utils/motion/active-indicator.d.ts +24 -0
  1033. package/dist/utils/motion/active-indicator.js +58 -0
  1034. package/dist/utils/motion/active-indicator.js.map +1 -0
  1035. package/dist/utils/motion/animation.d.ts +58 -0
  1036. package/dist/utils/motion/animation.js +83 -0
  1037. package/dist/utils/motion/animation.js.map +1 -0
  1038. package/dist/utils/motion/delayed-loading.d.ts +18 -0
  1039. package/dist/utils/motion/delayed-loading.js +38 -0
  1040. package/dist/utils/motion/delayed-loading.js.map +1 -0
  1041. package/dist/utils/motion/layout.d.ts +17 -0
  1042. package/dist/utils/motion/layout.js +43 -0
  1043. package/dist/utils/motion/layout.js.map +1 -0
  1044. package/dist/utils/motion/pointer.d.ts +14 -0
  1045. package/dist/utils/motion/pointer.js +72 -0
  1046. package/dist/utils/motion/pointer.js.map +1 -0
  1047. package/dist/utils/motion/presence.d.ts +57 -0
  1048. package/dist/utils/motion/presence.js +100 -0
  1049. package/dist/utils/motion/presence.js.map +1 -0
  1050. package/dist/utils/motion/reveal.d.ts +9 -0
  1051. package/dist/utils/motion/reveal.js +68 -0
  1052. package/dist/utils/motion/reveal.js.map +1 -0
  1053. package/dist/utils/motion/tween.d.ts +34 -0
  1054. package/dist/utils/motion/tween.js +50 -0
  1055. package/dist/utils/motion/tween.js.map +1 -0
  1056. package/dist/utils/props.d.ts +84 -0
  1057. package/dist/utils/props.js +189 -0
  1058. package/dist/utils/props.js.map +1 -0
  1059. package/dist/utils/request/http.d.ts +101 -0
  1060. package/dist/utils/request/http.js +154 -0
  1061. package/dist/utils/request/http.js.map +1 -0
  1062. package/dist/utils/request/use-request.d.ts +37 -0
  1063. package/dist/utils/request/use-request.js +90 -0
  1064. package/dist/utils/request/use-request.js.map +1 -0
  1065. package/dist/utils/request/wire.d.ts +48 -0
  1066. package/dist/utils/request/wire.js +208 -0
  1067. package/dist/utils/request/wire.js.map +1 -0
  1068. package/dist/utils/style/attached.d.ts +25 -0
  1069. package/dist/utils/style/attached.js +82 -0
  1070. package/dist/utils/style/attached.js.map +1 -0
  1071. package/dist/utils/style/item-styles.d.ts +18 -0
  1072. package/dist/utils/style/item-styles.js +79 -0
  1073. package/dist/utils/style/item-styles.js.map +1 -0
  1074. package/dist/utils/style/markers.d.ts +6 -0
  1075. package/dist/utils/style/markers.js +11 -0
  1076. package/dist/utils/style/markers.js.map +1 -0
  1077. package/dist/utils/style/shimmer.d.ts +20 -0
  1078. package/dist/utils/style/shimmer.js +58 -0
  1079. package/dist/utils/style/shimmer.js.map +1 -0
  1080. package/dist/utils/style/styles.d.ts +118 -0
  1081. package/dist/utils/style/styles.js +114 -0
  1082. package/dist/utils/style/styles.js.map +1 -0
  1083. package/dist/utils/style/swatch-styles.d.ts +10 -0
  1084. package/dist/utils/style/swatch-styles.js +19 -0
  1085. package/dist/utils/style/swatch-styles.js.map +1 -0
  1086. package/dist/utils/style/tone-styles.d.ts +58 -0
  1087. package/dist/utils/style/tone-styles.js +180 -0
  1088. package/dist/utils/style/tone-styles.js.map +1 -0
  1089. package/dist/utils/style/transitions.d.ts +43 -0
  1090. package/dist/utils/style/transitions.js +118 -0
  1091. package/dist/utils/style/transitions.js.map +1 -0
  1092. package/dist/utils/style/typography.d.ts +155 -0
  1093. package/dist/utils/style/typography.js +80 -0
  1094. package/dist/utils/style/typography.js.map +1 -0
  1095. package/dist/utils/style/vars.d.ts +18 -0
  1096. package/dist/utils/style/vars.js +21 -0
  1097. package/dist/utils/style/vars.js.map +1 -0
  1098. package/dist/utils/virtual/use-virtualizer.d.ts +43 -0
  1099. package/dist/utils/virtual/use-virtualizer.js +94 -0
  1100. package/dist/utils/virtual/use-virtualizer.js.map +1 -0
  1101. package/dist/utils/virtual/virtualizer.d.ts +145 -0
  1102. package/dist/utils/virtual/virtualizer.js +316 -0
  1103. package/dist/utils/virtual/virtualizer.js.map +1 -0
  1104. package/dist/xlsx/index.d.ts +7 -0
  1105. package/dist/xlsx/index.js +1 -0
  1106. package/dist/xlsx/workbook.d.ts +33 -0
  1107. package/dist/xlsx/workbook.js +195 -0
  1108. package/dist/xlsx/workbook.js.map +1 -0
  1109. package/package.json +205 -3
@@ -0,0 +1,303 @@
1
+ import { clamp } from "../../utils/data/number.js";
2
+ import { durations } from "../../config/theme/tokens.js";
3
+ import { useConfig } from "../../config/context.js";
4
+ import { readToken } from "../../config/theme/theme.js";
5
+ import { parseDuration } from "../../utils/motion/animation.js";
6
+ import { useResizeObserver } from "../../utils/dom/resize.js";
7
+ import { useIntersectionObserver } from "../../utils/dom/intersection.js";
8
+ import { useReducedMotion } from "../../utils/dom/media-query.js";
9
+ import { usePointer } from "../../utils/motion/pointer.js";
10
+ import { usePageVisible } from "../../utils/dom/page-visibility.js";
11
+ import { disposeObject } from "./dispose.js";
12
+ import { acquireContext, releaseContext, resolveThreeQuality, retryWaiting } from "./quality.js";
13
+ import { createThemeColorSet } from "./theme-colors.js";
14
+ import { onScopeDispose, shallowRef, watch } from "vue";
15
+ import { PerspectiveCamera, Scene, WebGLRenderer } from "three";
16
+ //#region src/three/core/renderer.ts
17
+ /**
18
+ * three.js 渲染器的生命周期(ThreeCanvas 用它;要自己安排外层结构时也可以直接用):
19
+ *
20
+ * const three = useThree({ canvas: () => canvas, setup: (context) => { …; return { frame } } });
21
+ * <canvas key={three.generation} ref={…} />
22
+ *
23
+ * - 第一次进入视口时才创建渲染器,占用 WebGL 上下文的名额(quality.ts);被回收、上下文丢失后换一块新 canvas
24
+ * (generation 加一,渲染方用它作 key)再建,所以场景要在 setup 里搭,不要在外面持有渲染器;
25
+ * - 所有效果共用一个 requestAnimationFrame 循环;滚出视口、标签页隐藏、paused 时停下;
26
+ * - 减少动态效果(系统设置,或主题的时长为 0)时只画一帧静止画面,尺寸、主题色变化时(invalidate)重画;
27
+ * - 尺寸跟随 canvas 的布局尺寸(ResizeObserver),像素比取设备与画质档位上限的较小值;
28
+ * - 卸载、被回收时释放场景里的几何体、材质、纹理和渲染器,并立即交还上下文(forceContextLoss),
29
+ * 不等浏览器回收;上下文连续丢失三次后改显示降级内容。
30
+ */
31
+ var tickers = /* @__PURE__ */ new Set();
32
+ var tickerFrame = 0;
33
+ function runTickers(now) {
34
+ tickerFrame = 0;
35
+ for (const tick of [...tickers]) tick(now);
36
+ if (tickers.size) tickerFrame = requestAnimationFrame(runTickers);
37
+ }
38
+ function subscribe(tick) {
39
+ tickers.add(tick);
40
+ tickerFrame ||= requestAnimationFrame(runTickers);
41
+ }
42
+ /** 上下文连续丢失这么多次后不再重建,改显示降级内容 */
43
+ var MAX_CONTEXT_LOSSES = 3;
44
+ /** 主题的时长为 0(主题编辑器关掉了动效,或系统要求减少动态效果):读不到主题时当作有动效 */
45
+ function themeMotionOff(element) {
46
+ try {
47
+ return parseDuration(readToken(element, durations.md)) === 0;
48
+ } catch {
49
+ return false;
50
+ }
51
+ }
52
+ /** three.js 渲染器的生命周期(在 setup 里调用),见文件开头 */
53
+ function useThree(options) {
54
+ const config = useConfig();
55
+ const reducedMotion = useReducedMotion();
56
+ const off = () => options.quality?.() === "off";
57
+ const status = shallowRef(off() ? "fallback" : "idle");
58
+ const pointer = usePointer(options.canvas);
59
+ const generation = shallowRef(0);
60
+ const themeStill = shallowRef(false);
61
+ const pageVisible = usePageVisible();
62
+ const visible = shallowRef(false);
63
+ let instance;
64
+ let lastSeen = 0;
65
+ let losses = 0;
66
+ let unmounted = false;
67
+ let unsupported = false;
68
+ const still = () => reducedMotion.value || themeStill.value;
69
+ const holder = {
70
+ get visible() {
71
+ return visible.value;
72
+ },
73
+ get lastSeen() {
74
+ return lastSeen;
75
+ },
76
+ evict() {
77
+ teardown();
78
+ status.value = "idle";
79
+ generation.value++;
80
+ },
81
+ retry: () => start()
82
+ };
83
+ function draw(target, delta) {
84
+ target.handle.frame?.({
85
+ time: target.time,
86
+ delta
87
+ }, target.context);
88
+ target.renderer.render(target.context.scene, target.context.camera);
89
+ }
90
+ function tick(now) {
91
+ const target = instance;
92
+ if (!target) return;
93
+ const delta = target.last ? Math.min((now - target.last) / 1e3, .1) : 0;
94
+ target.last = now;
95
+ target.time += delta;
96
+ draw(target, delta);
97
+ }
98
+ function invalidate() {
99
+ const target = instance;
100
+ if (!target || target.ticking || target.pending) return;
101
+ target.pending = requestAnimationFrame(() => {
102
+ target.pending = 0;
103
+ if (instance === target) draw(target, 0);
104
+ });
105
+ }
106
+ function resize(target) {
107
+ const { canvas, context, renderer, handle } = target;
108
+ const size = context.size;
109
+ size.width = canvas.clientWidth;
110
+ size.height = canvas.clientHeight;
111
+ size.pixelRatio = Math.min(globalThis.devicePixelRatio || 1, context.quality.pixelRatio) * clamp(options.resolution?.() ?? 1, .1, 1);
112
+ renderer.setPixelRatio(size.pixelRatio);
113
+ renderer.setSize(size.width, size.height, false);
114
+ const camera = context.camera;
115
+ if (camera.isPerspectiveCamera && size.height > 0) {
116
+ camera.aspect = size.width / size.height;
117
+ camera.updateProjectionMatrix();
118
+ }
119
+ handle.resize?.(size, context);
120
+ invalidate();
121
+ }
122
+ function create(canvas, level) {
123
+ const quality = resolveThreeQuality(level);
124
+ const renderer = new WebGLRenderer({
125
+ canvas,
126
+ alpha: true,
127
+ antialias: quality.antialias
128
+ });
129
+ renderer.setClearColor(0, 0);
130
+ const camera = new PerspectiveCamera(45, 1, .1, 100);
131
+ camera.position.z = 5;
132
+ const colorSets = [];
133
+ const context = {
134
+ renderer,
135
+ scene: new Scene(),
136
+ camera,
137
+ canvas,
138
+ size: {
139
+ width: 0,
140
+ height: 0,
141
+ pixelRatio: 1
142
+ },
143
+ quality,
144
+ pointer,
145
+ get still() {
146
+ return still();
147
+ },
148
+ invalidate,
149
+ themeColors(sources) {
150
+ const set = createThemeColorSet(invalidate);
151
+ set.refresh(canvas, sources, false);
152
+ colorSets.push({
153
+ set,
154
+ sources
155
+ });
156
+ return set.colors;
157
+ },
158
+ themeColorList(sources, size) {
159
+ const used = size == null ? sources : sources.slice(0, size);
160
+ const themed = context.themeColors(Object.fromEntries(used.map((color, i) => [i, color])));
161
+ const list = used.map((_, index) => themed[index]);
162
+ while (size != null && list.length < size) list.push(list.at(-1));
163
+ return list;
164
+ }
165
+ };
166
+ const target = {
167
+ renderer,
168
+ context,
169
+ handle: {},
170
+ canvas,
171
+ onLost: () => lose(target),
172
+ time: 0,
173
+ last: 0,
174
+ pending: 0,
175
+ ticking: false,
176
+ colorSets
177
+ };
178
+ canvas.addEventListener("webglcontextlost", target.onLost);
179
+ return target;
180
+ }
181
+ function start() {
182
+ const canvas = options.canvas();
183
+ if (unmounted || instance || !canvas || !visible.value || status.value === "fallback") return;
184
+ const level = options.quality?.();
185
+ if (level === "off") return;
186
+ if (!acquireContext(holder)) return;
187
+ try {
188
+ instance = create(canvas, level);
189
+ } catch {
190
+ releaseContext(holder);
191
+ unsupported = true;
192
+ status.value = "fallback";
193
+ return;
194
+ }
195
+ try {
196
+ instance.handle = options.setup(instance.context) ?? {};
197
+ } catch (error) {
198
+ teardown();
199
+ unsupported = true;
200
+ status.value = "fallback";
201
+ throw error;
202
+ }
203
+ resize(instance);
204
+ update();
205
+ }
206
+ function teardown() {
207
+ const target = instance;
208
+ if (!target) return;
209
+ instance = void 0;
210
+ tickers.delete(tick);
211
+ cancelAnimationFrame(target.pending);
212
+ target.canvas.removeEventListener("webglcontextlost", target.onLost);
213
+ for (const { set } of target.colorSets) set.stop();
214
+ target.handle.dispose?.();
215
+ disposeObject(target.context.scene);
216
+ target.renderer.dispose();
217
+ if (!target.renderer.getContext().isContextLost()) target.renderer.forceContextLoss();
218
+ releaseContext(holder);
219
+ }
220
+ function lose(target) {
221
+ if (instance !== target) return;
222
+ teardown();
223
+ losses++;
224
+ unsupported = losses >= MAX_CONTEXT_LOSSES;
225
+ status.value = unsupported ? "fallback" : "idle";
226
+ if (status.value === "idle") generation.value++;
227
+ }
228
+ /** 按可见性、暂停、静止决定循环开还是停 */
229
+ function update() {
230
+ const target = instance;
231
+ if (!target) return;
232
+ const mode = still() ? "still" : options.paused?.() || !visible.value || !pageVisible.value ? "paused" : "running";
233
+ target.ticking = mode === "running";
234
+ if (target.ticking) {
235
+ target.last = 0;
236
+ subscribe(tick);
237
+ } else {
238
+ tickers.delete(tick);
239
+ if (mode === "still") invalidate();
240
+ }
241
+ status.value = mode;
242
+ }
243
+ if (typeof IntersectionObserver === "undefined") visible.value = true;
244
+ useIntersectionObserver(options.canvas, ([entry]) => {
245
+ visible.value = entry.isIntersecting;
246
+ lastSeen = performance.now();
247
+ });
248
+ useResizeObserver(options.canvas, () => instance && resize(instance));
249
+ watch(options.canvas, (canvas) => canvas && start(), {
250
+ immediate: true,
251
+ flush: "post"
252
+ });
253
+ watch(visible, (shown) => {
254
+ if (instance) update();
255
+ else start();
256
+ if (!shown && instance) retryWaiting();
257
+ });
258
+ watch([
259
+ () => options.paused?.(),
260
+ reducedMotion,
261
+ themeStill,
262
+ pageVisible
263
+ ], update);
264
+ watch([() => config.theme, options.canvas], ([, canvas]) => {
265
+ if (!canvas) return;
266
+ themeStill.value = themeMotionOff(canvas);
267
+ for (const { set, sources } of instance?.colorSets ?? []) set.refresh(canvas, sources, true);
268
+ invalidate();
269
+ }, {
270
+ immediate: true,
271
+ flush: "post"
272
+ });
273
+ watch(() => options.resolution?.(), () => instance && resize(instance));
274
+ watch(() => options.quality?.(), () => {
275
+ if (unsupported) return;
276
+ if (off()) {
277
+ teardown();
278
+ status.value = "fallback";
279
+ } else if (instance || status.value === "fallback") {
280
+ teardown();
281
+ status.value = "idle";
282
+ generation.value++;
283
+ }
284
+ });
285
+ onScopeDispose(() => {
286
+ unmounted = true;
287
+ teardown();
288
+ releaseContext(holder);
289
+ });
290
+ return {
291
+ get status() {
292
+ return status.value;
293
+ },
294
+ get generation() {
295
+ return generation.value;
296
+ },
297
+ invalidate
298
+ };
299
+ }
300
+ //#endregion
301
+ export { useThree };
302
+
303
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","names":[],"sources":["../../../src/three/core/renderer.ts"],"sourcesContent":["/**\n * three.js 渲染器的生命周期(ThreeCanvas 用它;要自己安排外层结构时也可以直接用):\n *\n * const three = useThree({ canvas: () => canvas, setup: (context) => { …; return { frame } } });\n * <canvas key={three.generation} ref={…} />\n *\n * - 第一次进入视口时才创建渲染器,占用 WebGL 上下文的名额(quality.ts);被回收、上下文丢失后换一块新 canvas\n * (generation 加一,渲染方用它作 key)再建,所以场景要在 setup 里搭,不要在外面持有渲染器;\n * - 所有效果共用一个 requestAnimationFrame 循环;滚出视口、标签页隐藏、paused 时停下;\n * - 减少动态效果(系统设置,或主题的时长为 0)时只画一帧静止画面,尺寸、主题色变化时(invalidate)重画;\n * - 尺寸跟随 canvas 的布局尺寸(ResizeObserver),像素比取设备与画质档位上限的较小值;\n * - 卸载、被回收时释放场景里的几何体、材质、纹理和渲染器,并立即交还上下文(forceContextLoss),\n * 不等浏览器回收;上下文连续丢失三次后改显示降级内容。\n */\nimport { PerspectiveCamera, Scene, WebGLRenderer, type Camera, type Color } from 'three';\nimport { onScopeDispose, shallowRef, watch } from 'vue';\nimport { useConfig } from '../../config/context';\nimport { readToken } from '../../config/theme/theme';\nimport { durations } from '../../config/theme/tokens';\nimport { useReducedMotion } from '../../utils/dom/media-query';\nimport { useIntersectionObserver } from '../../utils/dom/intersection';\nimport { usePageVisible } from '../../utils/dom/page-visibility';\nimport { useResizeObserver } from '../../utils/dom/resize';\nimport { disposeObject } from './dispose';\nimport { clamp } from '../../utils/data/number';\nimport { parseDuration } from '../../utils/motion/animation';\nimport { usePointer, type PointerState } from '../../utils/motion/pointer';\nimport {\n acquireContext,\n releaseContext,\n resolveThreeQuality,\n retryWaiting,\n type ContextHolder,\n type ResolvedThreeQuality,\n type ThreeQuality,\n} from './quality';\nimport {\n createThemeColorSet,\n type ThemeColors,\n type ThemeColorSet,\n type ThemeColorSources,\n} from './theme-colors';\n\n/** 画布的尺寸(CSS 像素)与实际使用的像素比 */\nexport interface ThreeSize {\n /** 宽度(CSS 像素) */\n width: number;\n /** 高度(CSS 像素) */\n height: number;\n /** 实际使用的像素比:设备像素比按画质档位封顶 */\n pixelRatio: number;\n}\n\n/** 交给 setup 的场景上下文 */\nexport interface ThreeContext {\n /** 渲染器:透明背景,像素比与尺寸由这里管理 */\n readonly renderer: WebGLRenderer;\n /** 场景:卸载时连同里面的几何体、材质、纹理一起释放 */\n readonly scene: Scene;\n /** 相机:默认是透视相机(视角 45°,位于 z = 5),宽高比自动跟随;可以换成别的相机 */\n camera: Camera;\n /** 渲染器画到的 canvas 元素 */\n readonly canvas: HTMLCanvasElement;\n /** 当前尺寸,随布局变化 */\n readonly size: Readonly<ThreeSize>;\n /** 画质档位的参数:粒子数、细分等按 density 缩放 */\n readonly quality: ResolvedThreeQuality;\n /** 只画静止画面(减少动态效果):指针跟随之类的交互也应停下 */\n readonly still: boolean;\n /** 指针相对画布的位置(-1 到 1)与 strength(指针在画布上为 1,离开后淡出),弹簧阻尼,见 pointer.ts */\n readonly pointer: PointerState;\n /** 请求重画一帧:循环停着(静止、暂停)时,数据变了用它刷新 */\n invalidate: () => void;\n /**\n * 跟随画布所在位置主题的颜色(THREE.Color):换主题时原地过渡到新色并重画。\n * 材质的 color 直接赋这个对象(`material.color = palette.accent`),见 theme-colors.ts\n */\n themeColors: <Sources extends ThemeColorSources>(sources: Sources) => ThemeColors<Sources>;\n /**\n * 一列跟随主题的颜色(着色器的色板 uColors、粒子的色调):给了 size 时取前 size 个,不足的用最后一个补齐\n * (uniform 数组的长度是固定的);sources 不能为空\n */\n themeColorList: (sources: readonly string[], size?: number) => Color[];\n}\n\n/** 每帧交给 frame 的时间 */\nexport interface ThreeFrame {\n /** 动画时间(秒):只在循环运行时增长,暂停后接着走 */\n time: number;\n /** 距上一帧(秒),最多 0.1:切回标签页时不跳一大步 */\n delta: number;\n}\n\n/** setup 返回的场景回调,都可省 */\nexport interface ThreeSceneHandle {\n /** 每帧渲染前调用:更新 uniform、位置 */\n frame?(frame: ThreeFrame, context: ThreeContext): void;\n /** 尺寸变化后调用(相机的宽高比已更新) */\n resize?(size: Readonly<ThreeSize>, context: ThreeContext): void;\n /** 释放前调用:清理 setup 里自己加的监听、加载器;场景里的对象由这里统一释放 */\n dispose?(): void;\n}\n\n/** 渲染状态,写在根元素的 data-state 上 */\nexport type ThreeStatus =\n /** 还没创建(没进过视口、在排队、被回收) */\n | 'idle'\n /** 循环运行中 */\n | 'running'\n /** 停着:滚出视口、标签页隐藏或 paused */\n | 'paused'\n /** 只画了一帧静止画面(减少动态效果) */\n | 'still'\n /** 没有 WebGL,或画质是 off:显示降级内容 */\n | 'fallback';\n\n/** useThree 的选项 */\nexport interface ThreeOptions {\n /** 画在哪块 canvas 上(渲染方按 generation 换新的) */\n canvas: () => HTMLCanvasElement | null | undefined;\n /** 搭场景:每次创建渲染器时调用一次 */\n setup: (context: ThreeContext) => ThreeSceneHandle | void;\n /** 画质档位,默认 auto;变了会重建,off 时释放渲染器、显示降级内容 */\n quality?: () => ThreeQuality | undefined;\n /** 暂停循环(停在当前画面) */\n paused?: () => boolean | undefined;\n /** 渲染分辨率相对像素比的倍数(0–1),平滑的渐变类效果用 0.5 能省下大半的填充开销;默认 1 */\n resolution?: () => number | undefined;\n}\n\n/** useThree 的返回值 */\nexport interface ThreeController {\n /** 渲染状态,响应式 */\n readonly status: ThreeStatus;\n /** canvas 的代数:重建时加一,渲染方用作 canvas 的 key */\n readonly generation: number;\n /** 请求重画一帧 */\n invalidate: () => void;\n}\n\n// 所有效果共用一个动画帧循环\nconst tickers = new Set<(now: number) => void>();\nlet tickerFrame = 0;\n\nfunction runTickers(now: number) {\n tickerFrame = 0;\n for (const tick of [...tickers]) tick(now);\n if (tickers.size) tickerFrame = requestAnimationFrame(runTickers);\n}\n\nfunction subscribe(tick: (now: number) => void) {\n tickers.add(tick);\n tickerFrame ||= requestAnimationFrame(runTickers);\n}\n\n/** 上下文连续丢失这么多次后不再重建,改显示降级内容 */\nconst MAX_CONTEXT_LOSSES = 3;\n\n/** 主题的时长为 0(主题编辑器关掉了动效,或系统要求减少动态效果):读不到主题时当作有动效 */\nfunction themeMotionOff(element: Element) {\n try {\n return parseDuration(readToken(element, durations.md)) === 0;\n } catch {\n return false;\n }\n}\n\ninterface Instance {\n renderer: WebGLRenderer;\n context: ThreeContext;\n handle: ThreeSceneHandle;\n canvas: HTMLCanvasElement;\n onLost: () => void;\n time: number;\n last: number;\n pending: number;\n ticking: boolean;\n colorSets: { set: ThemeColorSet<ThemeColorSources>; sources: ThemeColorSources }[];\n}\n\n/** three.js 渲染器的生命周期(在 setup 里调用),见文件开头 */\nexport function useThree(options: ThreeOptions): ThreeController {\n const config = useConfig();\n const reducedMotion = useReducedMotion();\n const off = () => options.quality?.() === 'off';\n const status = shallowRef<ThreeStatus>(off() ? 'fallback' : 'idle');\n const pointer = usePointer(options.canvas);\n const generation = shallowRef(0);\n const themeStill = shallowRef(false);\n const pageVisible = usePageVisible();\n const visible = shallowRef(false);\n\n let instance: Instance | undefined;\n let lastSeen = 0;\n let losses = 0;\n let unmounted = false;\n // 创建失败或上下文反复丢失:换画质也不再重试(区别于 off 的降级)\n let unsupported = false;\n\n const still = () => reducedMotion.value || themeStill.value;\n\n const holder: ContextHolder = {\n get visible() {\n return visible.value;\n },\n get lastSeen() {\n return lastSeen;\n },\n evict() {\n teardown();\n status.value = 'idle';\n generation.value++;\n },\n retry: () => start(),\n };\n\n function draw(target: Instance, delta: number) {\n target.handle.frame?.({ time: target.time, delta }, target.context);\n target.renderer.render(target.context.scene, target.context.camera);\n }\n\n function tick(now: number) {\n const target = instance;\n if (!target) return;\n const delta = target.last ? Math.min((now - target.last) / 1000, 0.1) : 0;\n target.last = now;\n target.time += delta;\n draw(target, delta);\n }\n\n function invalidate() {\n const target = instance;\n if (!target || target.ticking || target.pending) return;\n target.pending = requestAnimationFrame(() => {\n target.pending = 0;\n if (instance === target) draw(target, 0);\n });\n }\n\n function resize(target: Instance) {\n const { canvas, context, renderer, handle } = target;\n const size = context.size as ThreeSize;\n size.width = canvas.clientWidth;\n size.height = canvas.clientHeight;\n size.pixelRatio =\n Math.min(globalThis.devicePixelRatio || 1, context.quality.pixelRatio) *\n clamp(options.resolution?.() ?? 1, 0.1, 1);\n renderer.setPixelRatio(size.pixelRatio);\n renderer.setSize(size.width, size.height, false);\n const camera = context.camera as Camera & Partial<PerspectiveCamera>;\n if (camera.isPerspectiveCamera && size.height > 0) {\n camera.aspect = size.width / size.height;\n camera.updateProjectionMatrix!();\n }\n handle.resize?.(size, context);\n invalidate();\n }\n\n function create(\n canvas: HTMLCanvasElement,\n level: Exclude<ThreeQuality, 'off'> | undefined,\n ): Instance {\n const quality = resolveThreeQuality(level);\n const renderer = new WebGLRenderer({ canvas, alpha: true, antialias: quality.antialias });\n renderer.setClearColor(0x000000, 0);\n const camera = new PerspectiveCamera(45, 1, 0.1, 100);\n camera.position.z = 5;\n const colorSets: Instance['colorSets'] = [];\n const context: ThreeContext = {\n renderer,\n scene: new Scene(),\n camera,\n canvas,\n size: { width: 0, height: 0, pixelRatio: 1 },\n quality,\n pointer,\n get still() {\n return still();\n },\n invalidate,\n themeColors(sources) {\n const set = createThemeColorSet<typeof sources>(invalidate);\n set.refresh(canvas, sources, false);\n colorSets.push({ set, sources });\n return set.colors;\n },\n themeColorList(sources, size) {\n const used = size == null ? sources : sources.slice(0, size);\n const themed = context.themeColors(Object.fromEntries(used.map((color, i) => [i, color])));\n const list = used.map((_, index) => themed[index]!);\n while (size != null && list.length < size) list.push(list.at(-1)!);\n return list;\n },\n };\n const target: Instance = {\n renderer,\n context,\n handle: {},\n canvas,\n onLost: () => lose(target),\n time: 0,\n last: 0,\n pending: 0,\n ticking: false,\n colorSets,\n };\n canvas.addEventListener('webglcontextlost', target.onLost);\n return target;\n }\n\n function start() {\n const canvas = options.canvas();\n if (unmounted || instance || !canvas || !visible.value || status.value === 'fallback') return;\n const level = options.quality?.();\n if (level === 'off') return;\n if (!acquireContext(holder)) return;\n try {\n instance = create(canvas, level);\n } catch {\n // 没有 WebGL(浏览器禁用、驱动黑名单、测试环境)\n releaseContext(holder);\n unsupported = true;\n status.value = 'fallback';\n return;\n }\n try {\n instance.handle = options.setup(instance.context) ?? {};\n } catch (error) {\n teardown();\n unsupported = true;\n status.value = 'fallback';\n throw error;\n }\n resize(instance);\n update();\n }\n\n function teardown() {\n const target = instance;\n if (!target) return;\n instance = undefined;\n tickers.delete(tick);\n cancelAnimationFrame(target.pending);\n target.canvas.removeEventListener('webglcontextlost', target.onLost);\n for (const { set } of target.colorSets) set.stop();\n target.handle.dispose?.();\n disposeObject(target.context.scene);\n target.renderer.dispose();\n if (!target.renderer.getContext().isContextLost()) target.renderer.forceContextLoss();\n releaseContext(holder);\n }\n\n function lose(target: Instance) {\n if (instance !== target) return;\n teardown();\n losses++;\n unsupported = losses >= MAX_CONTEXT_LOSSES;\n status.value = unsupported ? 'fallback' : 'idle';\n // 丢失过上下文的 canvas 拿不回新的上下文:换一块\n if (status.value === 'idle') generation.value++;\n }\n\n /** 按可见性、暂停、静止决定循环开还是停 */\n function update() {\n const target = instance;\n if (!target) return;\n const mode: ThreeStatus = still()\n ? 'still'\n : options.paused?.() || !visible.value || !pageVisible.value\n ? 'paused'\n : 'running';\n target.ticking = mode === 'running';\n if (target.ticking) {\n target.last = 0;\n subscribe(tick);\n } else {\n tickers.delete(tick);\n if (mode === 'still') invalidate();\n }\n status.value = mode;\n }\n\n // 没有 IntersectionObserver 的环境(服务端、旧测试环境)当作一直在视口里\n if (typeof IntersectionObserver === 'undefined') visible.value = true;\n useIntersectionObserver(options.canvas, ([entry]) => {\n visible.value = entry!.isIntersecting;\n lastSeen = performance.now();\n });\n useResizeObserver(options.canvas, () => instance && resize(instance));\n watch(options.canvas, (canvas) => canvas && start(), { immediate: true, flush: 'post' });\n\n watch(visible, (shown) => {\n if (instance) update();\n else start();\n // 滚出视口的效果可以被回收:排队的效果再试\n if (!shown && instance) retryWaiting();\n });\n watch([() => options.paused?.(), reducedMotion, themeStill, pageVisible], update);\n\n // 主题变了(含主题编辑器关掉动效):重新判断要不要静止,并重画\n watch(\n [() => config.theme, options.canvas],\n ([, canvas]) => {\n if (!canvas) return;\n themeStill.value = themeMotionOff(canvas);\n for (const { set, sources } of instance?.colorSets ?? []) set.refresh(canvas, sources, true);\n invalidate();\n },\n { immediate: true, flush: 'post' },\n );\n\n watch(\n () => options.resolution?.(),\n () => instance && resize(instance),\n );\n\n watch(\n () => options.quality?.(),\n () => {\n if (unsupported) return;\n if (off()) {\n teardown();\n status.value = 'fallback';\n } else if (instance || status.value === 'fallback') {\n // 换档重建;从 off 回来时渲染方重新挂上 canvas,再按可见性创建\n teardown();\n status.value = 'idle';\n generation.value++;\n }\n },\n );\n\n onScopeDispose(() => {\n unmounted = true;\n teardown();\n releaseContext(holder);\n });\n\n return {\n get status() {\n return status.value;\n },\n get generation() {\n return generation.value;\n },\n invalidate,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * 着色器的公共片段(GLSL 字符串),拼进自己的片段着色器:
3
+ *
4
+ * const fragmentShader = `
5
+ * ${shaderChunks.simplexNoise}
6
+ * ${shaderChunks.themePalette}
7
+ * void main() { gl_FragColor = vec4(themePalette(snoise(vec3(vUv * 3.0, uTime)) * 0.5 + 0.5), 1.0); }
8
+ * `;
9
+ *
10
+ * themePalette 用的 uColors、uColorCount 由 ShaderBackground 自动传入(主题色板)。
11
+ */
12
+ /** 色板最多几个颜色(uColors 数组的长度) */
13
+ export declare const THEME_PALETTE_SIZE = 6;
14
+ /** 公共着色器片段:simplexNoise、fbm、themePalette */
15
+ export declare const shaderChunks: {
16
+ readonly simplexNoise: "\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x * 34.0) + 10.0) * x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v) {\n const vec2 C = vec2(1.0 / 6.0, 1.0 / 3.0);\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n vec3 i = floor(v + dot(v, C.yyy));\n vec3 x0 = v - i + dot(i, C.xxx);\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min(g.xyz, l.zxy);\n vec3 i2 = max(g.xyz, l.zxy);\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy;\n vec3 x3 = x0 - D.yyy;\n i = mod289(i);\n vec4 p = permute(permute(permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0));\n float n_ = 0.142857142857;\n vec3 ns = n_ * D.wyz - D.xzx;\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z);\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_);\n vec4 x = x_ * ns.x + ns.yyyy;\n vec4 y = y_ * ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n vec4 b0 = vec4(x.xy, y.xy);\n vec4 b1 = vec4(x.zw, y.zw);\n vec4 s0 = floor(b0) * 2.0 + 1.0;\n vec4 s1 = floor(b1) * 2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy;\n vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww;\n vec3 p0 = vec3(a0.xy, h.x);\n vec3 p1 = vec3(a0.zw, h.y);\n vec3 p2 = vec3(a1.xy, h.z);\n vec3 p3 = vec3(a1.zw, h.w);\n vec4 norm = taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n vec4 m = max(0.5 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0);\n m = m * m;\n return 105.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)));\n}\n";
17
+ readonly fbm: "\nfloat fbm(vec3 p) {\n float sum = 0.0;\n float amplitude = 0.5;\n for (int octave = 0; octave < 4; octave++) {\n sum += amplitude * snoise(p);\n p = p * 2.02 + vec3(17.0);\n amplitude *= 0.5;\n }\n return sum;\n}\n";
18
+ readonly themePalette: "\n#define THEME_PALETTE_SIZE 6\nuniform vec3 uColors[THEME_PALETTE_SIZE];\nuniform int uColorCount;\n\nvec3 themePalette(float t) {\n float scaled = clamp(t, 0.0, 1.0) * float(max(uColorCount - 1, 1));\n vec3 color = uColors[0];\n for (int i = 1; i < THEME_PALETTE_SIZE; i++) {\n if (i >= uColorCount) break;\n color = mix(color, uColors[i], clamp(scaled - float(i - 1), 0.0, 1.0));\n }\n return color;\n}\n";
19
+ };
@@ -0,0 +1,100 @@
1
+ //#region src/three/core/shaders.ts
2
+ /**
3
+ * 着色器的公共片段(GLSL 字符串),拼进自己的片段着色器:
4
+ *
5
+ * const fragmentShader = `
6
+ * ${shaderChunks.simplexNoise}
7
+ * ${shaderChunks.themePalette}
8
+ * void main() { gl_FragColor = vec4(themePalette(snoise(vec3(vUv * 3.0, uTime)) * 0.5 + 0.5), 1.0); }
9
+ * `;
10
+ *
11
+ * themePalette 用的 uColors、uColorCount 由 ShaderBackground 自动传入(主题色板)。
12
+ */
13
+ /** 色板最多几个颜色(uColors 数组的长度) */
14
+ var THEME_PALETTE_SIZE = 6;
15
+ /** 公共着色器片段:simplexNoise、fbm、themePalette */
16
+ var shaderChunks = {
17
+ simplexNoise: `
18
+ vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
19
+ vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
20
+ vec4 permute(vec4 x) { return mod289(((x * 34.0) + 10.0) * x); }
21
+ vec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }
22
+
23
+ float snoise(vec3 v) {
24
+ const vec2 C = vec2(1.0 / 6.0, 1.0 / 3.0);
25
+ const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);
26
+ vec3 i = floor(v + dot(v, C.yyy));
27
+ vec3 x0 = v - i + dot(i, C.xxx);
28
+ vec3 g = step(x0.yzx, x0.xyz);
29
+ vec3 l = 1.0 - g;
30
+ vec3 i1 = min(g.xyz, l.zxy);
31
+ vec3 i2 = max(g.xyz, l.zxy);
32
+ vec3 x1 = x0 - i1 + C.xxx;
33
+ vec3 x2 = x0 - i2 + C.yyy;
34
+ vec3 x3 = x0 - D.yyy;
35
+ i = mod289(i);
36
+ vec4 p = permute(permute(permute(
37
+ i.z + vec4(0.0, i1.z, i2.z, 1.0))
38
+ + i.y + vec4(0.0, i1.y, i2.y, 1.0))
39
+ + i.x + vec4(0.0, i1.x, i2.x, 1.0));
40
+ float n_ = 0.142857142857;
41
+ vec3 ns = n_ * D.wyz - D.xzx;
42
+ vec4 j = p - 49.0 * floor(p * ns.z * ns.z);
43
+ vec4 x_ = floor(j * ns.z);
44
+ vec4 y_ = floor(j - 7.0 * x_);
45
+ vec4 x = x_ * ns.x + ns.yyyy;
46
+ vec4 y = y_ * ns.x + ns.yyyy;
47
+ vec4 h = 1.0 - abs(x) - abs(y);
48
+ vec4 b0 = vec4(x.xy, y.xy);
49
+ vec4 b1 = vec4(x.zw, y.zw);
50
+ vec4 s0 = floor(b0) * 2.0 + 1.0;
51
+ vec4 s1 = floor(b1) * 2.0 + 1.0;
52
+ vec4 sh = -step(h, vec4(0.0));
53
+ vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy;
54
+ vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww;
55
+ vec3 p0 = vec3(a0.xy, h.x);
56
+ vec3 p1 = vec3(a0.zw, h.y);
57
+ vec3 p2 = vec3(a1.xy, h.z);
58
+ vec3 p3 = vec3(a1.zw, h.w);
59
+ vec4 norm = taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));
60
+ p0 *= norm.x;
61
+ p1 *= norm.y;
62
+ p2 *= norm.z;
63
+ p3 *= norm.w;
64
+ vec4 m = max(0.5 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0);
65
+ m = m * m;
66
+ return 105.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)));
67
+ }
68
+ `,
69
+ fbm: `
70
+ float fbm(vec3 p) {
71
+ float sum = 0.0;
72
+ float amplitude = 0.5;
73
+ for (int octave = 0; octave < 4; octave++) {
74
+ sum += amplitude * snoise(p);
75
+ p = p * 2.02 + vec3(17.0);
76
+ amplitude *= 0.5;
77
+ }
78
+ return sum;
79
+ }
80
+ `,
81
+ themePalette: `
82
+ #define THEME_PALETTE_SIZE 6
83
+ uniform vec3 uColors[THEME_PALETTE_SIZE];
84
+ uniform int uColorCount;
85
+
86
+ vec3 themePalette(float t) {
87
+ float scaled = clamp(t, 0.0, 1.0) * float(max(uColorCount - 1, 1));
88
+ vec3 color = uColors[0];
89
+ for (int i = 1; i < THEME_PALETTE_SIZE; i++) {
90
+ if (i >= uColorCount) break;
91
+ color = mix(color, uColors[i], clamp(scaled - float(i - 1), 0.0, 1.0));
92
+ }
93
+ return color;
94
+ }
95
+ `
96
+ };
97
+ //#endregion
98
+ export { THEME_PALETTE_SIZE, shaderChunks };
99
+
100
+ //# sourceMappingURL=shaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaders.js","names":[],"sources":["../../../src/three/core/shaders.ts"],"sourcesContent":["/**\n * 着色器的公共片段(GLSL 字符串),拼进自己的片段着色器:\n *\n * const fragmentShader = `\n * ${shaderChunks.simplexNoise}\n * ${shaderChunks.themePalette}\n * void main() { gl_FragColor = vec4(themePalette(snoise(vec3(vUv * 3.0, uTime)) * 0.5 + 0.5), 1.0); }\n * `;\n *\n * themePalette 用的 uColors、uColorCount 由 ShaderBackground 自动传入(主题色板)。\n */\n\n/** 色板最多几个颜色(uColors 数组的长度) */\nexport const THEME_PALETTE_SIZE = 6;\n\n/**\n * 三维 simplex 噪声 `float snoise(vec3 v)`,返回 -1 到 1。\n * 来自 Ashima Arts 的 webgl-noise(Ian McEwan、Stefan Gustavson,MIT 许可)\n */\nconst simplexNoise = /* glsl */ `\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\nvec4 permute(vec4 x) { return mod289(((x * 34.0) + 10.0) * x); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v) {\n const vec2 C = vec2(1.0 / 6.0, 1.0 / 3.0);\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n vec3 i = floor(v + dot(v, C.yyy));\n vec3 x0 = v - i + dot(i, C.xxx);\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min(g.xyz, l.zxy);\n vec3 i2 = max(g.xyz, l.zxy);\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy;\n vec3 x3 = x0 - D.yyy;\n i = mod289(i);\n vec4 p = permute(permute(permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0));\n float n_ = 0.142857142857;\n vec3 ns = n_ * D.wyz - D.xzx;\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z);\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_);\n vec4 x = x_ * ns.x + ns.yyyy;\n vec4 y = y_ * ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n vec4 b0 = vec4(x.xy, y.xy);\n vec4 b1 = vec4(x.zw, y.zw);\n vec4 s0 = floor(b0) * 2.0 + 1.0;\n vec4 s1 = floor(b1) * 2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy;\n vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww;\n vec3 p0 = vec3(a0.xy, h.x);\n vec3 p1 = vec3(a0.zw, h.y);\n vec3 p2 = vec3(a1.xy, h.z);\n vec3 p3 = vec3(a1.zw, h.w);\n vec4 norm = taylorInvSqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n vec4 m = max(0.5 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0);\n m = m * m;\n return 105.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)));\n}\n`;\n\n/** 分形噪声 `float fbm(vec3 p)`:几层 simplex 噪声叠加,返回约 -1 到 1;依赖 simplexNoise */\nconst fbm = /* glsl */ `\nfloat fbm(vec3 p) {\n float sum = 0.0;\n float amplitude = 0.5;\n for (int octave = 0; octave < 4; octave++) {\n sum += amplitude * snoise(p);\n p = p * 2.02 + vec3(17.0);\n amplitude *= 0.5;\n }\n return sum;\n}\n`;\n\n/** 主题色板 `vec3 themePalette(float t)`:t 从 0 到 1 依次经过 uColors 的各个颜色;uColors 的长度是 THEME_PALETTE_SIZE */\nconst themePalette = /* glsl */ `\n#define THEME_PALETTE_SIZE ${THEME_PALETTE_SIZE}\nuniform vec3 uColors[THEME_PALETTE_SIZE];\nuniform int uColorCount;\n\nvec3 themePalette(float t) {\n float scaled = clamp(t, 0.0, 1.0) * float(max(uColorCount - 1, 1));\n vec3 color = uColors[0];\n for (int i = 1; i < THEME_PALETTE_SIZE; i++) {\n if (i >= uColorCount) break;\n color = mix(color, uColors[i], clamp(scaled - float(i - 1), 0.0, 1.0));\n }\n return color;\n}\n`;\n\n/** 公共着色器片段:simplexNoise、fbm、themePalette */\nexport const shaderChunks = { simplexNoise, fbm, themePalette } as const;\n"],"mappings":";;;;;;;;;;;;;AAaA,IAAa,qBAAqB;;AA2FlC,IAAa,eAAe;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAc;;;;;;;;;;;;CAAK;;;;;;;;;;;;;;;AAAa"}
@@ -0,0 +1,30 @@
1
+ import { Color } from 'three';
2
+ /** 一组要读的颜色:名字 → token 或 CSS 颜色 */
3
+ export type ThemeColorSources = Readonly<Record<string, string>>;
4
+ /** 一组主题色:名字 → THREE.Color(换色时原地修改) */
5
+ export type ThemeColors<Sources extends ThemeColorSources> = {
6
+ readonly [Name in keyof Sources]: Color;
7
+ };
8
+ /**
9
+ * 在 scope 元素上读出 CSS 颜色,写进 target(sRGB 转成 three.js 的线性工作空间)。
10
+ * 解析不了时(读不到主题、格式不认识)保持原值,返回 false
11
+ */
12
+ export declare function readThemeColor(scope: Element, value: string, target: Color): boolean;
13
+ /** 一组跟随主题的颜色:refresh 读取并过渡,stop 取消还在跑的过渡 */
14
+ export interface ThemeColorSet<Sources extends ThemeColorSources> {
15
+ /** 名字 → THREE.Color:材质直接引用这些对象,换主题时原地改值 */
16
+ readonly colors: ThemeColors<Sources>;
17
+ /** 在 scope 上重新读取;transition 为 false(第一次读)时直接换 */
18
+ refresh(scope: Element, sources: Sources, transition: boolean): void;
19
+ /** 取消还在跑的过渡 */
20
+ stop(): void;
21
+ }
22
+ /** 建一组主题色(useThemeColors 与场景上下文的 themeColors 共用) */
23
+ export declare function createThemeColorSet<Sources extends ThemeColorSources>(onChange?: () => void): ThemeColorSet<Sources>;
24
+ /** useThemeColors 的选项 */
25
+ export interface ThemeColorOptions {
26
+ /** 颜色变了(第一次读到、过渡的每一帧)时调用:循环停着的场景在这里请求重画 */
27
+ onChange?: () => void;
28
+ }
29
+ /** 组件里的主题色(在 setup 里调用):scope 元素挂载后读取,换主题或来源变了时过渡到新色,见文件开头 */
30
+ export declare function useThemeColors<Sources extends ThemeColorSources>(scope: () => Element | null | undefined, sources: Sources | (() => Sources), { onChange }?: ThemeColorOptions): ThemeColors<Sources>;
@@ -0,0 +1,113 @@
1
+ import { clamp } from "../../utils/data/number.js";
2
+ import { useConfig } from "../../config/context.js";
3
+ import { themeTransitionOrInstant } from "../../utils/motion/animation.js";
4
+ import { onScopeDispose, watch } from "vue";
5
+ import { animate } from "animejs";
6
+ import { converter, modeLab, modeLch, modeLrgb, modeOklab, modeOklch, modeP3, modeRgb, parse, useMode } from "culori/fn";
7
+ import { Color, SRGBColorSpace } from "three";
8
+ //#region src/three/core/theme-colors.ts
9
+ /**
10
+ * 主题色 → THREE.Color:3D 场景拿不到 CSS 变量,这里在元素上读出颜色的当前取值,转成 three.js 的颜色。
11
+ *
12
+ * // 场景里(ThreeCanvas 的 setup):跟随画布所在位置的主题,换色时自动重画
13
+ * setup: ({ scene, themeColors }) => {
14
+ * const palette = themeColors({ accent: colors.accent, glow: colors.chart3 });
15
+ * material.color = palette.accent; // 直接赋同一个对象;构造参数里传会被复制一份
16
+ * uniforms.uGlow = { value: palette.glow };
17
+ * }
18
+ *
19
+ * // 组件里(颜色来源随 props 变化时)
20
+ * const palette = useThemeColors(() => host, () => ({ main: color }), { onChange: invalidate });
21
+ *
22
+ * 切换主题、主题编辑器改品牌色时重新读取,按主题的 lg 时长与 standard 缓动从旧色过渡到新色(减少动态效果时直接换);
23
+ * Color 对象始终是同一批,材质与 uniform 不用重建。
24
+ *
25
+ * 颜色可以是 token(`colors.accent`)或任意 CSS 颜色(`'#e5484d'`、`'color-mix(…)'`):
26
+ * 交给一个隐藏的探针元素,由浏览器解析出最终的颜色,light-dark()、color-mix()、主题覆盖都能用。透明度不保留。
27
+ */
28
+ useMode(modeRgb);
29
+ useMode(modeLrgb);
30
+ useMode(modeP3);
31
+ useMode(modeLab);
32
+ useMode(modeLch);
33
+ useMode(modeOklab);
34
+ useMode(modeOklch);
35
+ var toRgb = converter("rgb");
36
+ /**
37
+ * 在 scope 元素上读出 CSS 颜色,写进 target(sRGB 转成 three.js 的线性工作空间)。
38
+ * 解析不了时(读不到主题、格式不认识)保持原值,返回 false
39
+ */
40
+ function readThemeColor(scope, value, target) {
41
+ const probe = document.createElement("span");
42
+ probe.style.display = "none";
43
+ probe.style.color = value;
44
+ scope.append(probe);
45
+ const computed = getComputedStyle(probe).color;
46
+ probe.remove();
47
+ const parsed = computed ? parse(computed) : void 0;
48
+ const rgb = parsed && toRgb(parsed);
49
+ if (!rgb) return false;
50
+ const unit = (channel) => clamp(channel || 0, 0, 1);
51
+ target.setRGB(unit(rgb.r), unit(rgb.g), unit(rgb.b), SRGBColorSpace);
52
+ return true;
53
+ }
54
+ /** 建一组主题色(useThemeColors 与场景上下文的 themeColors 共用) */
55
+ function createThemeColorSet(onChange) {
56
+ const colors = {};
57
+ let running;
58
+ return {
59
+ colors,
60
+ refresh(scope, sources, transition) {
61
+ running?.cancel();
62
+ const from = {};
63
+ const to = {};
64
+ for (const [name, value] of Object.entries(sources)) {
65
+ const color = colors[name] ??= new Color();
66
+ from[name] = color.clone();
67
+ to[name] = color.clone();
68
+ readThemeColor(scope, value, to[name]);
69
+ }
70
+ const apply = (progress) => {
71
+ for (const name of Object.keys(to)) colors[name].lerpColors(from[name], to[name], progress);
72
+ onChange?.();
73
+ };
74
+ const timing = transition ? themeTransitionOrInstant(scope, { duration: "lg" }) : {};
75
+ if (!timing.duration) return apply(1);
76
+ const state = { progress: 0 };
77
+ running = animate(state, {
78
+ progress: 1,
79
+ ...timing,
80
+ onUpdate: () => apply(state.progress)
81
+ });
82
+ },
83
+ stop() {
84
+ running?.cancel();
85
+ }
86
+ };
87
+ }
88
+ /** 组件里的主题色(在 setup 里调用):scope 元素挂载后读取,换主题或来源变了时过渡到新色,见文件开头 */
89
+ function useThemeColors(scope, sources, { onChange } = {}) {
90
+ const config = useConfig();
91
+ const set = createThemeColorSet(onChange);
92
+ const read = () => typeof sources === "function" ? sources() : sources;
93
+ for (const name of Object.keys(read())) set.colors[name] = new Color();
94
+ let loaded = false;
95
+ watch([
96
+ () => config.theme,
97
+ scope,
98
+ () => JSON.stringify(read())
99
+ ], ([, element]) => {
100
+ if (!element) return;
101
+ set.refresh(element, read(), loaded);
102
+ loaded = true;
103
+ }, {
104
+ immediate: true,
105
+ flush: "post"
106
+ });
107
+ onScopeDispose(() => set.stop());
108
+ return set.colors;
109
+ }
110
+ //#endregion
111
+ export { createThemeColorSet, readThemeColor, useThemeColors };
112
+
113
+ //# sourceMappingURL=theme-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-colors.js","names":[],"sources":["../../../src/three/core/theme-colors.ts"],"sourcesContent":["/**\n * 主题色 → THREE.Color:3D 场景拿不到 CSS 变量,这里在元素上读出颜色的当前取值,转成 three.js 的颜色。\n *\n * // 场景里(ThreeCanvas 的 setup):跟随画布所在位置的主题,换色时自动重画\n * setup: ({ scene, themeColors }) => {\n * const palette = themeColors({ accent: colors.accent, glow: colors.chart3 });\n * material.color = palette.accent; // 直接赋同一个对象;构造参数里传会被复制一份\n * uniforms.uGlow = { value: palette.glow };\n * }\n *\n * // 组件里(颜色来源随 props 变化时)\n * const palette = useThemeColors(() => host, () => ({ main: color }), { onChange: invalidate });\n *\n * 切换主题、主题编辑器改品牌色时重新读取,按主题的 lg 时长与 standard 缓动从旧色过渡到新色(减少动态效果时直接换);\n * Color 对象始终是同一批,材质与 uniform 不用重建。\n *\n * 颜色可以是 token(`colors.accent`)或任意 CSS 颜色(`'#e5484d'`、`'color-mix(…)'`):\n * 交给一个隐藏的探针元素,由浏览器解析出最终的颜色,light-dark()、color-mix()、主题覆盖都能用。透明度不保留。\n */\nimport { animate, type JSAnimation } from 'animejs';\nimport {\n converter,\n modeLab,\n modeLch,\n modeLrgb,\n modeOklab,\n modeOklch,\n modeP3,\n modeRgb,\n parse,\n useMode,\n} from 'culori/fn';\nimport { Color, SRGBColorSpace } from 'three';\nimport { onScopeDispose, watch } from 'vue';\nimport { useConfig } from '../../config/context';\nimport { clamp } from '../../utils/data/number';\nimport { themeTransitionOrInstant } from '../../utils/motion/animation';\n\n// 浏览器给出的计算值可能是 rgb()、color(srgb …)、color(display-p3 …)、oklch()、lab() 等\nuseMode(modeRgb);\nuseMode(modeLrgb);\nuseMode(modeP3);\nuseMode(modeLab);\nuseMode(modeLch);\nuseMode(modeOklab);\nuseMode(modeOklch);\nconst toRgb = converter('rgb');\n\n/** 一组要读的颜色:名字 → token 或 CSS 颜色 */\nexport type ThemeColorSources = Readonly<Record<string, string>>;\n\n/** 一组主题色:名字 → THREE.Color(换色时原地修改) */\nexport type ThemeColors<Sources extends ThemeColorSources> = {\n readonly [Name in keyof Sources]: Color;\n};\n\n/**\n * 在 scope 元素上读出 CSS 颜色,写进 target(sRGB 转成 three.js 的线性工作空间)。\n * 解析不了时(读不到主题、格式不认识)保持原值,返回 false\n */\nexport function readThemeColor(scope: Element, value: string, target: Color): boolean {\n const probe = document.createElement('span');\n probe.style.display = 'none';\n probe.style.color = value;\n scope.append(probe);\n const computed = getComputedStyle(probe).color;\n probe.remove();\n const parsed = computed ? parse(computed) : undefined;\n const rgb = parsed && toRgb(parsed);\n if (!rgb) return false;\n const unit = (channel: number) => clamp(channel || 0, 0, 1);\n target.setRGB(unit(rgb.r), unit(rgb.g), unit(rgb.b), SRGBColorSpace);\n return true;\n}\n\n/** 一组跟随主题的颜色:refresh 读取并过渡,stop 取消还在跑的过渡 */\nexport interface ThemeColorSet<Sources extends ThemeColorSources> {\n /** 名字 → THREE.Color:材质直接引用这些对象,换主题时原地改值 */\n readonly colors: ThemeColors<Sources>;\n /** 在 scope 上重新读取;transition 为 false(第一次读)时直接换 */\n refresh(scope: Element, sources: Sources, transition: boolean): void;\n /** 取消还在跑的过渡 */\n stop(): void;\n}\n\n/** 建一组主题色(useThemeColors 与场景上下文的 themeColors 共用) */\nexport function createThemeColorSet<Sources extends ThemeColorSources>(\n onChange?: () => void,\n): ThemeColorSet<Sources> {\n const colors: Record<string, Color> = {};\n let running: JSAnimation | undefined;\n return {\n colors: colors as ThemeColors<Sources>,\n refresh(scope, sources, transition) {\n void running?.cancel();\n const from: Record<string, Color> = {};\n const to: Record<string, Color> = {};\n for (const [name, value] of Object.entries(sources)) {\n const color = (colors[name] ??= new Color());\n from[name] = color.clone();\n to[name] = color.clone();\n readThemeColor(scope, value, to[name]!);\n }\n const apply = (progress: number) => {\n for (const name of Object.keys(to))\n colors[name]!.lerpColors(from[name]!, to[name]!, progress);\n onChange?.();\n };\n const timing = transition ? themeTransitionOrInstant(scope, { duration: 'lg' }) : {};\n if (!timing.duration) return apply(1);\n const state = { progress: 0 };\n running = animate(state, { progress: 1, ...timing, onUpdate: () => apply(state.progress) });\n },\n stop() {\n void running?.cancel();\n },\n };\n}\n\n/** useThemeColors 的选项 */\nexport interface ThemeColorOptions {\n /** 颜色变了(第一次读到、过渡的每一帧)时调用:循环停着的场景在这里请求重画 */\n onChange?: () => void;\n}\n\n/** 组件里的主题色(在 setup 里调用):scope 元素挂载后读取,换主题或来源变了时过渡到新色,见文件开头 */\nexport function useThemeColors<Sources extends ThemeColorSources>(\n scope: () => Element | null | undefined,\n sources: Sources | (() => Sources),\n { onChange }: ThemeColorOptions = {},\n): ThemeColors<Sources> {\n const config = useConfig();\n const set = createThemeColorSet<Sources>(onChange);\n const read = () => (typeof sources === 'function' ? sources() : sources);\n // 挂载前就能拿到全部名字:材质可以在第一次读取前引用这些对象\n for (const name of Object.keys(read())) (set.colors as Record<string, Color>)[name] = new Color();\n let loaded = false;\n watch(\n [() => config.theme, scope, () => JSON.stringify(read())],\n ([, element]) => {\n if (!element) return;\n set.refresh(element, read(), loaded);\n loaded = true;\n },\n { immediate: true, flush: 'post' },\n );\n onScopeDispose(() => set.stop());\n return set.colors;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,QAAQ,OAAO;AACf,QAAQ,QAAQ;AAChB,QAAQ,MAAM;AACd,QAAQ,OAAO;AACf,QAAQ,OAAO;AACf,QAAQ,SAAS;AACjB,QAAQ,SAAS;AACjB,IAAM,QAAQ,UAAU,KAAK;;;;;AAc7B,SAAgB,eAAe,OAAgB,OAAe,QAAwB;CACpF,MAAM,QAAQ,SAAS,cAAc,MAAM;CAC3C,MAAM,MAAM,UAAU;CACtB,MAAM,MAAM,QAAQ;CACpB,MAAM,OAAO,KAAK;CAClB,MAAM,WAAW,iBAAiB,KAAK,CAAC,CAAC;CACzC,MAAM,OAAO;CACb,MAAM,SAAS,WAAW,MAAM,QAAQ,IAAI,KAAA;CAC5C,MAAM,MAAM,UAAU,MAAM,MAAM;CAClC,IAAI,CAAC,KAAK,OAAO;CACjB,MAAM,QAAQ,YAAoB,MAAM,WAAW,GAAG,GAAG,CAAC;CAC1D,OAAO,OAAO,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,cAAc;CACnE,OAAO;AACT;;AAaA,SAAgB,oBACd,UACwB;CACxB,MAAM,SAAgC,CAAC;CACvC,IAAI;CACJ,OAAO;EACG;EACR,QAAQ,OAAO,SAAS,YAAY;GAClC,SAAc,OAAO;GACrB,MAAM,OAA8B,CAAC;GACrC,MAAM,KAA4B,CAAC;GACnC,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,OAAO,GAAG;IACnD,MAAM,QAAS,OAAO,UAAU,IAAI,MAAM;IAC1C,KAAK,QAAQ,MAAM,MAAM;IACzB,GAAG,QAAQ,MAAM,MAAM;IACvB,eAAe,OAAO,OAAO,GAAG,KAAM;GACxC;GACA,MAAM,SAAS,aAAqB;IAClC,KAAK,MAAM,QAAQ,OAAO,KAAK,EAAE,GAC/B,OAAO,KAAK,CAAE,WAAW,KAAK,OAAQ,GAAG,OAAQ,QAAQ;IAC3D,WAAW;GACb;GACA,MAAM,SAAS,aAAa,yBAAyB,OAAO,EAAE,UAAU,KAAK,CAAC,IAAI,CAAC;GACnF,IAAI,CAAC,OAAO,UAAU,OAAO,MAAM,CAAC;GACpC,MAAM,QAAQ,EAAE,UAAU,EAAE;GAC5B,UAAU,QAAQ,OAAO;IAAE,UAAU;IAAG,GAAG;IAAQ,gBAAgB,MAAM,MAAM,QAAQ;GAAE,CAAC;EAC5F;EACA,OAAO;GACL,SAAc,OAAO;EACvB;CACF;AACF;;AASA,SAAgB,eACd,OACA,SACA,EAAE,aAAgC,CAAC,GACb;CACtB,MAAM,SAAS,UAAU;CACzB,MAAM,MAAM,oBAA6B,QAAQ;CACjD,MAAM,aAAc,OAAO,YAAY,aAAa,QAAQ,IAAI;CAEhE,KAAK,MAAM,QAAQ,OAAO,KAAK,KAAK,CAAC,GAAG,IAAK,OAAiC,QAAQ,IAAI,MAAM;CAChG,IAAI,SAAS;CACb,MACE;QAAO,OAAO;EAAO;QAAa,KAAK,UAAU,KAAK,CAAC;CAAC,IACvD,GAAG,aAAa;EACf,IAAI,CAAC,SAAS;EACd,IAAI,QAAQ,SAAS,KAAK,GAAG,MAAM;EACnC,SAAS;CACX,GACA;EAAE,WAAW;EAAM,OAAO;CAAO,CACnC;CACA,qBAAqB,IAAI,KAAK,CAAC;CAC/B,OAAO,IAAI;AACb"}