@will-ui/vue 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (699) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -0
  3. package/TAILWIND.md +282 -0
  4. package/dist/_virtual/_rolldown/runtime.js +13 -0
  5. package/dist/components/audioPlayer/AudioPlayer.d.ts +123 -0
  6. package/dist/components/audioPlayer/AudioPlayer.js +375 -0
  7. package/dist/components/audioPlayer/AudioPlayer.js.map +1 -0
  8. package/dist/components/audioPlayer/index.d.ts +2 -0
  9. package/dist/components/audioPlayer/style/index.css +1 -0
  10. package/dist/components/btn/Btn.d.ts +45 -0
  11. package/dist/components/btn/Btn.js +165 -0
  12. package/dist/components/btn/Btn.js.map +1 -0
  13. package/dist/components/btn/config.d.ts +33 -0
  14. package/dist/components/btn/config.js +20 -0
  15. package/dist/components/btn/config.js.map +1 -0
  16. package/dist/components/btn/context.d.ts +12 -0
  17. package/dist/components/btn/context.js +6 -0
  18. package/dist/components/btn/context.js.map +1 -0
  19. package/dist/components/btn/index.d.ts +5 -0
  20. package/dist/components/btn/style/index.css +1 -0
  21. package/dist/components/btnGroup/BtnGroup.d.ts +46 -0
  22. package/dist/components/btnGroup/BtnGroup.js +43 -0
  23. package/dist/components/btnGroup/BtnGroup.js.map +1 -0
  24. package/dist/components/btnGroup/config.d.ts +14 -0
  25. package/dist/components/btnGroup/config.js +11 -0
  26. package/dist/components/btnGroup/config.js.map +1 -0
  27. package/dist/components/btnGroup/index.d.ts +3 -0
  28. package/dist/components/btnGroup/style/index.css +1 -0
  29. package/dist/components/cascade/Cascade.d.ts +1957 -0
  30. package/dist/components/cascade/Cascade.js +283 -0
  31. package/dist/components/cascade/Cascade.js.map +1 -0
  32. package/dist/components/cascade/config.d.ts +30 -0
  33. package/dist/components/cascade/config.js +18 -0
  34. package/dist/components/cascade/config.js.map +1 -0
  35. package/dist/components/cascade/index.d.ts +3 -0
  36. package/dist/components/cascade/style/index.css +1 -0
  37. package/dist/components/checkbox/Checkbox.d.ts +241 -0
  38. package/dist/components/checkbox/Checkbox.js +182 -0
  39. package/dist/components/checkbox/Checkbox.js.map +1 -0
  40. package/dist/components/checkbox/config.d.ts +18 -0
  41. package/dist/components/checkbox/config.js +11 -0
  42. package/dist/components/checkbox/config.js.map +1 -0
  43. package/dist/components/checkbox/index.d.ts +3 -0
  44. package/dist/components/checkbox/style/index.css +1 -0
  45. package/dist/components/choose/Choose.d.ts +1016 -0
  46. package/dist/components/choose/Choose.js +402 -0
  47. package/dist/components/choose/Choose.js.map +1 -0
  48. package/dist/components/choose/config.d.ts +37 -0
  49. package/dist/components/choose/config.js +21 -0
  50. package/dist/components/choose/config.js.map +1 -0
  51. package/dist/components/choose/index.d.ts +3 -0
  52. package/dist/components/choose/injectionKey.d.ts +12 -0
  53. package/dist/components/choose/injectionKey.js +11 -0
  54. package/dist/components/choose/injectionKey.js.map +1 -0
  55. package/dist/components/choose/style/index.css +1 -0
  56. package/dist/components/choose2/Choose2.d.ts +1711 -0
  57. package/dist/components/choose2/Choose2.js +403 -0
  58. package/dist/components/choose2/Choose2.js.map +1 -0
  59. package/dist/components/choose2/config.d.ts +37 -0
  60. package/dist/components/choose2/config.js +20 -0
  61. package/dist/components/choose2/config.js.map +1 -0
  62. package/dist/components/choose2/index.d.ts +3 -0
  63. package/dist/components/choose2/style/index.css +1 -0
  64. package/dist/components/chooseItem/ChooseItem.d.ts +46 -0
  65. package/dist/components/chooseItem/ChooseItem.js +72 -0
  66. package/dist/components/chooseItem/ChooseItem.js.map +1 -0
  67. package/dist/components/chooseItem/config.d.ts +12 -0
  68. package/dist/components/chooseItem/config.js +9 -0
  69. package/dist/components/chooseItem/config.js.map +1 -0
  70. package/dist/components/chooseItem/index.d.ts +3 -0
  71. package/dist/components/chooseItem/style/index.css +1 -0
  72. package/dist/components/circleProgress/CircleProgress.d.ts +83 -0
  73. package/dist/components/circleProgress/CircleProgress.js +108 -0
  74. package/dist/components/circleProgress/CircleProgress.js.map +1 -0
  75. package/dist/components/circleProgress/index.d.ts +1 -0
  76. package/dist/components/circleProgress/style/index.css +1 -0
  77. package/dist/components/close/Close.d.ts +114 -0
  78. package/dist/components/close/Close.js +82 -0
  79. package/dist/components/close/Close.js.map +1 -0
  80. package/dist/components/close/index.d.ts +1 -0
  81. package/dist/components/close/style/index.css +1 -0
  82. package/dist/components/colorPicker/ColorPicker.d.ts +138 -0
  83. package/dist/components/colorPicker/ColorPicker.js +404 -0
  84. package/dist/components/colorPicker/ColorPicker.js.map +1 -0
  85. package/dist/components/colorPicker/config.d.ts +24 -0
  86. package/dist/components/colorPicker/config.js +14 -0
  87. package/dist/components/colorPicker/config.js.map +1 -0
  88. package/dist/components/colorPicker/index.d.ts +4 -0
  89. package/dist/components/colorPicker/style/index.css +1 -0
  90. package/dist/components/confirm/index.d.ts +73 -0
  91. package/dist/components/confirm/index.js +177 -0
  92. package/dist/components/confirm/index.js.map +1 -0
  93. package/dist/components/confirm/src/style/index.css +1 -0
  94. package/dist/components/copy/Copy.d.ts +28 -0
  95. package/dist/components/copy/Copy.js +110 -0
  96. package/dist/components/copy/Copy.js.map +1 -0
  97. package/dist/components/copy/config.d.ts +25 -0
  98. package/dist/components/copy/config.js +13 -0
  99. package/dist/components/copy/config.js.map +1 -0
  100. package/dist/components/copy/index.d.ts +5 -0
  101. package/dist/components/copy/spawnCopyToast.d.ts +13 -0
  102. package/dist/components/copy/spawnCopyToast.js +150 -0
  103. package/dist/components/copy/spawnCopyToast.js.map +1 -0
  104. package/dist/components/copy/style/index.css +1 -0
  105. package/dist/components/cornerEars/CornerEars.d.ts +24 -0
  106. package/dist/components/cornerEars/CornerEars.js +108 -0
  107. package/dist/components/cornerEars/CornerEars.js.map +1 -0
  108. package/dist/components/cornerEars/cornerGeometry.d.ts +8 -0
  109. package/dist/components/cornerEars/cornerGeometry.js +63 -0
  110. package/dist/components/cornerEars/cornerGeometry.js.map +1 -0
  111. package/dist/components/cornerEars/index.d.ts +2 -0
  112. package/dist/components/cornerEars/style/index.css +1 -0
  113. package/dist/components/date/DatePanel.js +398 -0
  114. package/dist/components/date/DatePanel.js.map +1 -0
  115. package/dist/components/date/DatePicker.d.ts +226 -0
  116. package/dist/components/date/DatePicker.js +349 -0
  117. package/dist/components/date/DatePicker.js.map +1 -0
  118. package/dist/components/date/Days.d.ts +44 -0
  119. package/dist/components/date/Days.js +93 -0
  120. package/dist/components/date/Days.js.map +1 -0
  121. package/dist/components/date/Months.d.ts +32 -0
  122. package/dist/components/date/Months.js +87 -0
  123. package/dist/components/date/Months.js.map +1 -0
  124. package/dist/components/date/QuickDate.d.ts +24 -0
  125. package/dist/components/date/QuickDate.js +48 -0
  126. package/dist/components/date/QuickDate.js.map +1 -0
  127. package/dist/components/date/Years.d.ts +38 -0
  128. package/dist/components/date/Years.js +85 -0
  129. package/dist/components/date/Years.js.map +1 -0
  130. package/dist/components/date/_use/quickDate.d.ts +4 -0
  131. package/dist/components/date/_use/quickDate.js +30 -0
  132. package/dist/components/date/_use/quickDate.js.map +1 -0
  133. package/dist/components/date/_use/useDateModules.d.ts +37 -0
  134. package/dist/components/date/_use/useDateModules.js +100 -0
  135. package/dist/components/date/_use/useDateModules.js.map +1 -0
  136. package/dist/components/date/config.d.ts +32 -0
  137. package/dist/components/date/config.js +18 -0
  138. package/dist/components/date/config.js.map +1 -0
  139. package/dist/components/date/index.d.ts +3 -0
  140. package/dist/components/date/style/index.css +1 -0
  141. package/dist/components/date/types.d.ts +32 -0
  142. package/dist/components/drawer/Drawer.d.ts +332 -0
  143. package/dist/components/drawer/Drawer.js +329 -0
  144. package/dist/components/drawer/Drawer.js.map +1 -0
  145. package/dist/components/drawer/config.d.ts +28 -0
  146. package/dist/components/drawer/config.js +16 -0
  147. package/dist/components/drawer/config.js.map +1 -0
  148. package/dist/components/drawer/index.d.ts +3 -0
  149. package/dist/components/drawer/src/style/drawer.css +1 -0
  150. package/dist/components/ellipsis/Ellipsis.d.ts +74 -0
  151. package/dist/components/ellipsis/Ellipsis.js +103 -0
  152. package/dist/components/ellipsis/Ellipsis.js.map +1 -0
  153. package/dist/components/ellipsis/index.d.ts +1 -0
  154. package/dist/components/ellipsis/style/index.css +1 -0
  155. package/dist/components/empty/Empty.d.ts +92 -0
  156. package/dist/components/empty/Empty.js +85 -0
  157. package/dist/components/empty/Empty.js.map +1 -0
  158. package/dist/components/empty/config.d.ts +23 -0
  159. package/dist/components/empty/config.js +14 -0
  160. package/dist/components/empty/config.js.map +1 -0
  161. package/dist/components/empty/index.d.ts +3 -0
  162. package/dist/components/empty/style/index.css +1 -0
  163. package/dist/components/empty/type.d.ts +9 -0
  164. package/dist/components/equalizer/Equalizer.d.ts +62 -0
  165. package/dist/components/equalizer/Equalizer.js +56 -0
  166. package/dist/components/equalizer/Equalizer.js.map +1 -0
  167. package/dist/components/equalizer/index.d.ts +1 -0
  168. package/dist/components/equalizer/style/index.css +1 -0
  169. package/dist/components/fallback/Fallback.d.ts +44 -0
  170. package/dist/components/fallback/Fallback.js +55 -0
  171. package/dist/components/fallback/Fallback.js.map +1 -0
  172. package/dist/components/fallback/index.d.ts +1 -0
  173. package/dist/components/fallback/style/index.css +1 -0
  174. package/dist/components/form/Form.d.ts +169 -0
  175. package/dist/components/form/Form.js +235 -0
  176. package/dist/components/form/Form.js.map +1 -0
  177. package/dist/components/form/_use/formRules.d.ts +18 -0
  178. package/dist/components/form/_use/formRules.js +80 -0
  179. package/dist/components/form/_use/formRules.js.map +1 -0
  180. package/dist/components/form/config.d.ts +35 -0
  181. package/dist/components/form/config.js +20 -0
  182. package/dist/components/form/config.js.map +1 -0
  183. package/dist/components/form/context.d.ts +34 -0
  184. package/dist/components/form/context.js +8 -0
  185. package/dist/components/form/context.js.map +1 -0
  186. package/dist/components/form/index.d.ts +3 -0
  187. package/dist/components/form/style/index.css +1 -0
  188. package/dist/components/formItem/FormItem.d.ts +144 -0
  189. package/dist/components/formItem/FormItem.js +218 -0
  190. package/dist/components/formItem/FormItem.js.map +1 -0
  191. package/dist/components/formItem/config.d.ts +21 -0
  192. package/dist/components/formItem/config.js +12 -0
  193. package/dist/components/formItem/config.js.map +1 -0
  194. package/dist/components/formItem/context.d.ts +22 -0
  195. package/dist/components/formItem/context.js +8 -0
  196. package/dist/components/formItem/context.js.map +1 -0
  197. package/dist/components/formItem/index.d.ts +3 -0
  198. package/dist/components/formItem/style/index.css +1 -0
  199. package/dist/components/icon/Icon.d.ts +117 -0
  200. package/dist/components/icon/Icon.js +116 -0
  201. package/dist/components/icon/Icon.js.map +1 -0
  202. package/dist/components/icon/config.d.ts +28 -0
  203. package/dist/components/icon/config.js +16 -0
  204. package/dist/components/icon/config.js.map +1 -0
  205. package/dist/components/icon/index.d.ts +4 -0
  206. package/dist/components/icon/style/index.css +1 -0
  207. package/dist/components/icon/type.d.ts +16 -0
  208. package/dist/components/image/Image.d.ts +21 -0
  209. package/dist/components/image/Image.js +68 -0
  210. package/dist/components/image/Image.js.map +1 -0
  211. package/dist/components/image/config.d.ts +21 -0
  212. package/dist/components/image/config.js +11 -0
  213. package/dist/components/image/config.js.map +1 -0
  214. package/dist/components/image/index.d.ts +4 -0
  215. package/dist/components/image/style/index.css +1 -0
  216. package/dist/components/index.d.ts +79 -0
  217. package/dist/components/index.js +124 -0
  218. package/dist/components/index.js.map +1 -0
  219. package/dist/components/layer/Layer.d.ts +410 -0
  220. package/dist/components/layer/Layer.js +557 -0
  221. package/dist/components/layer/Layer.js.map +1 -0
  222. package/dist/components/layer/index.d.ts +2 -0
  223. package/dist/components/layer/injectionKey.d.ts +5 -0
  224. package/dist/components/layer/injectionKey.js +6 -0
  225. package/dist/components/layer/injectionKey.js.map +1 -0
  226. package/dist/components/layer/style/index.css +1 -0
  227. package/dist/components/lcdFont/LcdFont.d.ts +126 -0
  228. package/dist/components/lcdFont/LcdFont.js +232 -0
  229. package/dist/components/lcdFont/LcdFont.js.map +1 -0
  230. package/dist/components/lcdFont/config.d.ts +43 -0
  231. package/dist/components/lcdFont/config.js +41 -0
  232. package/dist/components/lcdFont/config.js.map +1 -0
  233. package/dist/components/lcdFont/format.d.ts +8 -0
  234. package/dist/components/lcdFont/format.js +39 -0
  235. package/dist/components/lcdFont/format.js.map +1 -0
  236. package/dist/components/lcdFont/index.d.ts +5 -0
  237. package/dist/components/lcdFont/segments.d.ts +32 -0
  238. package/dist/components/lcdFont/segments.js +326 -0
  239. package/dist/components/lcdFont/segments.js.map +1 -0
  240. package/dist/components/lcdFont/style/index.css +1 -0
  241. package/dist/components/lcdFont/type.d.ts +26 -0
  242. package/dist/components/list/List.d.ts +480 -0
  243. package/dist/components/list/List.js +289 -0
  244. package/dist/components/list/List.js.map +1 -0
  245. package/dist/components/list/config.d.ts +3 -0
  246. package/dist/components/list/index.d.ts +3 -0
  247. package/dist/components/list/style/index.css +1 -0
  248. package/dist/components/loading/Loading.d.ts +97 -0
  249. package/dist/components/loading/Loading.js +124 -0
  250. package/dist/components/loading/Loading.js.map +1 -0
  251. package/dist/components/loading/config.d.ts +22 -0
  252. package/dist/components/loading/config.js +13 -0
  253. package/dist/components/loading/config.js.map +1 -0
  254. package/dist/components/loading/index.d.ts +3 -0
  255. package/dist/components/loading/style/index.css +1 -0
  256. package/dist/components/loading/type.d.ts +13 -0
  257. package/dist/components/mask/Mask.d.ts +79 -0
  258. package/dist/components/mask/Mask.js +82 -0
  259. package/dist/components/mask/Mask.js.map +1 -0
  260. package/dist/components/mask/config.d.ts +21 -0
  261. package/dist/components/mask/config.js +14 -0
  262. package/dist/components/mask/config.js.map +1 -0
  263. package/dist/components/mask/index.d.ts +3 -0
  264. package/dist/components/mask/style/mask.css +1 -0
  265. package/dist/components/match/Match copy.d.ts +1600 -0
  266. package/dist/components/match/Match.d.ts +1621 -0
  267. package/dist/components/match/Match.js +343 -0
  268. package/dist/components/match/Match.js.map +1 -0
  269. package/dist/components/match/config.d.ts +29 -0
  270. package/dist/components/match/config.js +17 -0
  271. package/dist/components/match/config.js.map +1 -0
  272. package/dist/components/match/index.d.ts +3 -0
  273. package/dist/components/match/style/index.css +1 -0
  274. package/dist/components/modal/Modal.d.ts +460 -0
  275. package/dist/components/modal/Modal.js +297 -0
  276. package/dist/components/modal/Modal.js.map +1 -0
  277. package/dist/components/modal/config.d.ts +33 -0
  278. package/dist/components/modal/config.js +19 -0
  279. package/dist/components/modal/config.js.map +1 -0
  280. package/dist/components/modal/index.d.ts +3 -0
  281. package/dist/components/modal/style/index.css +1 -0
  282. package/dist/components/notice/Notice.d.ts +137 -0
  283. package/dist/components/notice/Notice.js +192 -0
  284. package/dist/components/notice/Notice.js.map +1 -0
  285. package/dist/components/notice/index.d.ts +51 -0
  286. package/dist/components/notice/index.js +243 -0
  287. package/dist/components/notice/index.js.map +1 -0
  288. package/dist/components/notice/src/_util/index.d.ts +11 -0
  289. package/dist/components/notice/src/_util/index.js +50 -0
  290. package/dist/components/notice/src/_util/index.js.map +1 -0
  291. package/dist/components/notice/src/style/index.css +1 -0
  292. package/dist/components/notice/types.d.ts +98 -0
  293. package/dist/components/number/Number copy.d.ts +966 -0
  294. package/dist/components/number/Number.d.ts +1034 -0
  295. package/dist/components/number/Number.js +241 -0
  296. package/dist/components/number/Number.js.map +1 -0
  297. package/dist/components/number/config.d.ts +26 -0
  298. package/dist/components/number/config.js +15 -0
  299. package/dist/components/number/config.js.map +1 -0
  300. package/dist/components/number/index.d.ts +3 -0
  301. package/dist/components/number/style/index.css +1 -0
  302. package/dist/components/pagination/index.d.ts +3 -0
  303. package/dist/components/pagination/src/Pagination.d.ts +2830 -0
  304. package/dist/components/pagination/src/Pagination.js +288 -0
  305. package/dist/components/pagination/src/Pagination.js.map +1 -0
  306. package/dist/components/pagination/src/config.d.ts +25 -0
  307. package/dist/components/pagination/src/config.js +20 -0
  308. package/dist/components/pagination/src/config.js.map +1 -0
  309. package/dist/components/pagination/src/style/index.css +1 -0
  310. package/dist/components/picture/Picture.d.ts +18 -0
  311. package/dist/components/picture/Picture.js +254 -0
  312. package/dist/components/picture/Picture.js.map +1 -0
  313. package/dist/components/picture/PictureToolbar.d.ts +29 -0
  314. package/dist/components/picture/PictureToolbar.js +97 -0
  315. package/dist/components/picture/PictureToolbar.js.map +1 -0
  316. package/dist/components/picture/PictureViewport.d.ts +47 -0
  317. package/dist/components/picture/PictureViewport.js +203 -0
  318. package/dist/components/picture/PictureViewport.js.map +1 -0
  319. package/dist/components/picture/config.d.ts +16 -0
  320. package/dist/components/picture/config.js +16 -0
  321. package/dist/components/picture/config.js.map +1 -0
  322. package/dist/components/picture/index.d.ts +5 -0
  323. package/dist/components/picture/pictureFlip.d.ts +16 -0
  324. package/dist/components/picture/pictureFlip.js +103 -0
  325. package/dist/components/picture/pictureFlip.js.map +1 -0
  326. package/dist/components/picture/style/index.css +1 -0
  327. package/dist/components/progress/Progress.d.ts +94 -0
  328. package/dist/components/progress/Progress.js +112 -0
  329. package/dist/components/progress/Progress.js.map +1 -0
  330. package/dist/components/progress/index.d.ts +1 -0
  331. package/dist/components/progress/style/index.css +1 -0
  332. package/dist/components/radio/Radio.d.ts +112 -0
  333. package/dist/components/radio/Radio.js +130 -0
  334. package/dist/components/radio/Radio.js.map +1 -0
  335. package/dist/components/radio/config.d.ts +29 -0
  336. package/dist/components/radio/config.js +18 -0
  337. package/dist/components/radio/config.js.map +1 -0
  338. package/dist/components/radio/index.d.ts +3 -0
  339. package/dist/components/radio/style/index.css +1 -0
  340. package/dist/components/scrollbar/Scrollbar.d.ts +93 -0
  341. package/dist/components/scrollbar/Scrollbar.js +515 -0
  342. package/dist/components/scrollbar/Scrollbar.js.map +1 -0
  343. package/dist/components/scrollbar/index.d.ts +1 -0
  344. package/dist/components/scrollbar/style/index.css +1 -0
  345. package/dist/components/sheet/Sheet.d.ts +1448 -0
  346. package/dist/components/sheet/Sheet.js +592 -0
  347. package/dist/components/sheet/Sheet.js.map +1 -0
  348. package/dist/components/sheet/_cell.d.ts +181 -0
  349. package/dist/components/sheet/_cell.js +132 -0
  350. package/dist/components/sheet/_cell.js.map +1 -0
  351. package/dist/components/sheet/_props.d.ts +170 -0
  352. package/dist/components/sheet/_props.js +183 -0
  353. package/dist/components/sheet/_props.js.map +1 -0
  354. package/dist/components/sheet/_row.d.ts +2 -0
  355. package/dist/components/sheet/_row.js +14 -0
  356. package/dist/components/sheet/_row.js.map +1 -0
  357. package/dist/components/sheet/_tbody.d.ts +348 -0
  358. package/dist/components/sheet/_tbody.js +255 -0
  359. package/dist/components/sheet/_tbody.js.map +1 -0
  360. package/dist/components/sheet/_tfoot.d.ts +195 -0
  361. package/dist/components/sheet/_tfoot.js +78 -0
  362. package/dist/components/sheet/_tfoot.js.map +1 -0
  363. package/dist/components/sheet/_thead.d.ts +529 -0
  364. package/dist/components/sheet/_thead.js +148 -0
  365. package/dist/components/sheet/_thead.js.map +1 -0
  366. package/dist/components/sheet/_use.d.ts +38 -0
  367. package/dist/components/sheet/_use.js +493 -0
  368. package/dist/components/sheet/_use.js.map +1 -0
  369. package/dist/components/sheet/_util.d.ts +34 -0
  370. package/dist/components/sheet/_util.js +111 -0
  371. package/dist/components/sheet/_util.js.map +1 -0
  372. package/dist/components/sheet/index.d.ts +1 -0
  373. package/dist/components/sheet/style/index.css +1 -0
  374. package/dist/components/slideDown/SlideDown.d.ts +62 -0
  375. package/dist/components/slideDown/SlideDown.js +128 -0
  376. package/dist/components/slideDown/SlideDown.js.map +1 -0
  377. package/dist/components/slideDown/index.d.ts +1 -0
  378. package/dist/components/slider/Slider.d.ts +1726 -0
  379. package/dist/components/slider/Slider.js +471 -0
  380. package/dist/components/slider/Slider.js.map +1 -0
  381. package/dist/components/slider/index.d.ts +1 -0
  382. package/dist/components/slider/style/index.css +1 -0
  383. package/dist/components/svgIcon/SvgIcon.d.ts +37 -0
  384. package/dist/components/svgIcon/SvgIcon.js +78 -0
  385. package/dist/components/svgIcon/SvgIcon.js.map +1 -0
  386. package/dist/components/svgIcon/index.d.ts +3 -0
  387. package/dist/components/svgIcon/style/index.css +1 -0
  388. package/dist/components/switch/Switch.d.ts +105 -0
  389. package/dist/components/switch/Switch.js +158 -0
  390. package/dist/components/switch/Switch.js.map +1 -0
  391. package/dist/components/switch/config.d.ts +16 -0
  392. package/dist/components/switch/config.js +11 -0
  393. package/dist/components/switch/config.js.map +1 -0
  394. package/dist/components/switch/index.d.ts +1 -0
  395. package/dist/components/switch/style/index.css +1 -0
  396. package/dist/components/tab/Tab.d.ts +113 -0
  397. package/dist/components/tab/Tab.js +485 -0
  398. package/dist/components/tab/Tab.js.map +1 -0
  399. package/dist/components/tab/index.d.ts +2 -0
  400. package/dist/components/tab/style/index.css +1 -0
  401. package/dist/components/textarea/Textarea.d.ts +37 -0
  402. package/dist/components/textarea/Textarea.js +193 -0
  403. package/dist/components/textarea/Textarea.js.map +1 -0
  404. package/dist/components/textarea/config.d.ts +30 -0
  405. package/dist/components/textarea/config.js +16 -0
  406. package/dist/components/textarea/config.js.map +1 -0
  407. package/dist/components/textarea/index.d.ts +4 -0
  408. package/dist/components/textarea/style/index.css +1 -0
  409. package/dist/components/time/Dial.js +7 -0
  410. package/dist/components/time/Dial.js.map +1 -0
  411. package/dist/components/time/Dial.vue_vue_type_script_setup_true_lang.js +178 -0
  412. package/dist/components/time/Dial.vue_vue_type_script_setup_true_lang.js.map +1 -0
  413. package/dist/components/time/TimePicker.d.ts +1301 -0
  414. package/dist/components/time/TimePicker.js +162 -0
  415. package/dist/components/time/TimePicker.js.map +1 -0
  416. package/dist/components/time/_use/useTimeModules.d.ts +1 -0
  417. package/dist/components/time/index.d.ts +1 -0
  418. package/dist/components/time/style/dial.css +1 -0
  419. package/dist/components/time/style/index.css +1 -0
  420. package/dist/components/toggle/Toggle.d.ts +140 -0
  421. package/dist/components/toggle/Toggle.js +209 -0
  422. package/dist/components/toggle/Toggle.js.map +1 -0
  423. package/dist/components/toggle/index.d.ts +1 -0
  424. package/dist/components/toggle/style/index.css +1 -0
  425. package/dist/components/toggle/style/scale.css +1 -0
  426. package/dist/components/toggle/style/translate.css +1 -0
  427. package/dist/components/tooltip/Tooltip.d.ts +536 -0
  428. package/dist/components/tooltip/Tooltip.js +51 -0
  429. package/dist/components/tooltip/Tooltip.js.map +1 -0
  430. package/dist/components/tooltip/index.d.ts +1 -0
  431. package/dist/components/tooltip/style/index.css +1 -0
  432. package/dist/components/tree/Tree.d.ts +187 -0
  433. package/dist/components/tree/Tree.js +229 -0
  434. package/dist/components/tree/Tree.js.map +1 -0
  435. package/dist/components/tree/TreeItem.d.ts +86 -0
  436. package/dist/components/tree/TreeItem.js +152 -0
  437. package/dist/components/tree/TreeItem.js.map +1 -0
  438. package/dist/components/tree/TreeList.d.ts +86 -0
  439. package/dist/components/tree/TreeList.js +52 -0
  440. package/dist/components/tree/TreeList.js.map +1 -0
  441. package/dist/components/tree/_use/treeState.d.ts +45 -0
  442. package/dist/components/tree/_use/treeState.js +417 -0
  443. package/dist/components/tree/_use/treeState.js.map +1 -0
  444. package/dist/components/tree/config.d.ts +27 -0
  445. package/dist/components/tree/config.js +16 -0
  446. package/dist/components/tree/config.js.map +1 -0
  447. package/dist/components/tree/index.d.ts +4 -0
  448. package/dist/components/tree/style/index.css +1 -0
  449. package/dist/components/tree-choose/TreeChoose.d.ts +833 -0
  450. package/dist/components/tree-choose/TreeChoose.js +320 -0
  451. package/dist/components/tree-choose/TreeChoose.js.map +1 -0
  452. package/dist/components/tree-choose/config.d.ts +41 -0
  453. package/dist/components/tree-choose/config.js +19 -0
  454. package/dist/components/tree-choose/config.js.map +1 -0
  455. package/dist/components/tree-choose/index.d.ts +4 -0
  456. package/dist/components/tree-choose/style/index.css +1 -0
  457. package/dist/components/trigger/Trigger.d.ts +921 -0
  458. package/dist/components/trigger/Trigger.js +105 -0
  459. package/dist/components/trigger/Trigger.js.map +1 -0
  460. package/dist/components/trigger/index.d.ts +1 -0
  461. package/dist/components/trigger/style/index.css +2 -0
  462. package/dist/components/upload/Upload.d.ts +249 -0
  463. package/dist/components/upload/Upload.js +342 -0
  464. package/dist/components/upload/Upload.js.map +1 -0
  465. package/dist/components/upload/config.d.ts +39 -0
  466. package/dist/components/upload/config.js +21 -0
  467. package/dist/components/upload/config.js.map +1 -0
  468. package/dist/components/upload/index.d.ts +4 -0
  469. package/dist/components/upload/style/index.css +1 -0
  470. package/dist/components/upload/types.d.ts +47 -0
  471. package/dist/components/virtual/Virtual.d.ts +57 -0
  472. package/dist/components/virtual/Virtual.js +62 -0
  473. package/dist/components/virtual/Virtual.js.map +1 -0
  474. package/dist/components/virtual/Virtual/345/216/237/347/211/210.d.ts +44 -0
  475. package/dist/components/virtual/index.d.ts +4 -0
  476. package/dist/components/virtual/style/index.css +1 -0
  477. package/dist/components/virtual/useVirtualList.d.ts +50 -0
  478. package/dist/components/virtual/useVirtualList.js +376 -0
  479. package/dist/components/virtual/useVirtualList.js.map +1 -0
  480. package/dist/components/write/Write.d.ts +532 -0
  481. package/dist/components/write/Write.js +228 -0
  482. package/dist/components/write/Write.js.map +1 -0
  483. package/dist/components/write/index.d.ts +1 -0
  484. package/dist/components/write/style/index.css +1 -0
  485. package/dist/config/dictionary.d.ts +21 -0
  486. package/dist/config/dictionary.js +28 -0
  487. package/dist/config/dictionary.js.map +1 -0
  488. package/dist/config/i18n.d.ts +22 -0
  489. package/dist/config/i18n.js +53 -0
  490. package/dist/config/i18n.js.map +1 -0
  491. package/dist/config/plugin.d.ts +88 -0
  492. package/dist/config/plugin.js +13 -0
  493. package/dist/config/plugin.js.map +1 -0
  494. package/dist/config/types.d.ts +56 -0
  495. package/dist/directives/clickOutside.d.ts +10 -0
  496. package/dist/directives/clickOutside.js +69 -0
  497. package/dist/directives/clickOutside.js.map +1 -0
  498. package/dist/directives/index.d.ts +3 -0
  499. package/dist/directives/index.js +13 -0
  500. package/dist/directives/index.js.map +1 -0
  501. package/dist/directives/loading.d.ts +19 -0
  502. package/dist/directives/loading.js +64 -0
  503. package/dist/directives/loading.js.map +1 -0
  504. package/dist/index.d.ts +127 -0
  505. package/dist/index.js +91 -0
  506. package/dist/locales/de-DE/index.d.ts +144 -0
  507. package/dist/locales/de-DE/index.js +140 -0
  508. package/dist/locales/de-DE/index.js.map +1 -0
  509. package/dist/locales/en-US/index.d.ts +144 -0
  510. package/dist/locales/en-US/index.js +140 -0
  511. package/dist/locales/en-US/index.js.map +1 -0
  512. package/dist/locales/index.d.ts +3 -0
  513. package/dist/locales/zh-CN/index.d.ts +144 -0
  514. package/dist/locales/zh-CN/index.js +140 -0
  515. package/dist/locales/zh-CN/index.js.map +1 -0
  516. package/dist/plugin.d.ts +6 -0
  517. package/dist/plugin.js +38 -0
  518. package/dist/plugin.js.map +1 -0
  519. package/dist/styles/index.css +49 -0
  520. package/dist/theme/_transition.css +169 -0
  521. package/dist/theme/index.css +5 -0
  522. package/dist/theme/tokens/_base.css +7 -0
  523. package/dist/theme/tokens/_common.css +37 -0
  524. package/dist/theme/tokens/_scrollbar.css +53 -0
  525. package/dist/theme/tokens/_size.css +18 -0
  526. package/dist/theme/tokens/_text.css +16 -0
  527. package/dist/theme/tokens/_var.css +1087 -0
  528. package/dist/theme/tokens/components/audioPlayer.css +542 -0
  529. package/dist/theme/tokens/components/btn.css +253 -0
  530. package/dist/theme/tokens/components/btnGroup.css +68 -0
  531. package/dist/theme/tokens/components/cascade.css +77 -0
  532. package/dist/theme/tokens/components/checkbox.css +100 -0
  533. package/dist/theme/tokens/components/choose.css +175 -0
  534. package/dist/theme/tokens/components/choose2.css +242 -0
  535. package/dist/theme/tokens/components/chooseItem.css +54 -0
  536. package/dist/theme/tokens/components/circleProgress.css +61 -0
  537. package/dist/theme/tokens/components/close.css +12 -0
  538. package/dist/theme/tokens/components/colorPicker.css +404 -0
  539. package/dist/theme/tokens/components/confirm.css +128 -0
  540. package/dist/theme/tokens/components/copy.css +80 -0
  541. package/dist/theme/tokens/components/cornerEars.css +102 -0
  542. package/dist/theme/tokens/components/date/days.css +79 -0
  543. package/dist/theme/tokens/components/date/index.css +249 -0
  544. package/dist/theme/tokens/components/date/months.css +68 -0
  545. package/dist/theme/tokens/components/drawer.css +189 -0
  546. package/dist/theme/tokens/components/ellipsis.css +46 -0
  547. package/dist/theme/tokens/components/empty.css +24 -0
  548. package/dist/theme/tokens/components/equalizer.css +51 -0
  549. package/dist/theme/tokens/components/fallback.css +4 -0
  550. package/dist/theme/tokens/components/form.css +50 -0
  551. package/dist/theme/tokens/components/formItem.css +194 -0
  552. package/dist/theme/tokens/components/icon.css +41 -0
  553. package/dist/theme/tokens/components/image.css +70 -0
  554. package/dist/theme/tokens/components/layer.css +190 -0
  555. package/dist/theme/tokens/components/lcdFont.css +121 -0
  556. package/dist/theme/tokens/components/list.css +97 -0
  557. package/dist/theme/tokens/components/loading.css +64 -0
  558. package/dist/theme/tokens/components/mask.css +26 -0
  559. package/dist/theme/tokens/components/match.css +119 -0
  560. package/dist/theme/tokens/components/modal.css +136 -0
  561. package/dist/theme/tokens/components/notice.css +264 -0
  562. package/dist/theme/tokens/components/number.css +150 -0
  563. package/dist/theme/tokens/components/pagination.css +215 -0
  564. package/dist/theme/tokens/components/picture.css +299 -0
  565. package/dist/theme/tokens/components/progress.css +101 -0
  566. package/dist/theme/tokens/components/radio.css +183 -0
  567. package/dist/theme/tokens/components/scrollbar.css +160 -0
  568. package/dist/theme/tokens/components/sheet.css +518 -0
  569. package/dist/theme/tokens/components/slider.css +171 -0
  570. package/dist/theme/tokens/components/svgIcon.css +6 -0
  571. package/dist/theme/tokens/components/switch.css +67 -0
  572. package/dist/theme/tokens/components/tab.css +215 -0
  573. package/dist/theme/tokens/components/textarea.css +109 -0
  574. package/dist/theme/tokens/components/time/dial.css +123 -0
  575. package/dist/theme/tokens/components/time/index.css +29 -0
  576. package/dist/theme/tokens/components/toggle/index.css +14 -0
  577. package/dist/theme/tokens/components/toggle/scale.css +34 -0
  578. package/dist/theme/tokens/components/toggle/translate.css +41 -0
  579. package/dist/theme/tokens/components/tooltip.css +77 -0
  580. package/dist/theme/tokens/components/tree-choose.css +154 -0
  581. package/dist/theme/tokens/components/tree.css +172 -0
  582. package/dist/theme/tokens/components/trigger.css +90 -0
  583. package/dist/theme/tokens/components/upload.css +302 -0
  584. package/dist/theme/tokens/components/virtual.css +6 -0
  585. package/dist/theme/tokens/components/write.css +155 -0
  586. package/dist/theme/tokens/iconfont/iconfont.css +103 -0
  587. package/dist/theme/tokens/iconfont/iconfont.ttf +0 -0
  588. package/dist/theme/tokens/iconfont/iconfont.woff +0 -0
  589. package/dist/theme/tokens/iconfont/iconfont.woff2 +0 -0
  590. package/dist/theme/tokens/index.css +19 -0
  591. package/dist/use/index.d.ts +34 -0
  592. package/dist/use/toggle/types.d.ts +27 -0
  593. package/dist/use/toggle/useToggle.d.ts +22 -0
  594. package/dist/use/toggle/useToggleArray.d.ts +14 -0
  595. package/dist/use/toggle/useToggleArray.js +36 -0
  596. package/dist/use/toggle/useToggleArray.js.map +1 -0
  597. package/dist/use/toggle/useToggleCycle.d.ts +11 -0
  598. package/dist/use/toggle/useToggleCycle.js +88 -0
  599. package/dist/use/toggle/useToggleCycle.js.map +1 -0
  600. package/dist/use/toggle/useToggleMap.d.ts +10 -0
  601. package/dist/use/toggle/useToggleObject.d.ts +13 -0
  602. package/dist/use/useAudioPlayer.d.ts +160 -0
  603. package/dist/use/useAudioPlayer.js +799 -0
  604. package/dist/use/useAudioPlayer.js.map +1 -0
  605. package/dist/use/useBoundingClientRect.d.ts +14 -0
  606. package/dist/use/useBoundingClientRect.js +54 -0
  607. package/dist/use/useBoundingClientRect.js.map +1 -0
  608. package/dist/use/useChildComponentsCollector.js +30 -0
  609. package/dist/use/useChildComponentsCollector.js.map +1 -0
  610. package/dist/use/useComponentClass.d.ts +1 -0
  611. package/dist/use/useComponentClass.js +6 -0
  612. package/dist/use/useComponentClass.js.map +1 -0
  613. package/dist/use/useComponentConfig.d.ts +10 -0
  614. package/dist/use/useComponentConfig.js +31 -0
  615. package/dist/use/useComponentConfig.js.map +1 -0
  616. package/dist/use/useCount.d.ts +13 -0
  617. package/dist/use/useCount.js +36 -0
  618. package/dist/use/useCount.js.map +1 -0
  619. package/dist/use/useDate.d.ts +53 -0
  620. package/dist/use/useDate.js +280 -0
  621. package/dist/use/useDate.js.map +1 -0
  622. package/dist/use/useDelay.d.ts +5 -0
  623. package/dist/use/useDelay.js +38 -0
  624. package/dist/use/useDelay.js.map +1 -0
  625. package/dist/use/useDrag.d.ts +17 -0
  626. package/dist/use/useElement.d.ts +15 -0
  627. package/dist/use/useElement.js +41 -0
  628. package/dist/use/useElement.js.map +1 -0
  629. package/dist/use/useEscStack.d.ts +14 -0
  630. package/dist/use/useEscStack.js +62 -0
  631. package/dist/use/useEscStack.js.map +1 -0
  632. package/dist/use/useEvent.d.ts +9 -0
  633. package/dist/use/useEvent.js +43 -0
  634. package/dist/use/useEvent.js.map +1 -0
  635. package/dist/use/useFormItem.d.ts +9 -0
  636. package/dist/use/useFormItem.js +20 -0
  637. package/dist/use/useFormItem.js.map +1 -0
  638. package/dist/use/useGlobalZIndex.d.ts +6 -0
  639. package/dist/use/useGlobalZIndex.js +28 -0
  640. package/dist/use/useGlobalZIndex.js.map +1 -0
  641. package/dist/use/useMouse.d.ts +15 -0
  642. package/dist/use/useMouse.js +36 -0
  643. package/dist/use/useMouse.js.map +1 -0
  644. package/dist/use/useMousePositionInElement.d.ts +6 -0
  645. package/dist/use/useMousePositionInElement.js +27 -0
  646. package/dist/use/useMousePositionInElement.js.map +1 -0
  647. package/dist/use/useParentNode.d.ts +3 -0
  648. package/dist/use/useParentNode.js +25 -0
  649. package/dist/use/useParentNode.js.map +1 -0
  650. package/dist/use/usePercentDrag.d.ts +20 -0
  651. package/dist/use/usePercentDrag.js +59 -0
  652. package/dist/use/usePercentDrag.js.map +1 -0
  653. package/dist/use/usePictureViewport.d.ts +57 -0
  654. package/dist/use/usePictureViewport.js +229 -0
  655. package/dist/use/usePictureViewport.js.map +1 -0
  656. package/dist/use/useRequest.d.ts +7 -0
  657. package/dist/use/useRequest.js +31 -0
  658. package/dist/use/useRequest.js.map +1 -0
  659. package/dist/use/useScaleFromPoint.d.ts +57 -0
  660. package/dist/use/useScaleFromPoint.js +325 -0
  661. package/dist/use/useScaleFromPoint.js.map +1 -0
  662. package/dist/use/useScroll.d.ts +9 -0
  663. package/dist/use/useScroll.js +60 -0
  664. package/dist/use/useScroll.js.map +1 -0
  665. package/dist/use/useSearch.d.ts +11 -0
  666. package/dist/use/useSearch.js +65 -0
  667. package/dist/use/useSearch.js.map +1 -0
  668. package/dist/use/useSlot.d.ts +10 -0
  669. package/dist/use/useSlot.js +57 -0
  670. package/dist/use/useSlot.js.map +1 -0
  671. package/dist/use/useTabIndex.d.ts +1 -0
  672. package/dist/use/useTabIndex.js +18 -0
  673. package/dist/use/useTabIndex.js.map +1 -0
  674. package/dist/use/useUII18n.js +26 -0
  675. package/dist/use/useUII18n.js.map +1 -0
  676. package/dist/use/useUpload.d.ts +49 -0
  677. package/dist/use/useUpload.js +396 -0
  678. package/dist/use/useUpload.js.map +1 -0
  679. package/dist/use/useVisibleResize.d.ts +6 -0
  680. package/dist/use/useVisibleResize.js +77 -0
  681. package/dist/use/useVisibleResize.js.map +1 -0
  682. package/dist/util/calc.d.ts +40 -0
  683. package/dist/util/calc.js +239 -0
  684. package/dist/util/calc.js.map +1 -0
  685. package/dist/util/colors.d.ts +78 -0
  686. package/dist/util/colors.js +320 -0
  687. package/dist/util/colors.js.map +1 -0
  688. package/dist/util/cssVars.d.ts +62 -0
  689. package/dist/util/cssVars.js +170 -0
  690. package/dist/util/cssVars.js.map +1 -0
  691. package/dist/util/dom.d.ts +65 -0
  692. package/dist/util/dom.js +212 -0
  693. package/dist/util/dom.js.map +1 -0
  694. package/dist/util/index.d.ts +5 -0
  695. package/dist/util/tools.d.ts +54 -0
  696. package/dist/util/tools.js +90 -0
  697. package/dist/util/tools.js.map +1 -0
  698. package/dist/util/vnode.d.ts +2 -0
  699. package/package.json +88 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Picture.js","names":["Teleport","computed","defineComponent","mergeProps","nextTick","onBeforeUnmount","ref","watch","Fragment","_Fragment","createVNode","_createVNode","propSizeToCssVars","toCssVarsStyle","useComponentConfig","useEscStack","useGlobalZIndex","useUII18n","createPictureViewport","Close","Icon","Image","Mask","Toggle","normalizePictureImages","PICTURE_FALLBACK","runPictureImgEnter","PictureToolbar","PictureViewport","INTERACT_SAFE","PictureImpl","name","inheritAttrs","components","props","images","type","String","Array","default","undefined","size","Number","round","Boolean","cssVars","Object","emits","_v","show","_index","hide","setup","attrs","emit","cfg","t","zIndex","add","curIndex","alwaysOneWay","fromRect","interact","viewportApi","viewportController","stopFlip","list","v","value","reset","prepareImageChange","enableInteract","fit","playEnterFlip","Promise","r","requestAnimationFrame","el","getFlipEl","from","onEnd","openAt","i","e","target","currentTarget","getBoundingClientRect","close","onViewerClick","closest","onThumbClick","goPrev","prev","goNext","next","bindViewport","length","rootProps","class","style","multi","map","src","stopPropagation","item","use","index","onClick"],"sources":["../../../components/picture/Picture.tsx"],"sourcesContent":["import {\r\n Teleport,\r\n computed,\r\n defineComponent,\r\n mergeProps,\r\n nextTick,\r\n onBeforeUnmount,\r\n ref,\r\n watch,\r\n type PropType,\r\n} from 'vue'\r\nimport {\r\n propSizeToCssVars,\r\n toCssVarsStyle,\r\n type CssVars,\r\n} from '../../util'\r\nimport useComponentConfig from '../../use/useComponentConfig'\r\nimport useEscStack from '../../use/useEscStack'\r\nimport useGlobalZIndex from '../../use/useGlobalZIndex'\r\nimport { useUII18n } from '../../use/useUII18n'\r\nimport { createPictureViewport } from '../../use/usePictureViewport'\r\nimport Close from '../close/index'\r\nimport Icon from '../icon/index'\r\nimport Image from '../image/index'\r\nimport Mask from '../mask/index'\r\nimport Toggle from '../toggle/index'\r\nimport {\r\n normalizePictureImages,\r\n PICTURE_FALLBACK,\r\n} from './config'\r\nimport { runPictureImgEnter } from './pictureFlip'\r\nimport PictureToolbar from './PictureToolbar'\r\nimport PictureViewport, {\r\n type PictureViewportMethods,\r\n} from './PictureViewport'\r\n\r\nexport type { PictureGlobalConfig } from './config'\r\nexport { PICTURE_FALLBACK, normalizePictureImages } from './config'\r\n\r\nexport type PictureProps = {\r\n /** 图片地址:逗号分隔字符串或数组 */\r\n images?: string | string[]\r\n size?: number\r\n round?: boolean | string\r\n cssVars?: CssVars\r\n}\r\n\r\nexport type PictureJSXProps = PictureProps &\r\n Omit<JSX.IntrinsicElements['div'], keyof PictureProps | 'ref'>\r\n\r\nexport type PictureComponent = {\r\n new (): {\r\n $props: PictureJSXProps\r\n }\r\n}\r\n\r\nconst INTERACT_SAFE =\r\n '.w-picture-viewer__viewport, .w-picture-viewer__img-wrap, .w-picture-viewer__img, .w-picture-viewer__thumb, .w-picture-viewer__nav, .w-picture-viewer__close, .w-picture-viewer__thumbs, .w-picture-viewer__toolbar'\r\n\r\nconst PictureImpl = defineComponent({\r\n name: 'Picture',\r\n inheritAttrs: false,\r\n components: {\r\n Image,\r\n Mask,\r\n Toggle,\r\n Close,\r\n Icon,\r\n PictureViewport,\r\n PictureToolbar,\r\n },\r\n props: {\r\n images: {\r\n type: [String, Array] as PropType<string | string[]>,\r\n default: undefined,\r\n },\r\n size: { type: Number, default: undefined },\r\n round: {\r\n type: [Boolean, String] as PropType<boolean | string>,\r\n default: undefined,\r\n },\r\n cssVars: { type: Object as PropType<CssVars>, default: undefined },\r\n },\r\n emits: {\r\n 'update:show': (_v: boolean) => true,\r\n show: (_index: number) => true,\r\n hide: () => true,\r\n },\r\n setup(props, { attrs, emit }) {\r\n const cfg = useComponentConfig('Picture', props, PICTURE_FALLBACK)\r\n const { t } = useUII18n()\r\n const { zIndex, add } = useGlobalZIndex()\r\n const show = ref(false)\r\n const curIndex = ref(0)\r\n const alwaysOneWay = ref(false)\r\n const fromRect = ref<DOMRect | null>(null)\r\n const interact = ref(false)\r\n const viewportApi = ref<PictureViewportMethods | null>(null)\r\n const viewportController = createPictureViewport()\r\n let stopFlip: (() => void) | undefined\r\n\r\n const list = computed(() => normalizePictureImages(props.images))\r\n\r\n watch(show, (v) => {\r\n emit('update:show', v)\r\n if (!v) {\r\n emit('hide')\r\n stopFlip?.()\r\n stopFlip = undefined\r\n fromRect.value = null\r\n interact.value = false\r\n viewportApi.value = null\r\n viewportController.reset()\r\n }\r\n })\r\n\r\n watch(curIndex, () => {\r\n if (!show.value || !interact.value) return\r\n // 切图:保留相对缩放,仅清平移(具体落点在新图 onLoad)\r\n viewportController.prepareImageChange()\r\n })\r\n\r\n useEscStack(\r\n show,\r\n () => {\r\n show.value = false\r\n },\r\n () => zIndex.value,\r\n )\r\n\r\n function enableInteract() {\r\n // 仅打开进场结束后校准一次适应;切图不走这里\r\n viewportApi.value?.fit(false)\r\n interact.value = true\r\n }\r\n\r\n async function playEnterFlip() {\r\n stopFlip?.()\r\n stopFlip = undefined\r\n interact.value = false\r\n await nextTick()\r\n await new Promise<void>((r) => requestAnimationFrame(() => r()))\r\n const el = viewportApi.value?.getFlipEl()\r\n const from = fromRect.value\r\n if (!el || !from) {\r\n fromRect.value = null\r\n enableInteract()\r\n return\r\n }\r\n fromRect.value = null\r\n stopFlip = runPictureImgEnter(el, from, {\r\n onEnd: () => {\r\n enableInteract()\r\n },\r\n })\r\n }\r\n\r\n function openAt(i: number, e?: MouseEvent) {\r\n const target = (e?.currentTarget as HTMLElement | null) ?? null\r\n fromRect.value = target?.getBoundingClientRect() ?? null\r\n viewportController.reset()\r\n curIndex.value = i\r\n alwaysOneWay.value = false\r\n interact.value = false\r\n add()\r\n show.value = true\r\n emit('show', i)\r\n void playEnterFlip()\r\n }\r\n\r\n function close() {\r\n show.value = false\r\n }\r\n\r\n function onViewerClick(e: MouseEvent) {\r\n const el = e.target as HTMLElement | null\r\n if (el?.closest(INTERACT_SAFE)) return\r\n close()\r\n }\r\n\r\n function onThumbClick(i: number) {\r\n curIndex.value = i\r\n alwaysOneWay.value = false\r\n }\r\n\r\n function goPrev(prev: () => void) {\r\n alwaysOneWay.value = true\r\n prev()\r\n }\r\n\r\n function goNext(next: () => void) {\r\n alwaysOneWay.value = true\r\n next()\r\n }\r\n\r\n function bindViewport(el: unknown) {\r\n // Toggle 切图时旧实例可能后触发 null,勿清掉新实例\r\n if (el) viewportApi.value = el as PictureViewportMethods\r\n }\r\n\r\n onBeforeUnmount(() => {\r\n stopFlip?.()\r\n })\r\n\r\n return () => {\r\n const images = list.value\r\n if (!images.length) return null\r\n\r\n const rootProps = mergeProps(\r\n {\r\n class: 'w-picture',\r\n style: toCssVarsStyle({\r\n ...propSizeToCssVars('picture', cfg.value.size),\r\n ...props.cssVars,\r\n }),\r\n },\r\n attrs,\r\n )\r\n\r\n const multi = images.length > 1\r\n\r\n return (\r\n <>\r\n <div {...rootProps}>\r\n {images.map((src, i) => (\r\n <Image\r\n key={`${src}-${i}`}\r\n class={[\r\n 'w-picture__thumb',\r\n { 'is-previewing': show.value && curIndex.value === i },\r\n ]}\r\n src={src}\r\n round={cfg.value.round}\r\n onClick={(e: MouseEvent) => openAt(i, e)}\r\n />\r\n ))}\r\n </div>\r\n\r\n <Mask\r\n show={show.value}\r\n zIndex={zIndex.value}\r\n class=\"w-picture-mask\"\r\n canCloseByClickSelf\r\n onUpdate:show={(v: boolean) => {\r\n show.value = v\r\n }}\r\n />\r\n\r\n <Teleport to=\"body\">\r\n {show.value ? (\r\n <div\r\n class=\"w-picture-viewer\"\r\n style={{\r\n /* 高于 Mask,避免同层 portal 重排后盖住操作控件 */\r\n ['--__w-picture-viewer-z-index' as string]: zIndex.value + 1,\r\n }}\r\n onClick={onViewerClick}>\r\n <Close\r\n class=\"w-picture-viewer__close\"\r\n size={24}\r\n ariaLabel={t('picture.close')}\r\n title={t('picture.close')}\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation()\r\n close()\r\n }}\r\n />\r\n\r\n <Toggle\r\n class=\"w-picture-viewer__stage\"\r\n wheel={false}\r\n index={curIndex.value}\r\n data={images}\r\n itemClass=\"w-picture-viewer__item\"\r\n transform=\"translate\"\r\n alwaysOneWay={alwaysOneWay.value}\r\n onUpdate:index={(i: number) => {\r\n curIndex.value = i\r\n }}\r\n v-slots={{\r\n default: ({ item }: { item: string }) => (\r\n <PictureViewport\r\n key={`${item}-${curIndex.value}`}\r\n ref={bindViewport}\r\n src={item}\r\n interact={interact.value}\r\n controller={viewportController}\r\n />\r\n ),\r\n use: ({\r\n index,\r\n prev,\r\n next,\r\n }: {\r\n index: number\r\n prev: () => void\r\n next: () => void\r\n }) => (\r\n <>\r\n <PictureToolbar\r\n viewport={viewportApi.value}\r\n disabled={!interact.value}\r\n />\r\n {multi ? (\r\n <div class=\"w-picture-viewer__thumbs\">\r\n {images.map((src, i) => (\r\n <img\r\n key={`${src}-t-${i}`}\r\n class={[\r\n 'w-picture-viewer__thumb',\r\n { 'is-active': i === index },\r\n ]}\r\n src={src}\r\n alt=\"\"\r\n draggable={false}\r\n onClick={() => onThumbClick(i)}\r\n />\r\n ))}\r\n </div>\r\n ) : null}\r\n {multi ? (\r\n <>\r\n <Icon\r\n class=\"w-picture-viewer__nav w-picture-viewer__nav--prev\"\r\n name=\"w-icon-arrow-down\"\r\n rotate\r\n direction=\"z\"\r\n deg={90}\r\n size=\"var(--w-picture-viewer-nav-size)\"\r\n ariaLabel={t('picture.prev')}\r\n title={t('picture.prev')}\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation()\r\n goPrev(prev)\r\n }}\r\n />\r\n <Icon\r\n class=\"w-picture-viewer__nav w-picture-viewer__nav--next\"\r\n name=\"w-icon-arrow-down\"\r\n rotate\r\n direction=\"z\"\r\n deg={-90}\r\n size=\"var(--w-picture-viewer-nav-size)\"\r\n ariaLabel={t('picture.next')}\r\n title={t('picture.next')}\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation()\r\n goNext(next)\r\n }}\r\n />\r\n </>\r\n ) : null}\r\n </>\r\n ),\r\n }}\r\n />\r\n </div>\r\n ) : null}\r\n </Teleport>\r\n </>\r\n )\r\n }\r\n },\r\n})\r\n\r\nexport default PictureImpl as unknown as PictureComponent\r\n"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { PropType } from 'vue';
2
+ import { PictureViewportMethods } from './PictureViewport';
3
+ export type PictureToolbarProps = {
4
+ viewport?: PictureViewportMethods | null;
5
+ disabled?: boolean;
6
+ };
7
+ declare const PictureToolbar: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
8
+ viewport: {
9
+ type: PropType<PictureViewportMethods | null | undefined>;
10
+ default: any;
11
+ };
12
+ disabled: {
13
+ type: BooleanConstructor;
14
+ default: boolean;
15
+ };
16
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
17
+ viewport: {
18
+ type: PropType<PictureViewportMethods | null | undefined>;
19
+ default: any;
20
+ };
21
+ disabled: {
22
+ type: BooleanConstructor;
23
+ default: boolean;
24
+ };
25
+ }>> & Readonly<{}>, {
26
+ disabled: boolean;
27
+ viewport: PictureViewportMethods;
28
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
29
+ export default PictureToolbar;
@@ -0,0 +1,97 @@
1
+ import { useUII18n } from "../../use/useUII18n.js";
2
+ import { PICTURE_VIEWPORT_ZOOM_STEP } from "../../use/usePictureViewport.js";
3
+ import SvgIcon from "../svgIcon/SvgIcon.js";
4
+ import { createTextVNode, createVNode, defineComponent } from "vue";
5
+ //#region components/picture/PictureToolbar.tsx
6
+ var PictureToolbar = /* @__PURE__ */ defineComponent({
7
+ name: "PictureToolbar",
8
+ props: {
9
+ viewport: {
10
+ type: Object,
11
+ default: void 0
12
+ },
13
+ disabled: {
14
+ type: Boolean,
15
+ default: false
16
+ }
17
+ },
18
+ setup(props) {
19
+ const { t } = useUII18n();
20
+ const iconSize = "var(--w-picture-toolbar-icon-size)";
21
+ function run(fn) {
22
+ if (props.disabled) return;
23
+ fn?.();
24
+ }
25
+ function btn(key, title, onClick, child) {
26
+ return createVNode("button", {
27
+ "key": key,
28
+ "type": "button",
29
+ "class": "w-picture-viewer__toolbar-btn",
30
+ "title": title,
31
+ "aria-label": title,
32
+ "disabled": props.disabled,
33
+ "onClick": (e) => {
34
+ e.stopPropagation();
35
+ run(onClick);
36
+ }
37
+ }, [child]);
38
+ }
39
+ return () => {
40
+ const vp = props.viewport;
41
+ return createVNode("div", {
42
+ "class": "w-picture-viewer__toolbar",
43
+ "onClick": (e) => e.stopPropagation()
44
+ }, [
45
+ btn("rl", t("picture.rotateLeft"), () => vp?.rotateBy(-90), createVNode(SvgIcon, {
46
+ "name": "rotate-left",
47
+ "size": iconSize
48
+ }, null)),
49
+ btn("rr", t("picture.rotateRight"), () => vp?.rotateBy(90), createVNode(SvgIcon, {
50
+ "name": "rotate-right",
51
+ "size": iconSize
52
+ }, null)),
53
+ createVNode("span", {
54
+ "class": "w-picture-viewer__toolbar-divider",
55
+ "aria-hidden": "true"
56
+ }, null),
57
+ btn("fx", t("picture.flipX"), () => vp?.flip("x"), createVNode(SvgIcon, {
58
+ "name": "flip-x",
59
+ "size": iconSize
60
+ }, null)),
61
+ btn("fy", t("picture.flipY"), () => vp?.flip("y"), createVNode(SvgIcon, {
62
+ "name": "flip-y",
63
+ "size": iconSize
64
+ }, null)),
65
+ createVNode("span", {
66
+ "class": "w-picture-viewer__toolbar-divider",
67
+ "aria-hidden": "true"
68
+ }, null),
69
+ btn("zo", t("picture.zoomOut"), () => vp?.zoomBy(1 / PICTURE_VIEWPORT_ZOOM_STEP), createVNode(SvgIcon, {
70
+ "name": "zoom-out",
71
+ "size": iconSize
72
+ }, null)),
73
+ btn("zi", t("picture.zoomIn"), () => vp?.zoomBy(PICTURE_VIEWPORT_ZOOM_STEP), createVNode(SvgIcon, {
74
+ "name": "zoom-in",
75
+ "size": iconSize
76
+ }, null)),
77
+ createVNode("span", {
78
+ "class": "w-picture-viewer__toolbar-divider",
79
+ "aria-hidden": "true"
80
+ }, null),
81
+ btn("one", t("picture.oneToOne"), () => vp?.oneToOne(), createVNode("span", { "class": "w-picture-viewer__toolbar-label" }, [createTextVNode("1:1")])),
82
+ btn("fit", t("picture.fit"), () => vp?.fit(true), createVNode(SvgIcon, {
83
+ "name": "fit",
84
+ "size": iconSize
85
+ }, null)),
86
+ btn("reset", t("picture.reset"), () => vp?.reset(), createVNode(SvgIcon, {
87
+ "name": "reset",
88
+ "size": iconSize
89
+ }, null))
90
+ ]);
91
+ };
92
+ }
93
+ });
94
+ //#endregion
95
+ export { PictureToolbar as default };
96
+
97
+ //# sourceMappingURL=PictureToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PictureToolbar.js","names":["defineComponent","createVNode","_createVNode","createTextVNode","_createTextVNode","useUII18n","SvgIcon","PICTURE_VIEWPORT_ZOOM_STEP","PictureToolbar","name","props","viewport","type","Object","default","undefined","disabled","Boolean","setup","t","iconSize","run","fn","btn","key","title","onClick","child","e","stopPropagation","vp","rotateBy","flip","zoomBy","oneToOne","fit","reset"],"sources":["../../../components/picture/PictureToolbar.tsx"],"sourcesContent":["import { defineComponent, type PropType } from 'vue'\r\nimport { useUII18n } from '../../use/useUII18n'\r\nimport SvgIcon from '../svgIcon/index'\r\nimport { PICTURE_VIEWPORT_ZOOM_STEP } from '../../use/usePictureViewport'\r\nimport type { PictureViewportMethods } from './PictureViewport'\r\n\r\nexport type PictureToolbarProps = {\r\n viewport?: PictureViewportMethods | null\r\n disabled?: boolean\r\n}\r\n\r\nconst PictureToolbar = defineComponent({\r\n name: 'PictureToolbar',\r\n props: {\r\n viewport: {\r\n type: Object as PropType<PictureViewportMethods | null | undefined>,\r\n default: undefined,\r\n },\r\n disabled: { type: Boolean, default: false },\r\n },\r\n setup(props) {\r\n const { t } = useUII18n()\r\n const iconSize = 'var(--w-picture-toolbar-icon-size)'\r\n\r\n function run(fn?: () => void) {\r\n if (props.disabled) return\r\n fn?.()\r\n }\r\n\r\n function btn(\r\n key: string,\r\n title: string,\r\n onClick: () => void,\r\n child: unknown,\r\n ) {\r\n return (\r\n <button\r\n key={key}\r\n type=\"button\"\r\n class=\"w-picture-viewer__toolbar-btn\"\r\n title={title}\r\n aria-label={title}\r\n disabled={props.disabled}\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation()\r\n run(onClick)\r\n }}>\r\n {child}\r\n </button>\r\n )\r\n }\r\n\r\n return () => {\r\n const vp = props.viewport\r\n return (\r\n <div\r\n class=\"w-picture-viewer__toolbar\"\r\n onClick={(e: MouseEvent) => e.stopPropagation()}>\r\n {btn(\r\n 'rl',\r\n t('picture.rotateLeft'),\r\n () => vp?.rotateBy(-90),\r\n <SvgIcon name=\"rotate-left\" size={iconSize} />,\r\n )}\r\n {btn(\r\n 'rr',\r\n t('picture.rotateRight'),\r\n () => vp?.rotateBy(90),\r\n <SvgIcon name=\"rotate-right\" size={iconSize} />,\r\n )}\r\n <span class=\"w-picture-viewer__toolbar-divider\" aria-hidden=\"true\" />\r\n {btn(\r\n 'fx',\r\n t('picture.flipX'),\r\n () => vp?.flip('x'),\r\n <SvgIcon name=\"flip-x\" size={iconSize} />,\r\n )}\r\n {btn(\r\n 'fy',\r\n t('picture.flipY'),\r\n () => vp?.flip('y'),\r\n <SvgIcon name=\"flip-y\" size={iconSize} />,\r\n )}\r\n <span class=\"w-picture-viewer__toolbar-divider\" aria-hidden=\"true\" />\r\n {btn(\r\n 'zo',\r\n t('picture.zoomOut'),\r\n () => vp?.zoomBy(1 / PICTURE_VIEWPORT_ZOOM_STEP),\r\n <SvgIcon name=\"zoom-out\" size={iconSize} />,\r\n )}\r\n {btn(\r\n 'zi',\r\n t('picture.zoomIn'),\r\n () => vp?.zoomBy(PICTURE_VIEWPORT_ZOOM_STEP),\r\n <SvgIcon name=\"zoom-in\" size={iconSize} />,\r\n )}\r\n <span class=\"w-picture-viewer__toolbar-divider\" aria-hidden=\"true\" />\r\n {btn(\r\n 'one',\r\n t('picture.oneToOne'),\r\n () => vp?.oneToOne(),\r\n <span class=\"w-picture-viewer__toolbar-label\">1:1</span>,\r\n )}\r\n {btn(\r\n 'fit',\r\n t('picture.fit'),\r\n () => vp?.fit(true),\r\n <SvgIcon name=\"fit\" size={iconSize} />,\r\n )}\r\n {btn(\r\n 'reset',\r\n t('picture.reset'),\r\n () => vp?.reset(),\r\n <SvgIcon name=\"reset\" size={iconSize} />,\r\n )}\r\n </div>\r\n )\r\n }\r\n },\r\n})\r\n\r\nexport default PictureToolbar\r\n"],"mappings":";;;;;AAWA,IAAMQ,iBAAiBR,gCAAgB;CACrCS,MAAM;CACNC,OAAO;EACLC,UAAU;GACRC,MAAMC;GACNC,SAASC,KAAAA;EACX;EACAC,UAAU;GAAEJ,MAAMK;GAASH,SAAS;EAAM;CAC5C;CACAI,MAAMR,OAAO;EACX,MAAM,EAAES,MAAMd,UAAU;EACxB,MAAMe,WAAW;EAEjB,SAASC,IAAIC,IAAiB;GAC5B,IAAIZ,MAAMM,UAAU;GACpBM,KAAK;EACP;EAEA,SAASC,IACPC,KACAC,OACAC,SACAC,OACA;GACA,OAAAzB,YAAA,UAAA;IAAA,OAESsB;IAAG,QAAA;IAAA,SAAA;IAAA,SAGDC;IAAK,cACAA;IAAK,YACPf,MAAMM;IAAQ,YACdY,MAAkB;KAC1BA,EAAEC,gBAAgB;KAClBR,IAAIK,OAAO;IACb;GAAC,GAAA,CACAC,KAAK,CAAA;EAGZ;EAEA,aAAa;GACX,MAAMG,KAAKpB,MAAMC;GACjB,OAAAT,YAAA,OAAA;IAAA,SAAA;IAAA,YAGc0B,MAAkBA,EAAEC,gBAAgB;GAAC,GAAA;IAC9CN,IACC,MACAJ,EAAE,oBAAoB,SAChBW,IAAIC,SAAS,GAAG,GAAC7B,YAAAI,SAAA;KAAA,QAAA;KAAA,QACWc;IAAQ,GAAA,IAAA,CAC5C;IACCG,IACC,MACAJ,EAAE,qBAAqB,SACjBW,IAAIC,SAAS,EAAE,GAAC7B,YAAAI,SAAA;KAAA,QAAA;KAAA,QACac;IAAQ,GAAA,IAAA,CAC7C;IAAClB,YAAA,QAAA;KAAA,SAAA;KAAA,eAAA;IAAA,GAAA,IAAA;IAEAqB,IACC,MACAJ,EAAE,eAAe,SACXW,IAAIE,KAAK,GAAG,GAAC9B,YAAAI,SAAA;KAAA,QAAA;KAAA,QACUc;IAAQ,GAAA,IAAA,CACvC;IACCG,IACC,MACAJ,EAAE,eAAe,SACXW,IAAIE,KAAK,GAAG,GAAC9B,YAAAI,SAAA;KAAA,QAAA;KAAA,QACUc;IAAQ,GAAA,IAAA,CACvC;IAAClB,YAAA,QAAA;KAAA,SAAA;KAAA,eAAA;IAAA,GAAA,IAAA;IAEAqB,IACC,MACAJ,EAAE,iBAAiB,SACbW,IAAIG,OAAO,IAAI1B,0BAA0B,GAACL,YAAAI,SAAA;KAAA,QAAA;KAAA,QACjBc;IAAQ,GAAA,IAAA,CACzC;IACCG,IACC,MACAJ,EAAE,gBAAgB,SACZW,IAAIG,OAAO1B,0BAA0B,GAACL,YAAAI,SAAA;KAAA,QAAA;KAAA,QACdc;IAAQ,GAAA,IAAA,CACxC;IAAClB,YAAA,QAAA;KAAA,SAAA;KAAA,eAAA;IAAA,GAAA,IAAA;IAEAqB,IACC,OACAJ,EAAE,kBAAkB,SACdW,IAAII,SAAS,GAAChC,YAAA,QAAA,EAAA,SAAA,kCAAA,GAAA,CAAAE,gBAAA,KAAA,CAAA,CAAA,CAEtB;IACCmB,IACC,OACAJ,EAAE,aAAa,SACTW,IAAIK,IAAI,IAAI,GAACjC,YAAAI,SAAA;KAAA,QAAA;KAAA,QACOc;IAAQ,GAAA,IAAA,CACpC;IACCG,IACC,SACAJ,EAAE,eAAe,SACXW,IAAIM,MAAM,GAAClC,YAAAI,SAAA;KAAA,QAAA;KAAA,QACWc;IAAQ,GAAA,IAAA,CACtC;GAAC,CAAA;EAGP;CACF;AACF,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { PropType } from 'vue';
2
+ import { UsePictureViewport } from '../../use/usePictureViewport';
3
+ export type PictureViewportMethods = {
4
+ reset: () => void;
5
+ fit: (withTransition?: boolean) => void;
6
+ oneToOne: () => void;
7
+ zoomBy: (factor: number) => void;
8
+ rotateBy: (delta: number) => void;
9
+ flip: (axis: 'x' | 'y') => void;
10
+ getFlipEl: () => HTMLElement | undefined;
11
+ getApi: () => UsePictureViewport;
12
+ };
13
+ declare const PictureViewport: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
14
+ src: {
15
+ type: StringConstructor;
16
+ required: true;
17
+ };
18
+ /** FLIP 结束后才为 true */
19
+ interact: {
20
+ type: BooleanConstructor;
21
+ default: boolean;
22
+ };
23
+ /** 与 Picture 共享,切图时保留缩放/旋转/翻转 */
24
+ controller: {
25
+ type: PropType<UsePictureViewport>;
26
+ default: any;
27
+ };
28
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
29
+ src: {
30
+ type: StringConstructor;
31
+ required: true;
32
+ };
33
+ /** FLIP 结束后才为 true */
34
+ interact: {
35
+ type: BooleanConstructor;
36
+ default: boolean;
37
+ };
38
+ /** 与 Picture 共享,切图时保留缩放/旋转/翻转 */
39
+ controller: {
40
+ type: PropType<UsePictureViewport>;
41
+ default: any;
42
+ };
43
+ }>> & Readonly<{}>, {
44
+ interact: boolean;
45
+ controller: UsePictureViewport;
46
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
47
+ export default PictureViewport;
@@ -0,0 +1,203 @@
1
+ import useVisibleResize from "../../use/useVisibleResize.js";
2
+ import { PICTURE_VIEWPORT_ZOOM_STEP, createPictureViewport } from "../../use/usePictureViewport.js";
3
+ import { computed, createVNode, defineComponent, onBeforeUnmount, onMounted, ref, shallowRef, watch } from "vue";
4
+ //#region components/picture/PictureViewport.tsx
5
+ var PictureViewport = /* @__PURE__ */ defineComponent({
6
+ name: "PictureViewport",
7
+ props: {
8
+ src: {
9
+ type: String,
10
+ required: true
11
+ },
12
+ /** FLIP 结束后才为 true */
13
+ interact: {
14
+ type: Boolean,
15
+ default: false
16
+ },
17
+ /** 与 Picture 共享,切图时保留缩放/旋转/翻转 */
18
+ controller: {
19
+ type: Object,
20
+ default: void 0
21
+ }
22
+ },
23
+ setup(props, { expose }) {
24
+ const rootRef = ref();
25
+ const wrapRef = ref();
26
+ const imgRef = ref();
27
+ const transformCss = ref("translate(0px, 0px) rotate(0deg) scale(1, 1)");
28
+ const useTransition = ref(false);
29
+ const ready = ref(false);
30
+ const dragging = ref(false);
31
+ const canPan = ref(false);
32
+ const natural = shallowRef({
33
+ w: 0,
34
+ h: 0
35
+ });
36
+ const localApi = createPictureViewport();
37
+ const api = () => props.controller ?? localApi;
38
+ let dragLast = null;
39
+ let unsub;
40
+ const syncFromApi = () => {
41
+ const a = api();
42
+ useTransition.value = a.consumeTransition();
43
+ transformCss.value = a.getTransform();
44
+ canPan.value = a.canPan();
45
+ };
46
+ function bindSubscribe() {
47
+ unsub?.();
48
+ unsub = api().subscribe(syncFromApi);
49
+ syncFromApi();
50
+ }
51
+ bindSubscribe();
52
+ watch(() => props.controller, () => bindSubscribe());
53
+ function measureViewport() {
54
+ const el = rootRef.value;
55
+ if (!el) return;
56
+ const { width, height } = el.getBoundingClientRect();
57
+ if (width < 1 || height < 1) return;
58
+ api().setViewportSize(width, height);
59
+ syncFromApi();
60
+ }
61
+ useVisibleResize(rootRef, () => {
62
+ measureViewport();
63
+ });
64
+ function onImgLoad() {
65
+ const img = imgRef.value;
66
+ if (!img) return;
67
+ const w = img.naturalWidth;
68
+ const h = img.naturalHeight;
69
+ if (w < 1 || h < 1) return;
70
+ natural.value = {
71
+ w,
72
+ h
73
+ };
74
+ measureViewport();
75
+ api().setNaturalSize(w, h);
76
+ ready.value = true;
77
+ syncFromApi();
78
+ }
79
+ watch(() => props.src, (src, prev) => {
80
+ if (prev == null || prev === src) return;
81
+ ready.value = false;
82
+ api().prepareImageChange();
83
+ syncFromApi();
84
+ });
85
+ function pointerFromCenter(clientX, clientY) {
86
+ const el = rootRef.value;
87
+ if (!el) return {
88
+ x: 0,
89
+ y: 0
90
+ };
91
+ const r = el.getBoundingClientRect();
92
+ return {
93
+ x: clientX - (r.left + r.width / 2),
94
+ y: clientY - (r.top + r.height / 2)
95
+ };
96
+ }
97
+ function onWheel(e) {
98
+ if (!props.interact || !ready.value) return;
99
+ e.preventDefault();
100
+ e.stopPropagation();
101
+ const factor = e.deltaY < 0 ? PICTURE_VIEWPORT_ZOOM_STEP : 1 / PICTURE_VIEWPORT_ZOOM_STEP;
102
+ const p = pointerFromCenter(e.clientX, e.clientY);
103
+ api().zoomAt(p.x, p.y, factor);
104
+ }
105
+ function onPointerDown(e) {
106
+ if (!props.interact || !ready.value) return;
107
+ if (e.button !== 0) return;
108
+ if (!api().canPan()) return;
109
+ e.preventDefault();
110
+ dragging.value = true;
111
+ dragLast = {
112
+ x: e.clientX,
113
+ y: e.clientY
114
+ };
115
+ e.currentTarget.setPointerCapture?.(e.pointerId);
116
+ }
117
+ function onPointerMove(e) {
118
+ if (!dragging.value || !dragLast) return;
119
+ const dx = e.clientX - dragLast.x;
120
+ const dy = e.clientY - dragLast.y;
121
+ dragLast = {
122
+ x: e.clientX,
123
+ y: e.clientY
124
+ };
125
+ api().panBy(dx, dy);
126
+ }
127
+ function onPointerUp(e) {
128
+ if (!dragging.value) return;
129
+ dragging.value = false;
130
+ dragLast = null;
131
+ try {
132
+ e.currentTarget.releasePointerCapture?.(e.pointerId);
133
+ } catch {}
134
+ }
135
+ onMounted(() => {
136
+ measureViewport();
137
+ if (imgRef.value?.complete) onImgLoad();
138
+ });
139
+ onBeforeUnmount(() => {
140
+ unsub?.();
141
+ });
142
+ expose({
143
+ reset: () => {
144
+ api().reset();
145
+ syncFromApi();
146
+ },
147
+ fit: (withTransition = true) => {
148
+ api().fit(withTransition);
149
+ syncFromApi();
150
+ },
151
+ oneToOne: () => {
152
+ api().oneToOne(true);
153
+ syncFromApi();
154
+ },
155
+ zoomBy: (factor) => {
156
+ api().zoomBy(factor);
157
+ syncFromApi();
158
+ },
159
+ rotateBy: (delta) => {
160
+ api().rotateBy(delta);
161
+ syncFromApi();
162
+ },
163
+ flip: (axis) => {
164
+ api().flip(axis);
165
+ syncFromApi();
166
+ },
167
+ getFlipEl: () => wrapRef.value,
168
+ getApi: () => api()
169
+ });
170
+ const rootClass = computed(() => ["w-picture-viewer__viewport", {
171
+ "is-panning": props.interact && canPan.value,
172
+ "is-dragging": dragging.value
173
+ }]);
174
+ return () => createVNode("div", {
175
+ "ref": rootRef,
176
+ "class": rootClass.value,
177
+ "onWheel": onWheel,
178
+ "onPointerdown": onPointerDown,
179
+ "onPointermove": onPointerMove,
180
+ "onPointerup": onPointerUp,
181
+ "onPointercancel": onPointerUp
182
+ }, [createVNode("div", {
183
+ "ref": wrapRef,
184
+ "class": "w-picture-viewer__img-wrap"
185
+ }, [createVNode("div", {
186
+ "class": ["w-picture-viewer__transform", { "is-transition": useTransition.value }],
187
+ "style": ready.value ? { transform: transformCss.value } : void 0
188
+ }, [createVNode("img", {
189
+ "ref": imgRef,
190
+ "class": ["w-picture-viewer__img", { "is-fit-css": !ready.value }],
191
+ "src": props.src,
192
+ "alt": "",
193
+ "draggable": false,
194
+ "width": ready.value && natural.value.w ? natural.value.w : void 0,
195
+ "height": ready.value && natural.value.h ? natural.value.h : void 0,
196
+ "onLoad": onImgLoad
197
+ }, null)])])]);
198
+ }
199
+ });
200
+ //#endregion
201
+ export { PictureViewport as default };
202
+
203
+ //# sourceMappingURL=PictureViewport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PictureViewport.js","names":["computed","defineComponent","onBeforeUnmount","onMounted","ref","shallowRef","watch","createVNode","_createVNode","createPictureViewport","PICTURE_VIEWPORT_ZOOM_STEP","useVisibleResize","PictureViewport","name","props","src","type","String","required","interact","Boolean","default","controller","Object","undefined","setup","expose","rootRef","wrapRef","imgRef","transformCss","useTransition","ready","dragging","canPan","natural","w","h","localApi","api","dragLast","unsub","syncFromApi","a","value","consumeTransition","getTransform","bindSubscribe","subscribe","measureViewport","el","width","height","getBoundingClientRect","setViewportSize","onImgLoad","img","naturalWidth","naturalHeight","setNaturalSize","prev","prepareImageChange","pointerFromCenter","clientX","clientY","x","y","r","left","top","onWheel","e","preventDefault","stopPropagation","factor","deltaY","p","zoomAt","onPointerDown","button","currentTarget","setPointerCapture","pointerId","onPointerMove","dx","dy","panBy","onPointerUp","releasePointerCapture","complete","methods","reset","fit","withTransition","oneToOne","zoomBy","rotateBy","delta","flip","axis","getFlipEl","getApi","rootClass","transform"],"sources":["../../../components/picture/PictureViewport.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n onBeforeUnmount,\r\n onMounted,\r\n ref,\r\n shallowRef,\r\n watch,\r\n type PropType,\r\n} from 'vue'\r\nimport {\r\n createPictureViewport,\r\n PICTURE_VIEWPORT_ZOOM_STEP,\r\n type UsePictureViewport,\r\n} from '../../use/usePictureViewport'\r\nimport useVisibleResize from '../../use/useVisibleResize'\r\n\r\nexport type PictureViewportMethods = {\r\n reset: () => void\r\n fit: (withTransition?: boolean) => void\r\n oneToOne: () => void\r\n zoomBy: (factor: number) => void\r\n rotateBy: (delta: number) => void\r\n flip: (axis: 'x' | 'y') => void\r\n getFlipEl: () => HTMLElement | undefined\r\n getApi: () => UsePictureViewport\r\n}\r\n\r\nconst PictureViewport = defineComponent({\r\n name: 'PictureViewport',\r\n props: {\r\n src: { type: String, required: true },\r\n /** FLIP 结束后才为 true */\r\n interact: { type: Boolean, default: false },\r\n /** 与 Picture 共享,切图时保留缩放/旋转/翻转 */\r\n controller: {\r\n type: Object as PropType<UsePictureViewport>,\r\n default: undefined,\r\n },\r\n },\r\n setup(props, { expose }) {\r\n const rootRef = ref<HTMLElement>()\r\n const wrapRef = ref<HTMLElement>()\r\n const imgRef = ref<HTMLImageElement>()\r\n const transformCss = ref('translate(0px, 0px) rotate(0deg) scale(1, 1)')\r\n const useTransition = ref(false)\r\n const ready = ref(false)\r\n const dragging = ref(false)\r\n const canPan = ref(false)\r\n const natural = shallowRef({ w: 0, h: 0 })\r\n\r\n const localApi = createPictureViewport()\r\n const api = () => props.controller ?? localApi\r\n let dragLast: { x: number; y: number } | null = null\r\n let unsub: (() => void) | undefined\r\n\r\n const syncFromApi = () => {\r\n const a = api()\r\n useTransition.value = a.consumeTransition()\r\n transformCss.value = a.getTransform()\r\n canPan.value = a.canPan()\r\n }\r\n\r\n function bindSubscribe() {\r\n unsub?.()\r\n unsub = api().subscribe(syncFromApi)\r\n syncFromApi()\r\n }\r\n\r\n bindSubscribe()\r\n watch(\r\n () => props.controller,\r\n () => bindSubscribe(),\r\n )\r\n\r\n function measureViewport() {\r\n const el = rootRef.value\r\n if (!el) return\r\n const { width, height } = el.getBoundingClientRect()\r\n if (width < 1 || height < 1) return\r\n api().setViewportSize(width, height)\r\n syncFromApi()\r\n }\r\n\r\n useVisibleResize(rootRef, () => {\r\n measureViewport()\r\n })\r\n\r\n function onImgLoad() {\r\n const img = imgRef.value\r\n if (!img) return\r\n const w = img.naturalWidth\r\n const h = img.naturalHeight\r\n if (w < 1 || h < 1) return\r\n natural.value = { w, h }\r\n measureViewport()\r\n api().setNaturalSize(w, h)\r\n ready.value = true\r\n syncFromApi()\r\n }\r\n\r\n watch(\r\n () => props.src,\r\n (src, prev) => {\r\n if (prev == null || prev === src) return\r\n ready.value = false\r\n api().prepareImageChange()\r\n syncFromApi()\r\n },\r\n )\r\n\r\n function pointerFromCenter(clientX: number, clientY: number) {\r\n const el = rootRef.value\r\n if (!el) return { x: 0, y: 0 }\r\n const r = el.getBoundingClientRect()\r\n return {\r\n x: clientX - (r.left + r.width / 2),\r\n y: clientY - (r.top + r.height / 2),\r\n }\r\n }\r\n\r\n function onWheel(e: WheelEvent) {\r\n if (!props.interact || !ready.value) return\r\n e.preventDefault()\r\n e.stopPropagation()\r\n const factor =\r\n e.deltaY < 0\r\n ? PICTURE_VIEWPORT_ZOOM_STEP\r\n : 1 / PICTURE_VIEWPORT_ZOOM_STEP\r\n const p = pointerFromCenter(e.clientX, e.clientY)\r\n api().zoomAt(p.x, p.y, factor)\r\n }\r\n\r\n function onPointerDown(e: PointerEvent) {\r\n if (!props.interact || !ready.value) return\r\n if (e.button !== 0) return\r\n if (!api().canPan()) return\r\n e.preventDefault()\r\n dragging.value = true\r\n dragLast = { x: e.clientX, y: e.clientY }\r\n ;(e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId)\r\n }\r\n\r\n function onPointerMove(e: PointerEvent) {\r\n if (!dragging.value || !dragLast) return\r\n const dx = e.clientX - dragLast.x\r\n const dy = e.clientY - dragLast.y\r\n dragLast = { x: e.clientX, y: e.clientY }\r\n api().panBy(dx, dy)\r\n }\r\n\r\n function onPointerUp(e: PointerEvent) {\r\n if (!dragging.value) return\r\n dragging.value = false\r\n dragLast = null\r\n try {\r\n ;(e.currentTarget as HTMLElement).releasePointerCapture?.(e.pointerId)\r\n } catch {\r\n /* ignore */\r\n }\r\n }\r\n\r\n onMounted(() => {\r\n measureViewport()\r\n if (imgRef.value?.complete) onImgLoad()\r\n })\r\n\r\n onBeforeUnmount(() => {\r\n unsub?.()\r\n })\r\n\r\n const methods: PictureViewportMethods = {\r\n reset: () => {\r\n api().reset()\r\n syncFromApi()\r\n },\r\n fit: (withTransition = true) => {\r\n api().fit(withTransition)\r\n syncFromApi()\r\n },\r\n oneToOne: () => {\r\n api().oneToOne(true)\r\n syncFromApi()\r\n },\r\n zoomBy: (factor) => {\r\n api().zoomBy(factor)\r\n syncFromApi()\r\n },\r\n rotateBy: (delta) => {\r\n api().rotateBy(delta)\r\n syncFromApi()\r\n },\r\n flip: (axis) => {\r\n api().flip(axis)\r\n syncFromApi()\r\n },\r\n getFlipEl: () => wrapRef.value,\r\n getApi: () => api(),\r\n }\r\n\r\n expose(methods)\r\n\r\n const rootClass = computed(() => [\r\n 'w-picture-viewer__viewport',\r\n {\r\n 'is-panning': props.interact && canPan.value,\r\n 'is-dragging': dragging.value,\r\n },\r\n ])\r\n\r\n return () => (\r\n <div\r\n ref={rootRef}\r\n class={rootClass.value}\r\n onWheel={onWheel}\r\n onPointerdown={onPointerDown}\r\n onPointermove={onPointerMove}\r\n onPointerup={onPointerUp}\r\n onPointercancel={onPointerUp}>\r\n <div ref={wrapRef} class=\"w-picture-viewer__img-wrap\">\r\n <div\r\n class={[\r\n 'w-picture-viewer__transform',\r\n { 'is-transition': useTransition.value },\r\n ]}\r\n style={\r\n ready.value ? { transform: transformCss.value } : undefined\r\n }>\r\n <img\r\n ref={imgRef}\r\n class={[\r\n 'w-picture-viewer__img',\r\n { 'is-fit-css': !ready.value },\r\n ]}\r\n src={props.src}\r\n alt=\"\"\r\n draggable={false}\r\n width={ready.value && natural.value.w ? natural.value.w : undefined}\r\n height={\r\n ready.value && natural.value.h ? natural.value.h : undefined\r\n }\r\n onLoad={onImgLoad}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n },\r\n})\r\n\r\nexport default PictureViewport\r\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 可通过 `app.use(UI, { components: { Picture: {...} } })` 配置的项。
3
+ * 不宜全局配置:images(实例资源列表)。
4
+ */
5
+ export type PictureGlobalConfig = Partial<{
6
+ /** 缩略图尺度核(px)→ `--w-prop-picture-size`,并桥接 Image */
7
+ size: number;
8
+ /** 透传 Image:true → 圆形;string → 自定义圆角 */
9
+ round: boolean | string;
10
+ }>;
11
+ export declare const PICTURE_FALLBACK: {
12
+ size: number | undefined;
13
+ round: boolean | string | undefined;
14
+ };
15
+ /** 规范化图片列表:支持逗号分隔字符串或数组 */
16
+ export declare function normalizePictureImages(images?: string | string[] | null): string[];
@@ -0,0 +1,16 @@
1
+ //#region components/picture/config.ts
2
+ var PICTURE_FALLBACK = {
3
+ size: void 0,
4
+ round: false
5
+ };
6
+ /** 规范化图片列表:支持逗号分隔字符串或数组 */
7
+ function normalizePictureImages(images) {
8
+ if (!images) return [];
9
+ if (typeof images === "string") return images.split(",").map((s) => s.trim()).filter(Boolean);
10
+ if (Array.isArray(images)) return images.filter((m) => typeof m === "string" && !!m);
11
+ return [];
12
+ }
13
+ //#endregion
14
+ export { PICTURE_FALLBACK, normalizePictureImages };
15
+
16
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","names":[],"sources":["../../../components/picture/config.ts"],"sourcesContent":["/**\r\n * 可通过 `app.use(UI, { components: { Picture: {...} } })` 配置的项。\r\n * 不宜全局配置:images(实例资源列表)。\r\n */\r\nexport type PictureGlobalConfig = Partial<{\r\n /** 缩略图尺度核(px)→ `--w-prop-picture-size`,并桥接 Image */\r\n size: number\r\n /** 透传 Image:true → 圆形;string → 自定义圆角 */\r\n round: boolean | string\r\n}>\r\n\r\nexport const PICTURE_FALLBACK = {\r\n size: undefined as number | undefined,\r\n round: false as boolean | string | undefined,\r\n}\r\n\r\n/** 规范化图片列表:支持逗号分隔字符串或数组 */\r\nexport function normalizePictureImages(\r\n images?: string | string[] | null,\r\n): string[] {\r\n if (!images) return []\r\n if (typeof images === 'string') {\r\n return images\r\n .split(',')\r\n .map((s) => s.trim())\r\n .filter(Boolean)\r\n }\r\n if (Array.isArray(images)) {\r\n return images.filter((m): m is string => typeof m === 'string' && !!m)\r\n }\r\n return []\r\n}\r\n"],"mappings":";AAWA,IAAa,mBAAmB;CAC9B,MAAM,KAAA;CACN,OAAO;AACT;;AAGA,SAAgB,uBACd,QACU;CACV,IAAI,CAAC,QAAQ,OAAO,CAAC;CACrB,IAAI,OAAO,WAAW,UACpB,OAAO,OACJ,MAAM,GAAG,CAAC,CACV,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC,CACpB,OAAO,OAAO;CAEnB,IAAI,MAAM,QAAQ,MAAM,GACtB,OAAO,OAAO,QAAQ,MAAmB,OAAO,MAAM,YAAY,CAAC,CAAC,CAAC;CAEvE,OAAO,CAAC;AACV"}
@@ -0,0 +1,5 @@
1
+ export { default } from './Picture';
2
+ export type * from './Picture';
3
+ export type * from './config';
4
+ export { PICTURE_FALLBACK, normalizePictureImages } from './config';
5
+ export { runPictureImgEnter, computePictureFlipTransform } from './pictureFlip';
@@ -0,0 +1,16 @@
1
+ /** 缩略图矩形 → 大图矩形的 FLIP(分轴缩放,避免收尾宽高比突变) */
2
+ export declare function computePictureFlipTransform(from: DOMRectReadOnly, to: DOMRectReadOnly): {
3
+ dx: number;
4
+ dy: number;
5
+ scaleX: number;
6
+ scaleY: number;
7
+ } | null;
8
+ export type PictureFlipEnterOptions = {
9
+ /** FLIP 结束(含取消/失败)后回调一次 */
10
+ onEnd?: () => void;
11
+ };
12
+ /**
13
+ * 将元素从 fromRect 视觉位置 FLIP 到当前布局(仅执行一次进场)。
14
+ * 优先 WAAPI,收尾更顺;返回清理函数。
15
+ */
16
+ export declare function runPictureImgEnter(el: HTMLElement, from: DOMRectReadOnly, options?: PictureFlipEnterOptions): () => void;
@@ -0,0 +1,103 @@
1
+ //#region components/picture/pictureFlip.ts
2
+ /** 缩略图矩形 → 大图矩形的 FLIP(分轴缩放,避免收尾宽高比突变) */
3
+ function computePictureFlipTransform(from, to) {
4
+ if (from.width < 1 || from.height < 1 || to.width < 1 || to.height < 1) return null;
5
+ const scaleX = from.width / to.width;
6
+ const scaleY = from.height / to.height;
7
+ return {
8
+ dx: from.left + from.width / 2 - (to.left + to.width / 2),
9
+ dy: from.top + from.height / 2 - (to.top + to.height / 2),
10
+ scaleX,
11
+ scaleY
12
+ };
13
+ }
14
+ function readCssTimeMs(raw, fallbackMs) {
15
+ const v = raw.trim();
16
+ if (!v) return fallbackMs;
17
+ if (v.endsWith("ms")) {
18
+ const n = Number.parseFloat(v);
19
+ return Number.isFinite(n) ? n : fallbackMs;
20
+ }
21
+ if (v.endsWith("s")) {
22
+ const n = Number.parseFloat(v);
23
+ return Number.isFinite(n) ? n * 1e3 : fallbackMs;
24
+ }
25
+ const n = Number.parseFloat(v);
26
+ return Number.isFinite(n) ? n : fallbackMs;
27
+ }
28
+ /**
29
+ * 将元素从 fromRect 视觉位置 FLIP 到当前布局(仅执行一次进场)。
30
+ * 优先 WAAPI,收尾更顺;返回清理函数。
31
+ */
32
+ function runPictureImgEnter(el, from, options) {
33
+ const flip = computePictureFlipTransform(from, el.getBoundingClientRect());
34
+ if (!flip) {
35
+ options?.onEnd?.();
36
+ return () => {};
37
+ }
38
+ const cs = getComputedStyle(el);
39
+ const durationMs = readCssTimeMs(cs.getPropertyValue("--w-picture-img-enter-duration"), 520);
40
+ const easing = cs.getPropertyValue("--w-picture-img-enter-ease").trim() || "cubic-bezier(0.33, 1, 0.68, 1)";
41
+ const fromTransform = `translate(${flip.dx}px, ${flip.dy}px) scale(${flip.scaleX}, ${flip.scaleY})`;
42
+ const toTransform = "translate(0px, 0px) scale(1, 1)";
43
+ let done = false;
44
+ let ended = false;
45
+ const emitEnd = () => {
46
+ if (ended) return;
47
+ ended = true;
48
+ options?.onEnd?.();
49
+ };
50
+ const finish = () => {
51
+ if (done) return;
52
+ done = true;
53
+ el.style.transition = "";
54
+ el.style.transform = "";
55
+ emitEnd();
56
+ };
57
+ if (typeof el.animate === "function") {
58
+ const anim = el.animate([{ transform: fromTransform }, { transform: toTransform }], {
59
+ duration: durationMs,
60
+ easing,
61
+ fill: "forwards"
62
+ });
63
+ anim.finished.then(() => {
64
+ try {
65
+ anim.commitStyles();
66
+ } catch {}
67
+ anim.cancel();
68
+ el.style.transform = "";
69
+ emitEnd();
70
+ }).catch(() => {
71
+ finish();
72
+ });
73
+ return () => {
74
+ anim.cancel();
75
+ finish();
76
+ };
77
+ }
78
+ el.style.transition = "none";
79
+ el.style.transform = fromTransform;
80
+ el.offsetWidth;
81
+ const onEnd = (e) => {
82
+ if (e.target !== el) return;
83
+ if (e.propertyName && e.propertyName !== "transform") return;
84
+ el.removeEventListener("transitionend", onEnd);
85
+ finish();
86
+ };
87
+ el.addEventListener("transitionend", onEnd);
88
+ el.style.transition = `transform ${durationMs}ms ${easing}`;
89
+ el.style.transform = toTransform;
90
+ const timer = window.setTimeout(() => {
91
+ el.removeEventListener("transitionend", onEnd);
92
+ finish();
93
+ }, durationMs + 80);
94
+ return () => {
95
+ window.clearTimeout(timer);
96
+ el.removeEventListener("transitionend", onEnd);
97
+ finish();
98
+ };
99
+ }
100
+ //#endregion
101
+ export { computePictureFlipTransform, runPictureImgEnter };
102
+
103
+ //# sourceMappingURL=pictureFlip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pictureFlip.js","names":[],"sources":["../../../components/picture/pictureFlip.ts"],"sourcesContent":["/** 缩略图矩形 → 大图矩形的 FLIP(分轴缩放,避免收尾宽高比突变) */\r\nexport function computePictureFlipTransform(\r\n from: DOMRectReadOnly,\r\n to: DOMRectReadOnly,\r\n): { dx: number; dy: number; scaleX: number; scaleY: number } | null {\r\n if (from.width < 1 || from.height < 1 || to.width < 1 || to.height < 1) {\r\n return null\r\n }\r\n const scaleX = from.width / to.width\r\n const scaleY = from.height / to.height\r\n const dx = from.left + from.width / 2 - (to.left + to.width / 2)\r\n const dy = from.top + from.height / 2 - (to.top + to.height / 2)\r\n return { dx, dy, scaleX, scaleY }\r\n}\r\n\r\nfunction readCssTimeMs(raw: string, fallbackMs: number): number {\r\n const v = raw.trim()\r\n if (!v) return fallbackMs\r\n if (v.endsWith('ms')) {\r\n const n = Number.parseFloat(v)\r\n return Number.isFinite(n) ? n : fallbackMs\r\n }\r\n if (v.endsWith('s')) {\r\n const n = Number.parseFloat(v)\r\n return Number.isFinite(n) ? n * 1000 : fallbackMs\r\n }\r\n const n = Number.parseFloat(v)\r\n return Number.isFinite(n) ? n : fallbackMs\r\n}\r\n\r\nexport type PictureFlipEnterOptions = {\r\n /** FLIP 结束(含取消/失败)后回调一次 */\r\n onEnd?: () => void\r\n}\r\n\r\n/**\r\n * 将元素从 fromRect 视觉位置 FLIP 到当前布局(仅执行一次进场)。\r\n * 优先 WAAPI,收尾更顺;返回清理函数。\r\n */\r\nexport function runPictureImgEnter(\r\n el: HTMLElement,\r\n from: DOMRectReadOnly,\r\n options?: PictureFlipEnterOptions,\r\n): () => void {\r\n const to = el.getBoundingClientRect()\r\n const flip = computePictureFlipTransform(from, to)\r\n if (!flip) {\r\n options?.onEnd?.()\r\n return () => {}\r\n }\r\n\r\n const cs = getComputedStyle(el)\r\n const durationMs = readCssTimeMs(\r\n cs.getPropertyValue('--w-picture-img-enter-duration'),\r\n 520,\r\n )\r\n const easing =\r\n cs.getPropertyValue('--w-picture-img-enter-ease').trim() ||\r\n 'cubic-bezier(0.33, 1, 0.68, 1)'\r\n\r\n const fromTransform = `translate(${flip.dx}px, ${flip.dy}px) scale(${flip.scaleX}, ${flip.scaleY})`\r\n const toTransform = 'translate(0px, 0px) scale(1, 1)'\r\n\r\n let done = false\r\n let ended = false\r\n const emitEnd = () => {\r\n if (ended) return\r\n ended = true\r\n options?.onEnd?.()\r\n }\r\n const finish = () => {\r\n if (done) return\r\n done = true\r\n // 动画已到 identity,只清内联,避免打断最后一帧\r\n el.style.transition = ''\r\n el.style.transform = ''\r\n emitEnd()\r\n }\r\n\r\n if (typeof el.animate === 'function') {\r\n const anim = el.animate(\r\n [{ transform: fromTransform }, { transform: toTransform }],\r\n {\r\n duration: durationMs,\r\n easing,\r\n fill: 'forwards',\r\n },\r\n )\r\n anim.finished\r\n .then(() => {\r\n try {\r\n anim.commitStyles()\r\n } catch {\r\n /* ignore */\r\n }\r\n anim.cancel()\r\n // commit 后已是终点;去掉内联 transform,回到 stylesheet\r\n el.style.transform = ''\r\n emitEnd()\r\n })\r\n .catch(() => {\r\n finish()\r\n })\r\n return () => {\r\n anim.cancel()\r\n finish()\r\n }\r\n }\r\n\r\n // fallback:CSS transition\r\n el.style.transition = 'none'\r\n el.style.transform = fromTransform\r\n void el.offsetWidth\r\n const onEnd = (e: TransitionEvent) => {\r\n if (e.target !== el) return\r\n if (e.propertyName && e.propertyName !== 'transform') return\r\n el.removeEventListener('transitionend', onEnd)\r\n finish()\r\n }\r\n el.addEventListener('transitionend', onEnd)\r\n el.style.transition = `transform ${durationMs}ms ${easing}`\r\n el.style.transform = toTransform\r\n const timer = window.setTimeout(() => {\r\n el.removeEventListener('transitionend', onEnd)\r\n finish()\r\n }, durationMs + 80)\r\n\r\n return () => {\r\n window.clearTimeout(timer)\r\n el.removeEventListener('transitionend', onEnd)\r\n finish()\r\n }\r\n}\r\n"],"mappings":"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"}