@element-plus/nightly 0.0.20220125 → 0.0.20220129

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 (373) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.css +1 -1
  3. package/dist/index.full.js +619 -514
  4. package/dist/index.full.min.js +11 -11
  5. package/dist/index.full.min.js.map +1 -1
  6. package/dist/index.full.min.mjs +11 -11
  7. package/dist/index.full.min.mjs.map +1 -1
  8. package/dist/index.full.mjs +619 -514
  9. package/dist/locale/af.js +1 -1
  10. package/dist/locale/af.min.js +1 -1
  11. package/dist/locale/af.min.mjs +1 -1
  12. package/dist/locale/af.mjs +1 -1
  13. package/dist/locale/ar.js +1 -1
  14. package/dist/locale/ar.min.js +1 -1
  15. package/dist/locale/ar.min.mjs +1 -1
  16. package/dist/locale/ar.mjs +1 -1
  17. package/dist/locale/bg.js +1 -1
  18. package/dist/locale/bg.min.js +1 -1
  19. package/dist/locale/bg.min.mjs +1 -1
  20. package/dist/locale/bg.mjs +1 -1
  21. package/dist/locale/bn.js +1 -1
  22. package/dist/locale/bn.min.js +1 -1
  23. package/dist/locale/bn.min.mjs +1 -1
  24. package/dist/locale/bn.mjs +1 -1
  25. package/dist/locale/ca.js +1 -1
  26. package/dist/locale/ca.min.js +1 -1
  27. package/dist/locale/ca.min.mjs +1 -1
  28. package/dist/locale/ca.mjs +1 -1
  29. package/dist/locale/cs.js +1 -1
  30. package/dist/locale/cs.min.js +1 -1
  31. package/dist/locale/cs.min.mjs +1 -1
  32. package/dist/locale/cs.mjs +1 -1
  33. package/dist/locale/da.js +1 -1
  34. package/dist/locale/da.min.js +1 -1
  35. package/dist/locale/da.min.mjs +1 -1
  36. package/dist/locale/da.mjs +1 -1
  37. package/dist/locale/de.js +1 -1
  38. package/dist/locale/de.min.js +1 -1
  39. package/dist/locale/de.min.mjs +1 -1
  40. package/dist/locale/de.mjs +1 -1
  41. package/dist/locale/el.js +1 -1
  42. package/dist/locale/el.min.js +1 -1
  43. package/dist/locale/el.min.mjs +1 -1
  44. package/dist/locale/el.mjs +1 -1
  45. package/dist/locale/en.js +1 -1
  46. package/dist/locale/en.min.js +1 -1
  47. package/dist/locale/en.min.mjs +1 -1
  48. package/dist/locale/en.mjs +1 -1
  49. package/dist/locale/eo.js +1 -1
  50. package/dist/locale/eo.min.js +1 -1
  51. package/dist/locale/eo.min.mjs +1 -1
  52. package/dist/locale/eo.mjs +1 -1
  53. package/dist/locale/es.js +1 -1
  54. package/dist/locale/es.min.js +1 -1
  55. package/dist/locale/es.min.mjs +1 -1
  56. package/dist/locale/es.mjs +1 -1
  57. package/dist/locale/et.js +1 -1
  58. package/dist/locale/et.min.js +1 -1
  59. package/dist/locale/et.min.mjs +1 -1
  60. package/dist/locale/et.mjs +1 -1
  61. package/dist/locale/eu.js +1 -1
  62. package/dist/locale/eu.min.js +1 -1
  63. package/dist/locale/eu.min.mjs +1 -1
  64. package/dist/locale/eu.mjs +1 -1
  65. package/dist/locale/fa.js +1 -1
  66. package/dist/locale/fa.min.js +1 -1
  67. package/dist/locale/fa.min.mjs +1 -1
  68. package/dist/locale/fa.mjs +1 -1
  69. package/dist/locale/fi.js +1 -1
  70. package/dist/locale/fi.min.js +1 -1
  71. package/dist/locale/fi.min.mjs +1 -1
  72. package/dist/locale/fi.mjs +1 -1
  73. package/dist/locale/fr.js +1 -1
  74. package/dist/locale/fr.min.js +1 -1
  75. package/dist/locale/fr.min.mjs +1 -1
  76. package/dist/locale/fr.mjs +1 -1
  77. package/dist/locale/he.js +1 -1
  78. package/dist/locale/he.min.js +1 -1
  79. package/dist/locale/he.min.mjs +1 -1
  80. package/dist/locale/he.mjs +1 -1
  81. package/dist/locale/hr.js +1 -1
  82. package/dist/locale/hr.min.js +1 -1
  83. package/dist/locale/hr.min.mjs +1 -1
  84. package/dist/locale/hr.mjs +1 -1
  85. package/dist/locale/hu.js +1 -1
  86. package/dist/locale/hu.min.js +1 -1
  87. package/dist/locale/hu.min.mjs +1 -1
  88. package/dist/locale/hu.mjs +1 -1
  89. package/dist/locale/hy-am.js +1 -1
  90. package/dist/locale/hy-am.min.js +1 -1
  91. package/dist/locale/hy-am.min.mjs +1 -1
  92. package/dist/locale/hy-am.mjs +1 -1
  93. package/dist/locale/id.js +1 -1
  94. package/dist/locale/id.min.js +1 -1
  95. package/dist/locale/id.min.mjs +1 -1
  96. package/dist/locale/id.mjs +1 -1
  97. package/dist/locale/it.js +1 -1
  98. package/dist/locale/it.min.js +1 -1
  99. package/dist/locale/it.min.mjs +1 -1
  100. package/dist/locale/it.mjs +1 -1
  101. package/dist/locale/ja.js +1 -1
  102. package/dist/locale/ja.min.js +1 -1
  103. package/dist/locale/ja.min.mjs +1 -1
  104. package/dist/locale/ja.mjs +1 -1
  105. package/dist/locale/kk.js +1 -1
  106. package/dist/locale/kk.min.js +1 -1
  107. package/dist/locale/kk.min.mjs +1 -1
  108. package/dist/locale/kk.mjs +1 -1
  109. package/dist/locale/km.js +1 -1
  110. package/dist/locale/km.min.js +1 -1
  111. package/dist/locale/km.min.mjs +1 -1
  112. package/dist/locale/km.mjs +1 -1
  113. package/dist/locale/ko.js +1 -1
  114. package/dist/locale/ko.min.js +1 -1
  115. package/dist/locale/ko.min.mjs +1 -1
  116. package/dist/locale/ko.mjs +1 -1
  117. package/dist/locale/ku.js +1 -1
  118. package/dist/locale/ku.min.js +1 -1
  119. package/dist/locale/ku.min.mjs +1 -1
  120. package/dist/locale/ku.mjs +1 -1
  121. package/dist/locale/ky.js +1 -1
  122. package/dist/locale/ky.min.js +1 -1
  123. package/dist/locale/ky.min.mjs +1 -1
  124. package/dist/locale/ky.mjs +1 -1
  125. package/dist/locale/lt.js +1 -1
  126. package/dist/locale/lt.min.js +1 -1
  127. package/dist/locale/lt.min.mjs +1 -1
  128. package/dist/locale/lt.mjs +1 -1
  129. package/dist/locale/lv.js +1 -1
  130. package/dist/locale/lv.min.js +1 -1
  131. package/dist/locale/lv.min.mjs +1 -1
  132. package/dist/locale/lv.mjs +1 -1
  133. package/dist/locale/mn.js +1 -1
  134. package/dist/locale/mn.min.js +1 -1
  135. package/dist/locale/mn.min.mjs +1 -1
  136. package/dist/locale/mn.mjs +1 -1
  137. package/dist/locale/nb-no.js +1 -1
  138. package/dist/locale/nb-no.min.js +1 -1
  139. package/dist/locale/nb-no.min.mjs +1 -1
  140. package/dist/locale/nb-no.mjs +1 -1
  141. package/dist/locale/nl.js +1 -1
  142. package/dist/locale/nl.min.js +1 -1
  143. package/dist/locale/nl.min.mjs +1 -1
  144. package/dist/locale/nl.mjs +1 -1
  145. package/dist/locale/pa.js +1 -1
  146. package/dist/locale/pa.min.js +1 -1
  147. package/dist/locale/pa.min.mjs +1 -1
  148. package/dist/locale/pa.mjs +1 -1
  149. package/dist/locale/pl.js +1 -1
  150. package/dist/locale/pl.min.js +1 -1
  151. package/dist/locale/pl.min.mjs +1 -1
  152. package/dist/locale/pl.mjs +1 -1
  153. package/dist/locale/pt-br.js +1 -1
  154. package/dist/locale/pt-br.min.js +1 -1
  155. package/dist/locale/pt-br.min.mjs +1 -1
  156. package/dist/locale/pt-br.mjs +1 -1
  157. package/dist/locale/pt.js +1 -1
  158. package/dist/locale/pt.min.js +1 -1
  159. package/dist/locale/pt.min.mjs +1 -1
  160. package/dist/locale/pt.mjs +1 -1
  161. package/dist/locale/ro.js +1 -1
  162. package/dist/locale/ro.min.js +1 -1
  163. package/dist/locale/ro.min.mjs +1 -1
  164. package/dist/locale/ro.mjs +1 -1
  165. package/dist/locale/ru.js +1 -1
  166. package/dist/locale/ru.min.js +1 -1
  167. package/dist/locale/ru.min.mjs +1 -1
  168. package/dist/locale/ru.mjs +1 -1
  169. package/dist/locale/sk.js +1 -1
  170. package/dist/locale/sk.min.js +1 -1
  171. package/dist/locale/sk.min.mjs +1 -1
  172. package/dist/locale/sk.mjs +1 -1
  173. package/dist/locale/sl.js +1 -1
  174. package/dist/locale/sl.min.js +1 -1
  175. package/dist/locale/sl.min.mjs +1 -1
  176. package/dist/locale/sl.mjs +1 -1
  177. package/dist/locale/sr.js +1 -1
  178. package/dist/locale/sr.min.js +1 -1
  179. package/dist/locale/sr.min.mjs +1 -1
  180. package/dist/locale/sr.mjs +1 -1
  181. package/dist/locale/sv.js +1 -1
  182. package/dist/locale/sv.min.js +1 -1
  183. package/dist/locale/sv.min.mjs +1 -1
  184. package/dist/locale/sv.mjs +1 -1
  185. package/dist/locale/ta.js +1 -1
  186. package/dist/locale/ta.min.js +1 -1
  187. package/dist/locale/ta.min.mjs +1 -1
  188. package/dist/locale/ta.mjs +1 -1
  189. package/dist/locale/th.js +1 -1
  190. package/dist/locale/th.min.js +1 -1
  191. package/dist/locale/th.min.mjs +1 -1
  192. package/dist/locale/th.mjs +1 -1
  193. package/dist/locale/tk.js +1 -1
  194. package/dist/locale/tk.min.js +1 -1
  195. package/dist/locale/tk.min.mjs +1 -1
  196. package/dist/locale/tk.mjs +1 -1
  197. package/dist/locale/tr.js +1 -1
  198. package/dist/locale/tr.min.js +1 -1
  199. package/dist/locale/tr.min.mjs +1 -1
  200. package/dist/locale/tr.mjs +1 -1
  201. package/dist/locale/ug-cn.js +1 -1
  202. package/dist/locale/ug-cn.min.js +1 -1
  203. package/dist/locale/ug-cn.min.mjs +1 -1
  204. package/dist/locale/ug-cn.mjs +1 -1
  205. package/dist/locale/uk.js +1 -1
  206. package/dist/locale/uk.min.js +1 -1
  207. package/dist/locale/uk.min.mjs +1 -1
  208. package/dist/locale/uk.mjs +1 -1
  209. package/dist/locale/uz-uz.js +1 -1
  210. package/dist/locale/uz-uz.min.js +1 -1
  211. package/dist/locale/uz-uz.min.mjs +1 -1
  212. package/dist/locale/uz-uz.mjs +1 -1
  213. package/dist/locale/vi.js +1 -1
  214. package/dist/locale/vi.min.js +1 -1
  215. package/dist/locale/vi.min.mjs +1 -1
  216. package/dist/locale/vi.mjs +1 -1
  217. package/dist/locale/zh-cn.js +1 -1
  218. package/dist/locale/zh-cn.min.js +1 -1
  219. package/dist/locale/zh-cn.min.mjs +1 -1
  220. package/dist/locale/zh-cn.mjs +1 -1
  221. package/dist/locale/zh-tw.js +1 -1
  222. package/dist/locale/zh-tw.min.js +1 -1
  223. package/dist/locale/zh-tw.min.mjs +1 -1
  224. package/dist/locale/zh-tw.mjs +1 -1
  225. package/es/components/avatar/index.d.ts +1 -1
  226. package/es/components/avatar/src/avatar.vue.d.ts +1 -1
  227. package/es/components/avatar/src/avatar2.mjs +3 -3
  228. package/es/components/avatar/src/avatar2.mjs.map +1 -1
  229. package/es/components/cascader/index.d.ts +4 -0
  230. package/es/components/cascader/src/index.vue.d.ts +2 -0
  231. package/es/components/drawer/index.d.ts +11 -0
  232. package/es/components/drawer/src/drawer.vue.d.ts +11 -0
  233. package/es/components/drawer/src/drawer2.mjs +33 -29
  234. package/es/components/drawer/src/drawer2.mjs.map +1 -1
  235. package/es/components/empty/src/img-empty.mjs +13 -13
  236. package/es/components/empty/src/img-empty.mjs.map +1 -1
  237. package/es/components/image/src/image2.mjs +3 -4
  238. package/es/components/image/src/image2.mjs.map +1 -1
  239. package/es/components/image-viewer/index.d.ts +1 -1
  240. package/es/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
  241. package/es/components/image-viewer/src/image-viewer2.mjs +34 -23
  242. package/es/components/image-viewer/src/image-viewer2.mjs.map +1 -1
  243. package/es/components/index.mjs +1 -1
  244. package/es/components/pagination/src/components/jumper.mjs +6 -3
  245. package/es/components/pagination/src/components/jumper.mjs.map +1 -1
  246. package/es/components/pagination/src/components/sizes.mjs +7 -3
  247. package/es/components/pagination/src/components/sizes.mjs.map +1 -1
  248. package/es/components/pagination/src/components/sizes.vue.d.ts +3 -0
  249. package/es/components/pagination/src/components/total.mjs +10 -4
  250. package/es/components/pagination/src/components/total.mjs.map +1 -1
  251. package/es/components/pagination/src/components/total.vue.d.ts +1 -0
  252. package/es/components/pagination/src/pagination.mjs +12 -1
  253. package/es/components/pagination/src/pagination.mjs.map +1 -1
  254. package/es/components/rate/index.d.ts +8 -8
  255. package/es/components/rate/src/rate.d.ts +4 -4
  256. package/es/components/rate/src/rate.mjs +8 -4
  257. package/es/components/rate/src/rate.mjs.map +1 -1
  258. package/es/components/rate/src/rate.vue.d.ts +8 -8
  259. package/es/components/scrollbar/index.d.ts +2 -1
  260. package/es/components/scrollbar/index.mjs +1 -1
  261. package/es/components/scrollbar/index.mjs.map +1 -1
  262. package/es/components/scrollbar/src/bar.d.ts +5 -5
  263. package/es/components/scrollbar/src/bar.mjs +18 -6
  264. package/es/components/scrollbar/src/bar.mjs.map +1 -1
  265. package/es/components/scrollbar/src/bar.vue.d.ts +18 -37
  266. package/es/components/scrollbar/src/bar2.mjs +34 -118
  267. package/es/components/scrollbar/src/bar2.mjs.map +1 -1
  268. package/es/components/scrollbar/src/scrollbar.vue.d.ts +1 -0
  269. package/es/components/scrollbar/src/scrollbar2.mjs +14 -20
  270. package/es/components/scrollbar/src/scrollbar2.mjs.map +1 -1
  271. package/es/components/scrollbar/src/thumb.d.ts +9 -0
  272. package/es/components/scrollbar/src/thumb.mjs +15 -0
  273. package/es/components/scrollbar/src/thumb.mjs.map +1 -0
  274. package/es/components/scrollbar/src/thumb.vue.d.ts +43 -0
  275. package/es/components/scrollbar/src/thumb2.mjs +135 -0
  276. package/es/components/scrollbar/src/thumb2.mjs.map +1 -0
  277. package/es/components/select/src/select.mjs +3 -0
  278. package/es/components/select/src/select.mjs.map +1 -1
  279. package/es/components/table/src/table-body/index.mjs +1 -1
  280. package/es/components/table/src/table-body/index.mjs.map +1 -1
  281. package/es/components/table/src/table.mjs +3 -2
  282. package/es/components/table/src/table.mjs.map +1 -1
  283. package/es/components/tag/index.d.ts +12 -1
  284. package/es/components/tag/src/tag.vue.d.ts +12 -1
  285. package/es/components/tag/src/tag2.mjs +23 -18
  286. package/es/components/tag/src/tag2.mjs.map +1 -1
  287. package/es/index.mjs +1 -1
  288. package/es/version.d.ts +1 -1
  289. package/es/version.mjs +1 -1
  290. package/es/version.mjs.map +1 -1
  291. package/lib/components/avatar/index.d.ts +1 -1
  292. package/lib/components/avatar/src/avatar.vue.d.ts +1 -1
  293. package/lib/components/avatar/src/avatar2.js +3 -3
  294. package/lib/components/avatar/src/avatar2.js.map +1 -1
  295. package/lib/components/cascader/index.d.ts +4 -0
  296. package/lib/components/cascader/src/index.vue.d.ts +2 -0
  297. package/lib/components/drawer/index.d.ts +11 -0
  298. package/lib/components/drawer/src/drawer.vue.d.ts +11 -0
  299. package/lib/components/drawer/src/drawer2.js +33 -29
  300. package/lib/components/drawer/src/drawer2.js.map +1 -1
  301. package/lib/components/empty/src/img-empty.js +13 -13
  302. package/lib/components/empty/src/img-empty.js.map +1 -1
  303. package/lib/components/image/src/image2.js +3 -4
  304. package/lib/components/image/src/image2.js.map +1 -1
  305. package/lib/components/image-viewer/index.d.ts +1 -1
  306. package/lib/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
  307. package/lib/components/image-viewer/src/image-viewer2.js +34 -23
  308. package/lib/components/image-viewer/src/image-viewer2.js.map +1 -1
  309. package/lib/components/index.js +2 -2
  310. package/lib/components/pagination/src/components/jumper.js +6 -3
  311. package/lib/components/pagination/src/components/jumper.js.map +1 -1
  312. package/lib/components/pagination/src/components/sizes.js +7 -3
  313. package/lib/components/pagination/src/components/sizes.js.map +1 -1
  314. package/lib/components/pagination/src/components/sizes.vue.d.ts +3 -0
  315. package/lib/components/pagination/src/components/total.js +10 -4
  316. package/lib/components/pagination/src/components/total.js.map +1 -1
  317. package/lib/components/pagination/src/components/total.vue.d.ts +1 -0
  318. package/lib/components/pagination/src/pagination.js +12 -1
  319. package/lib/components/pagination/src/pagination.js.map +1 -1
  320. package/lib/components/rate/index.d.ts +8 -8
  321. package/lib/components/rate/src/rate.d.ts +4 -4
  322. package/lib/components/rate/src/rate.js +8 -4
  323. package/lib/components/rate/src/rate.js.map +1 -1
  324. package/lib/components/rate/src/rate.vue.d.ts +8 -8
  325. package/lib/components/scrollbar/index.d.ts +2 -1
  326. package/lib/components/scrollbar/index.js +2 -2
  327. package/lib/components/scrollbar/index.js.map +1 -1
  328. package/lib/components/scrollbar/src/bar.d.ts +5 -5
  329. package/lib/components/scrollbar/src/bar.js +18 -6
  330. package/lib/components/scrollbar/src/bar.js.map +1 -1
  331. package/lib/components/scrollbar/src/bar.vue.d.ts +18 -37
  332. package/lib/components/scrollbar/src/bar2.js +33 -117
  333. package/lib/components/scrollbar/src/bar2.js.map +1 -1
  334. package/lib/components/scrollbar/src/scrollbar.vue.d.ts +1 -0
  335. package/lib/components/scrollbar/src/scrollbar2.js +13 -19
  336. package/lib/components/scrollbar/src/scrollbar2.js.map +1 -1
  337. package/lib/components/scrollbar/src/thumb.d.ts +9 -0
  338. package/lib/components/scrollbar/src/thumb.js +19 -0
  339. package/lib/components/scrollbar/src/thumb.js.map +1 -0
  340. package/lib/components/scrollbar/src/thumb.vue.d.ts +43 -0
  341. package/lib/components/scrollbar/src/thumb2.js +139 -0
  342. package/lib/components/scrollbar/src/thumb2.js.map +1 -0
  343. package/lib/components/select/src/select.js +3 -0
  344. package/lib/components/select/src/select.js.map +1 -1
  345. package/lib/components/table/src/table-body/index.js +1 -1
  346. package/lib/components/table/src/table-body/index.js.map +1 -1
  347. package/lib/components/table/src/table.js +3 -2
  348. package/lib/components/table/src/table.js.map +1 -1
  349. package/lib/components/tag/index.d.ts +12 -1
  350. package/lib/components/tag/src/tag.vue.d.ts +12 -1
  351. package/lib/components/tag/src/tag2.js +23 -18
  352. package/lib/components/tag/src/tag2.js.map +1 -1
  353. package/lib/index.js +2 -2
  354. package/lib/version.d.ts +1 -1
  355. package/lib/version.js +1 -1
  356. package/lib/version.js.map +1 -1
  357. package/package.json +3 -3
  358. package/tags.json +1 -1
  359. package/theme-chalk/el-breadcrumb.css +1 -1
  360. package/theme-chalk/el-empty.css +1 -1
  361. package/theme-chalk/el-image-viewer.css +1 -1
  362. package/theme-chalk/el-pagination.css +1 -1
  363. package/theme-chalk/el-rate.css +1 -1
  364. package/theme-chalk/el-select.css +1 -1
  365. package/theme-chalk/el-table.css +1 -1
  366. package/theme-chalk/index.css +1 -1
  367. package/theme-chalk/src/breadcrumb.scss +2 -0
  368. package/theme-chalk/src/common/var.scss +18 -4
  369. package/theme-chalk/src/image-viewer.scss +1 -0
  370. package/theme-chalk/src/pagination.scss +73 -56
  371. package/theme-chalk/src/select.scss +3 -3
  372. package/theme-chalk/src/table.scss +0 -12
  373. package/web-types.json +1 -1
@@ -8,9 +8,11 @@ var index = require('../../overlay/index.js');
8
8
  require('../../dialog/index.js');
9
9
  var index$1 = require('../../icon/index.js');
10
10
  require('../../../directives/index.js');
11
+ require('../../../hooks/index.js');
11
12
  var drawer = require('./drawer.js');
12
13
  var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
13
14
  var index$2 = require('../../../directives/trap-focus/index.js');
15
+ var index$3 = require('../../../hooks/use-namespace/index.js');
14
16
  var useDialog = require('../../dialog/src/use-dialog.js');
15
17
 
16
18
  const _sfc_main = vue.defineComponent({
@@ -27,32 +29,22 @@ const _sfc_main = vue.defineComponent({
27
29
  emits: drawer.drawerEmits,
28
30
  setup(props, ctx) {
29
31
  const drawerRef = vue.ref();
32
+ const ns = index$3.useNamespace("drawer");
30
33
  const isHorizontal = vue.computed(() => props.direction === "rtl" || props.direction === "ltr");
31
34
  const drawerSize = vue.computed(() => typeof props.size === "number" ? `${props.size}px` : props.size);
32
35
  return {
33
36
  ...useDialog.useDialog(props, ctx, drawerRef),
34
37
  drawerRef,
35
38
  isHorizontal,
36
- drawerSize
39
+ drawerSize,
40
+ ns
37
41
  };
38
42
  }
39
43
  });
40
- const _hoisted_1 = ["aria-label"];
41
- const _hoisted_2 = {
42
- key: 0,
43
- id: "el-drawer__title",
44
- class: "el-drawer__header"
45
- };
44
+ const _hoisted_1 = ["aria-labelledby", "aria-label"];
45
+ const _hoisted_2 = ["id"];
46
46
  const _hoisted_3 = ["title"];
47
47
  const _hoisted_4 = ["aria-label"];
48
- const _hoisted_5 = {
49
- key: 1,
50
- class: "el-drawer__body"
51
- };
52
- const _hoisted_6 = {
53
- key: 2,
54
- class: "el-drawer__footer"
55
- };
56
48
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
57
49
  const _component_close = vue.resolveComponent("close");
58
50
  const _component_el_icon = vue.resolveComponent("el-icon");
@@ -63,7 +55,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
63
55
  disabled: !_ctx.appendToBody
64
56
  }, [
65
57
  vue.createVNode(vue.Transition, {
66
- name: "el-drawer-fade",
58
+ name: _ctx.ns.b("fade"),
67
59
  onAfterEnter: _ctx.afterEnter,
68
60
  onAfterLeave: _ctx.afterLeave,
69
61
  onBeforeLeave: _ctx.beforeLeave
@@ -79,15 +71,19 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
79
71
  vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
80
72
  ref: "drawerRef",
81
73
  "aria-modal": "true",
82
- "aria-labelledby": "el-drawer__title",
74
+ "aria-labelledby": _ctx.ns.e("title"),
83
75
  "aria-label": _ctx.title,
84
- class: vue.normalizeClass(["el-drawer", _ctx.direction, _ctx.visible && "open", _ctx.customClass]),
76
+ class: vue.normalizeClass([_ctx.ns.b(), _ctx.direction, _ctx.visible && "open", _ctx.customClass]),
85
77
  style: vue.normalizeStyle(_ctx.isHorizontal ? "width: " + _ctx.drawerSize : "height: " + _ctx.drawerSize),
86
78
  role: "dialog",
87
79
  onClick: _cache[1] || (_cache[1] = vue.withModifiers(() => {
88
80
  }, ["stop"]))
89
81
  }, [
90
- _ctx.withHeader ? (vue.openBlock(), vue.createElementBlock("header", _hoisted_2, [
82
+ _ctx.withHeader ? (vue.openBlock(), vue.createElementBlock("header", {
83
+ key: 0,
84
+ id: _ctx.ns.e("title"),
85
+ class: vue.normalizeClass(_ctx.ns.e("header"))
86
+ }, [
91
87
  vue.renderSlot(_ctx.$slots, "title", {}, () => [
92
88
  vue.createElementVNode("span", {
93
89
  role: "heading",
@@ -97,24 +93,32 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
97
93
  _ctx.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
98
94
  key: 0,
99
95
  "aria-label": "close " + (_ctx.title || "drawer"),
100
- class: "el-drawer__close-btn",
96
+ class: vue.normalizeClass(_ctx.ns.e("close-btn")),
101
97
  type: "button",
102
98
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleClose && _ctx.handleClose(...args))
103
99
  }, [
104
- vue.createVNode(_component_el_icon, { class: "el-drawer__close" }, {
100
+ vue.createVNode(_component_el_icon, {
101
+ class: vue.normalizeClass(_ctx.ns.e("close"))
102
+ }, {
105
103
  default: vue.withCtx(() => [
106
104
  vue.createVNode(_component_close)
107
105
  ]),
108
106
  _: 1
109
- })
110
- ], 8, _hoisted_4)) : vue.createCommentVNode("v-if", true)
111
- ])) : vue.createCommentVNode("v-if", true),
112
- _ctx.rendered ? (vue.openBlock(), vue.createElementBlock("section", _hoisted_5, [
107
+ }, 8, ["class"])
108
+ ], 10, _hoisted_4)) : vue.createCommentVNode("v-if", true)
109
+ ], 10, _hoisted_2)) : vue.createCommentVNode("v-if", true),
110
+ _ctx.rendered ? (vue.openBlock(), vue.createElementBlock("section", {
111
+ key: 1,
112
+ class: vue.normalizeClass(_ctx.ns.e("body"))
113
+ }, [
113
114
  vue.renderSlot(_ctx.$slots, "default")
114
- ])) : vue.createCommentVNode("v-if", true),
115
- _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
115
+ ], 2)) : vue.createCommentVNode("v-if", true),
116
+ _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", {
117
+ key: 2,
118
+ class: vue.normalizeClass(_ctx.ns.e("footer"))
119
+ }, [
116
120
  vue.renderSlot(_ctx.$slots, "footer")
117
- ])) : vue.createCommentVNode("v-if", true)
121
+ ], 2)) : vue.createCommentVNode("v-if", true)
118
122
  ], 14, _hoisted_1)), [
119
123
  [_directive_trap_focus]
120
124
  ])
@@ -125,7 +129,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
125
129
  ])
126
130
  ]),
127
131
  _: 3
128
- }, 8, ["onAfterEnter", "onAfterLeave", "onBeforeLeave"])
132
+ }, 8, ["name", "onAfterEnter", "onAfterLeave", "onBeforeLeave"])
129
133
  ], 8, ["disabled"]);
130
134
  }
131
135
  var Drawer = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render]]);
@@ -1 +1 @@
1
- {"version":3,"file":"drawer2.js","sources":["../../../../../../packages/components/drawer/src/drawer.vue"],"sourcesContent":["<template>\n <teleport to=\"body\" :disabled=\"!appendToBody\">\n <transition\n name=\"el-drawer-fade\"\n @after-enter=\"afterEnter\"\n @after-leave=\"afterLeave\"\n @before-leave=\"beforeLeave\"\n >\n <el-overlay\n v-show=\"visible\"\n :mask=\"modal\"\n :overlay-class=\"modalClass\"\n :z-index=\"zIndex\"\n @click=\"onModalClick\"\n >\n <div\n ref=\"drawerRef\"\n v-trap-focus\n aria-modal=\"true\"\n aria-labelledby=\"el-drawer__title\"\n :aria-label=\"title\"\n :class=\"['el-drawer', direction, visible && 'open', customClass]\"\n :style=\"\n isHorizontal ? 'width: ' + drawerSize : 'height: ' + drawerSize\n \"\n role=\"dialog\"\n @click.stop\n >\n <header\n v-if=\"withHeader\"\n id=\"el-drawer__title\"\n class=\"el-drawer__header\"\n >\n <slot name=\"title\">\n <span role=\"heading\" :title=\"title\">\n {{ title }}\n </span>\n </slot>\n <button\n v-if=\"showClose\"\n :aria-label=\"'close ' + (title || 'drawer')\"\n class=\"el-drawer__close-btn\"\n type=\"button\"\n @click=\"handleClose\"\n >\n <el-icon class=\"el-drawer__close\"><close /></el-icon>\n </button>\n </header>\n <template v-if=\"rendered\">\n <section class=\"el-drawer__body\">\n <slot></slot>\n </section>\n </template>\n <div v-if=\"$slots.footer\" class=\"el-drawer__footer\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </el-overlay>\n </transition>\n </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref } from 'vue'\nimport { Close } from '@element-plus/icons-vue'\n\nimport { ElOverlay } from '@element-plus/components/overlay'\nimport { useDialog } from '@element-plus/components/dialog'\nimport ElIcon from '@element-plus/components/icon'\nimport { TrapFocus } from '@element-plus/directives'\nimport { drawerProps, drawerEmits } from './drawer'\n\nexport default defineComponent({\n name: 'ElDrawer',\n components: {\n ElOverlay,\n ElIcon,\n Close,\n },\n directives: {\n TrapFocus,\n },\n props: drawerProps,\n emits: drawerEmits,\n\n setup(props, ctx) {\n const drawerRef = ref<HTMLElement>()\n\n const isHorizontal = computed(\n () => props.direction === 'rtl' || props.direction === 'ltr'\n )\n const drawerSize = computed(() =>\n typeof props.size === 'number' ? `${props.size}px` : props.size\n )\n\n return {\n ...useDialog(props, ctx, drawerRef),\n drawerRef,\n isHorizontal,\n drawerSize,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ElOverlay","ElIcon","Close","TrapFocus","drawerProps","drawerEmits","ref","computed","useDialog","_openBlock","_createBlock","_Transition","_createVNode","_createElementBlock","_normalizeClass","_withCtx","_createCommentVNode"],"mappings":";;;;;;;;;;;;;;;AAwEA,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,eACVC;AAAA,YACAC;AAAA,WACAC;AAAA;AAAA,EAEF,YAAY;AAAA,eACVC;AAAA;AAAA,EAEF,OAAOC;AAAA,EACP,OAAOC;AAAA,EAEP,MAAM,OAAO,KAAK;AAChB,UAAM,YAAYC;AAElB,UAAM,eAAeC,aACnB,MAAM,MAAM,cAAc,SAAS,MAAM,cAAc;AAEzD,UAAM,aAAaA,aAAS,MAC1B,OAAO,MAAM,SAAS,WAAW,GAAG,MAAM,WAAW,MAAM;AAG7D,WAAO;AAAA,SACFC,oBAAU,OAAO,KAAK;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;EArEM,KAAG;AAAA,EACH;AAAA;;;;;EAkBS,KAAK;AAAA;;;EAIU,KAAK;AAAA;;;;;;;SApD1BC,iBAAMC;AAAA,IAAE;AAAA;KACnB;AAAA,oBACOC,gBAAgB;AAAA,MACpB;AAAA,MACA,cAAa;AAAA,MACb,cAAY,KAAE;AAAA;;2BAEf;AAAA,2BAESC,gBAAK;AAAA,UACX;AAAA,UACA,iBAAS,KAAM;AAAA,UACf,WAAO;AAAA;;;iDAGSC;AAAA,cAEf;AAAA,cACA;AAAA,cACC,mBAAY;AAAA,cACZ,cAAK;AAAA,cACL,OAAKC;AAAA,cAAe;cAIpB;AAAA;;eAGO;AAAA,kDAQCD;AAAA,+BAHL,aAEO;AAAA,yCAFa;AAAA,oBAAE,MAAK;AAAA;;;;kBAM1B;AAAA,kBACD,cAAM,iBAAsB;AAAA,kBAC5B,OAAK;AAAA,kBACJ;AAAA;mBAED;AAAA,sDAA2C;AAAA,6BAATE,YAAS;AAAA;;;;;oBAG/BC,uBAAQ;AAAA,gDAEPH;AAAA;oBAGNG,uBAAa;AAAA,qDACKH;AAAA;;;;;;;cA7CvB,SAAO;AAAA;;;;;;;;;;;"}
1
+ {"version":3,"file":"drawer2.js","sources":["../../../../../../packages/components/drawer/src/drawer.vue"],"sourcesContent":["<template>\n <teleport to=\"body\" :disabled=\"!appendToBody\">\n <transition\n :name=\"ns.b('fade')\"\n @after-enter=\"afterEnter\"\n @after-leave=\"afterLeave\"\n @before-leave=\"beforeLeave\"\n >\n <el-overlay\n v-show=\"visible\"\n :mask=\"modal\"\n :overlay-class=\"modalClass\"\n :z-index=\"zIndex\"\n @click=\"onModalClick\"\n >\n <div\n ref=\"drawerRef\"\n v-trap-focus\n aria-modal=\"true\"\n :aria-labelledby=\"ns.e('title')\"\n :aria-label=\"title\"\n :class=\"[ns.b(), direction, visible && 'open', customClass]\"\n :style=\"\n isHorizontal ? 'width: ' + drawerSize : 'height: ' + drawerSize\n \"\n role=\"dialog\"\n @click.stop\n >\n <header v-if=\"withHeader\" :id=\"ns.e('title')\" :class=\"ns.e('header')\">\n <slot name=\"title\">\n <span role=\"heading\" :title=\"title\">\n {{ title }}\n </span>\n </slot>\n <button\n v-if=\"showClose\"\n :aria-label=\"'close ' + (title || 'drawer')\"\n :class=\"ns.e('close-btn')\"\n type=\"button\"\n @click=\"handleClose\"\n >\n <el-icon :class=\"ns.e('close')\"><close /></el-icon>\n </button>\n </header>\n <template v-if=\"rendered\">\n <section :class=\"ns.e('body')\">\n <slot></slot>\n </section>\n </template>\n <div v-if=\"$slots.footer\" :class=\"ns.e('footer')\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </el-overlay>\n </transition>\n </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref } from 'vue'\nimport { Close } from '@element-plus/icons-vue'\n\nimport { ElOverlay } from '@element-plus/components/overlay'\nimport { useDialog } from '@element-plus/components/dialog'\nimport ElIcon from '@element-plus/components/icon'\nimport { TrapFocus } from '@element-plus/directives'\nimport { useNamespace } from '@element-plus/hooks'\nimport { drawerProps, drawerEmits } from './drawer'\n\nexport default defineComponent({\n name: 'ElDrawer',\n components: {\n ElOverlay,\n ElIcon,\n Close,\n },\n directives: {\n TrapFocus,\n },\n props: drawerProps,\n emits: drawerEmits,\n\n setup(props, ctx) {\n const drawerRef = ref<HTMLElement>()\n const ns = useNamespace('drawer')\n\n const isHorizontal = computed(\n () => props.direction === 'rtl' || props.direction === 'ltr'\n )\n const drawerSize = computed(() =>\n typeof props.size === 'number' ? `${props.size}px` : props.size\n )\n\n return {\n ...useDialog(props, ctx, drawerRef),\n drawerRef,\n isHorizontal,\n drawerSize,\n ns,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ElOverlay","ElIcon","Close","TrapFocus","drawerProps","drawerEmits","ref","useNamespace","computed","useDialog","_openBlock","_createBlock","_Transition","_createVNode","_createElementBlock","_normalizeClass","_withCtx","_createCommentVNode"],"mappings":";;;;;;;;;;;;;;;;;AAqEA,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,eACVC;AAAA,YACAC;AAAA,WACAC;AAAA;AAAA,EAEF,YAAY;AAAA,eACVC;AAAA;AAAA,EAEF,OAAOC;AAAA,EACP,OAAOC;AAAA,EAEP,MAAM,OAAO,KAAK;AAChB,UAAM,YAAYC;AAClB,UAAM,KAAKC,qBAAa;AAExB,UAAM,eAAeC,aACnB,MAAM,MAAM,cAAc,SAAS,MAAM,cAAc;AAEzD,UAAM,aAAaA,aAAS,MAC1B,OAAO,MAAM,SAAS,WAAW,GAAG,MAAM,WAAW,MAAM;AAG7D,WAAO;AAAA,SACFC,oBAAU,OAAO,KAAK;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;;;;;;SAjGSC,iBAAMC;AAAA,IAAE;AAAA;KACnB;AAAA,oBACSC,gBAAI;AAAA,MACV,cAAa;AAAA,MACb,cAAa;AAAA,MACb,cAAY,KAAE;AAAA;;2BAEf;AAAA,2BAESC,gBAAK;AAAA,UACX;AAAA,UACA,iBAAS,KAAM;AAAA,UACf,WAAO;AAAA;;;iDAGSC;AAAA,cAEf;AAAA,cACC;AAAA,cACA,mBAAY,KAAK;AAAA,cACjB,cAAK;AAAA,cACL,OAAKC;AAAA,cAAe;cAIpB;AAAA;;eAEa;AAAA;gBAAa,KAAI;AAAA,gBAAgB,SAAK;AAAA;iBAClD;AAAA,+BACE,aAEO;AAAA,yCAFa;AAAA,oBAAE,MAAK;AAAA;;;;kBAM1B;AAAA,kBACA,cAAK,iBAAK,SAAC;AAAA,kBACZ,OAAKA,mBAAQ;AAAA,kBACZ;AAAA;mBAED;AAAA,kCAAe,oBAAK;AAAA;;6BAAYC,YAAS;AAAA;;;;;oCAG7BC,uBAAQ;AAAA;gBACZ,KAAK;AAAA;iBACb;AAAA;uBAGOA,uBAAa;AAAA;gBAAG,KAAK;AAAA;iBAC9B;AAAA;;;;;;;cAzCI,SAAO;AAAA;;;;;;;;;;;"}
@@ -22,11 +22,11 @@ const _hoisted_1 = {
22
22
  };
23
23
  const _hoisted_2 = ["id"];
24
24
  const _hoisted_3 = /* @__PURE__ */ vue.createElementVNode("stop", {
25
- "stop-color": "#FCFCFD",
25
+ "stop-color": "var(--el-empty-fill-color-1)",
26
26
  offset: "0%"
27
27
  }, null, -1);
28
28
  const _hoisted_4 = /* @__PURE__ */ vue.createElementVNode("stop", {
29
- "stop-color": "#EEEFF3",
29
+ "stop-color": "var(--el-empty-fill-color-4)",
30
30
  offset: "100%"
31
31
  }, null, -1);
32
32
  const _hoisted_5 = [
@@ -35,11 +35,11 @@ const _hoisted_5 = [
35
35
  ];
36
36
  const _hoisted_6 = ["id"];
37
37
  const _hoisted_7 = /* @__PURE__ */ vue.createElementVNode("stop", {
38
- "stop-color": "#FCFCFD",
38
+ "stop-color": "var(--el-empty-fill-color-1)",
39
39
  offset: "0%"
40
40
  }, null, -1);
41
41
  const _hoisted_8 = /* @__PURE__ */ vue.createElementVNode("stop", {
42
- "stop-color": "#E9EBEF",
42
+ "stop-color": "var(--el-empty-fill-color-6)",
43
43
  offset: "100%"
44
44
  }, null, -1);
45
45
  const _hoisted_9 = [
@@ -65,11 +65,11 @@ const _hoisted_13 = {
65
65
  const _hoisted_14 = /* @__PURE__ */ vue.createElementVNode("path", {
66
66
  id: "Oval-Copy-2",
67
67
  d: "M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",
68
- fill: "#F7F8FC"
68
+ fill: "var(--el-empty-fill-color-3)"
69
69
  }, null, -1);
70
70
  const _hoisted_15 = /* @__PURE__ */ vue.createElementVNode("polygon", {
71
71
  id: "Rectangle-Copy-14",
72
- fill: "#E5E7E9",
72
+ fill: "var(--el-empty-fill-color-7)",
73
73
  transform: "translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",
74
74
  points: "13 58 53 58 42 45 2 45"
75
75
  }, null, -1);
@@ -79,19 +79,19 @@ const _hoisted_16 = {
79
79
  };
80
80
  const _hoisted_17 = /* @__PURE__ */ vue.createElementVNode("polygon", {
81
81
  id: "Rectangle-Copy-10",
82
- fill: "#E5E7E9",
82
+ fill: "var(--el-empty-fill-color-7)",
83
83
  transform: "translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",
84
84
  points: "2.84078316e-14 3 18 3 23 7 5 7"
85
85
  }, null, -1);
86
86
  const _hoisted_18 = /* @__PURE__ */ vue.createElementVNode("polygon", {
87
87
  id: "Rectangle-Copy-11",
88
- fill: "#EDEEF2",
88
+ fill: "var(--el-empty-fill-color-5)",
89
89
  points: "-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"
90
90
  }, null, -1);
91
91
  const _hoisted_19 = ["fill"];
92
92
  const _hoisted_20 = /* @__PURE__ */ vue.createElementVNode("polygon", {
93
93
  id: "Rectangle-Copy-13",
94
- fill: "#F8F9FB",
94
+ fill: "var(--el-empty-fill-color-2)",
95
95
  transform: "translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",
96
96
  points: "24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"
97
97
  }, null, -1);
@@ -106,7 +106,7 @@ const _hoisted_25 = ["xlink:href"];
106
106
  const _hoisted_26 = ["mask"];
107
107
  const _hoisted_27 = /* @__PURE__ */ vue.createElementVNode("polygon", {
108
108
  id: "Rectangle-Copy-18",
109
- fill: "#F8F9FB",
109
+ fill: "var(--el-empty-fill-color-2)",
110
110
  transform: "translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",
111
111
  points: "62 45 79 45 70 58 53 58"
112
112
  }, null, -1);
@@ -165,7 +165,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
165
165
  vue.createElementVNode("g", _hoisted_22, [
166
166
  vue.createElementVNode("mask", {
167
167
  id: `mask-4-${_ctx.id}`,
168
- fill: "white"
168
+ fill: "var(--el-empty-fill-color-0)"
169
169
  }, [
170
170
  vue.createElementVNode("use", {
171
171
  "xlink:href": `#path-3-${_ctx.id}`
@@ -173,13 +173,13 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
173
173
  ], 8, _hoisted_23),
174
174
  vue.createElementVNode("use", {
175
175
  id: "Mask",
176
- fill: "#E0E3E9",
176
+ fill: "var(--el-empty-fill-color-8)",
177
177
  transform: "translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ",
178
178
  "xlink:href": `#path-3-${_ctx.id}`
179
179
  }, null, 8, _hoisted_25),
180
180
  vue.createElementVNode("polygon", {
181
181
  id: "Rectangle-Copy",
182
- fill: "#D5D7DE",
182
+ fill: "var(--el-empty-fill-color-9)",
183
183
  mask: `url(#mask-4-${_ctx.id})`,
184
184
  transform: "translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",
185
185
  points: "7 0 24 0 20 18 -1.70530257e-13 16"
@@ -1 +1 @@
1
- {"version":3,"file":"img-empty.js","sources":["../../../../../../packages/components/empty/src/img-empty.vue"],"sourcesContent":["<template>\n <svg\n viewBox=\"0 0 79 86\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <defs>\n <linearGradient\n :id=\"`linearGradient-1-${id}`\"\n x1=\"38.8503086%\"\n y1=\"0%\"\n x2=\"61.1496914%\"\n y2=\"100%\"\n >\n <stop stop-color=\"#FCFCFD\" offset=\"0%\" />\n <stop stop-color=\"#EEEFF3\" offset=\"100%\" />\n </linearGradient>\n <linearGradient\n :id=\"`linearGradient-2-${id}`\"\n x1=\"0%\"\n y1=\"9.5%\"\n x2=\"100%\"\n y2=\"90.5%\"\n >\n <stop stop-color=\"#FCFCFD\" offset=\"0%\" />\n <stop stop-color=\"#E9EBEF\" offset=\"100%\" />\n </linearGradient>\n <rect :id=\"`path-3-${id}`\" x=\"0\" y=\"0\" width=\"17\" height=\"36\" />\n </defs>\n <g\n id=\"Illustrations\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g id=\"B-type\" transform=\"translate(-1268.000000, -535.000000)\">\n <g id=\"Group-2\" transform=\"translate(1268.000000, 535.000000)\">\n <path\n id=\"Oval-Copy-2\"\n d=\"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z\"\n fill=\"#F7F8FC\"\n />\n <polygon\n id=\"Rectangle-Copy-14\"\n fill=\"#E5E7E9\"\n transform=\"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) \"\n points=\"13 58 53 58 42 45 2 45\"\n />\n <g\n id=\"Group-Copy\"\n transform=\"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)\"\n >\n <polygon\n id=\"Rectangle-Copy-10\"\n fill=\"#E5E7E9\"\n transform=\"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) \"\n points=\"2.84078316e-14 3 18 3 23 7 5 7\"\n />\n <polygon\n id=\"Rectangle-Copy-11\"\n fill=\"#EDEEF2\"\n points=\"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43\"\n />\n <rect\n id=\"Rectangle-Copy-12\"\n :fill=\"`url(#linearGradient-1-${id})`\"\n transform=\"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) \"\n x=\"38\"\n y=\"7\"\n width=\"17\"\n height=\"36\"\n />\n <polygon\n id=\"Rectangle-Copy-13\"\n fill=\"#F8F9FB\"\n transform=\"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) \"\n points=\"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12\"\n />\n </g>\n <rect\n id=\"Rectangle-Copy-15\"\n :fill=\"`url(#linearGradient-2-${id})`\"\n x=\"13\"\n y=\"45\"\n width=\"40\"\n height=\"36\"\n />\n <g id=\"Rectangle-Copy-17\" transform=\"translate(53.000000, 45.000000)\">\n <mask :id=\"`mask-4-${id}`\" fill=\"white\">\n <use :xlink:href=\"`#path-3-${id}`\" />\n </mask>\n <use\n id=\"Mask\"\n fill=\"#E0E3E9\"\n transform=\"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) \"\n :xlink:href=\"`#path-3-${id}`\"\n />\n <polygon\n id=\"Rectangle-Copy\"\n fill=\"#D5D7DE\"\n :mask=\"`url(#mask-4-${id})`\"\n transform=\"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) \"\n points=\"7 0 24 0 20 18 -1.70530257e-13 16\"\n />\n </g>\n <polygon\n id=\"Rectangle-Copy-18\"\n fill=\"#F8F9FB\"\n transform=\"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) \"\n points=\"62 45 79 45 70 58 53 58\"\n />\n </g>\n </g>\n </g>\n </svg>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nlet id = 0\nexport default defineComponent({\n name: 'ImgEmpty',\n setup() {\n return {\n id: ++id,\n }\n },\n})\n</script>\n"],"names":["defineComponent","_openBlock","_createElementBlock"],"mappings":";;;;;;;AA0HA,IAAI,KAAK;AACT,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,QAAQ;AACN,WAAO;AAAA,MACL,IAAI,EAAE;AAAA;AAAA;AAAA;MA7HR,aAAQ;AAAA,EACR,SAAQ;AAAA,EACR,SAAM;AAAA,EACN;AAAA;;;MAUU;AAAoB,EAAC,cAAW;AAAA;;MAChC;AAAoB,EAAC,cAAa;AAAA;;MADxC,aAAyC;AAAA,EACzC;AAAA;;;MASM;AAAoB,EAAC,cAAW;AAAA;;MAChC;AAAoB,EAAC,cAAa;AAAA;;MADxC,aAAyC;AAAA,EACzC;AAAA;;;MAKC;AAAA,EACH;AAAA,EACA;AAAA,EACA,gBAAW;AAAA,EACX;AAAA;;MAEM,cAAQ;AAAA,EAAC;AAAA;;MACP,cAAS;AAAA,EAAC;AAAA;;MAET;AAAa,EAChB,IAAE;AAAA,EACF;AAAA;;MAGG;AAAmB,EACtB,IAAI;AAAA,EACJ;AAAA,EACA,WAAO;AAAA;;MAGJ,cAAY;AAAA,EACf;AAAA;;MAGK;AAAmB,EACtB,IAAI;AAAA,EACJ;AAAA,EACA,WAAO;AAAA;;MAGJ;AAAmB,EACtB,IAAI;AAAA,EACJ,MAAM;AAAA;;;MAYH;AAAmB,EACtB,IAAI;AAAA,EACJ;AAAA,EACA,WAAO;AAAA;;;MAWL;AAAA,EAAoB;AAAA;;;;;;MAmBrB;AAAmB,EACtB,IAAI;AAAA,EACJ;AAAA,EACA,WAAO;AAAA;;2BA9GjB,yCAmHM;SA7GJC,iBAsBOC;AAAA,2BArBL,QASiB;AAAA,6BARZ,kBAAwB;AAAA,QAC3B,IAAG,oBAAa;AAAA,QAChB,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA;SAKL,eASiB;AAAA,6BARZ,kBAAwB;AAAA,QAC3B,IAAG,oBAAI;AAAA,QACP,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA;SAKL,eAAgE;AAAA,6BAA3C,QAAE;AAAA,QAAI,IAAE,UAAG;AAAA,QAAC,GAAE;AAAA,QAAI;AAAA,QAAW,OAAM;AAAA;;;2BASxD,KA6EI;AAAA,6BA5EF,KA2EI;AAAA,+BAtEA;AAAA,UACF;AAAA,UAMA;AAAA,iCASI;AAAA,YACF;AAAA,YAKA;AAAA,mCACK,QAAmB;AAAA,cACrB,IAAI;AAAA,cACL,+BAAU;AAAA,cACV,WAAM;AAAA,cACN,GAAE;AAAA,cACF;AAAA,cACA,OAAM;AAAA;eAER,SAKE;AAAA;;iCAGC,QAAmB;AAAA,YACrB,IAAI;AAAA,YACL,MAAE,yBAAI;AAAA,YACN,GAAE;AAAA,YACF;AAAA,YACA,OAAM;AAAA;aAER,SAiBI;AAAA,iCAhBF,KAEO;AAAA,mCAFc,QAAE;AAAA,cAAI,IAAI,UAAQ;AAAA;eACrC;AAAA,qCAAgB,OAAa;AAAA;;eAE/B;AAAA,mCACW;AAAA,cACT,IAAI;AAAA,cACJ;AAAA,cACC;AAAA;eAEH,SAME;AAAA,mCALG,WAAgB;AAAA,cACnB,IAAI;AAAA,cACH,MAAI;AAAA,cACL,qBAAU;AAAA,cACV,WAAO;AAAA;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"img-empty.js","sources":["../../../../../../packages/components/empty/src/img-empty.vue"],"sourcesContent":["<template>\n <svg\n viewBox=\"0 0 79 86\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <defs>\n <linearGradient\n :id=\"`linearGradient-1-${id}`\"\n x1=\"38.8503086%\"\n y1=\"0%\"\n x2=\"61.1496914%\"\n y2=\"100%\"\n >\n <stop stop-color=\"var(--el-empty-fill-color-1)\" offset=\"0%\" />\n <stop stop-color=\"var(--el-empty-fill-color-4)\" offset=\"100%\" />\n </linearGradient>\n <linearGradient\n :id=\"`linearGradient-2-${id}`\"\n x1=\"0%\"\n y1=\"9.5%\"\n x2=\"100%\"\n y2=\"90.5%\"\n >\n <stop stop-color=\"var(--el-empty-fill-color-1)\" offset=\"0%\" />\n <stop stop-color=\"var(--el-empty-fill-color-6)\" offset=\"100%\" />\n </linearGradient>\n <rect :id=\"`path-3-${id}`\" x=\"0\" y=\"0\" width=\"17\" height=\"36\" />\n </defs>\n <g\n id=\"Illustrations\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g id=\"B-type\" transform=\"translate(-1268.000000, -535.000000)\">\n <g id=\"Group-2\" transform=\"translate(1268.000000, 535.000000)\">\n <path\n id=\"Oval-Copy-2\"\n d=\"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z\"\n fill=\"var(--el-empty-fill-color-3)\"\n />\n <polygon\n id=\"Rectangle-Copy-14\"\n fill=\"var(--el-empty-fill-color-7)\"\n transform=\"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) \"\n points=\"13 58 53 58 42 45 2 45\"\n />\n <g\n id=\"Group-Copy\"\n transform=\"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)\"\n >\n <polygon\n id=\"Rectangle-Copy-10\"\n fill=\"var(--el-empty-fill-color-7)\"\n transform=\"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) \"\n points=\"2.84078316e-14 3 18 3 23 7 5 7\"\n />\n <polygon\n id=\"Rectangle-Copy-11\"\n fill=\"var(--el-empty-fill-color-5)\"\n points=\"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43\"\n />\n <rect\n id=\"Rectangle-Copy-12\"\n :fill=\"`url(#linearGradient-1-${id})`\"\n transform=\"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) \"\n x=\"38\"\n y=\"7\"\n width=\"17\"\n height=\"36\"\n />\n <polygon\n id=\"Rectangle-Copy-13\"\n fill=\"var(--el-empty-fill-color-2)\"\n transform=\"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) \"\n points=\"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12\"\n />\n </g>\n <rect\n id=\"Rectangle-Copy-15\"\n :fill=\"`url(#linearGradient-2-${id})`\"\n x=\"13\"\n y=\"45\"\n width=\"40\"\n height=\"36\"\n />\n <g id=\"Rectangle-Copy-17\" transform=\"translate(53.000000, 45.000000)\">\n <mask :id=\"`mask-4-${id}`\" fill=\"var(--el-empty-fill-color-0)\">\n <use :xlink:href=\"`#path-3-${id}`\" />\n </mask>\n <use\n id=\"Mask\"\n fill=\"var(--el-empty-fill-color-8)\"\n transform=\"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) \"\n :xlink:href=\"`#path-3-${id}`\"\n />\n <polygon\n id=\"Rectangle-Copy\"\n fill=\"var(--el-empty-fill-color-9)\"\n :mask=\"`url(#mask-4-${id})`\"\n transform=\"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) \"\n points=\"7 0 24 0 20 18 -1.70530257e-13 16\"\n />\n </g>\n <polygon\n id=\"Rectangle-Copy-18\"\n fill=\"var(--el-empty-fill-color-2)\"\n transform=\"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) \"\n points=\"62 45 79 45 70 58 53 58\"\n />\n </g>\n </g>\n </g>\n </svg>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\n\nlet id = 0\nexport default defineComponent({\n name: 'ImgEmpty',\n setup() {\n return {\n id: ++id,\n }\n },\n})\n</script>\n"],"names":["defineComponent","_openBlock","_createElementBlock"],"mappings":";;;;;;;AA0HA,IAAI,KAAK;AACT,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,QAAQ;AACN,WAAO;AAAA,MACL,IAAI,EAAE;AAAA;AAAA;AAAA;MA7HR,aAAQ;AAAA,EACR,SAAQ;AAAA,EACR,SAAM;AAAA,EACN;AAAA;;;MAUU,oDAAyC;AAAA,EAAC,cAAW;AAAA;;MACrD,oDAAyC;AAAA,EAAC,cAAa;AAAA;;MAD7D,aAA8D;AAAA,EAC9D;AAAA;;;MASM,oDAAyC;AAAA,EAAC,cAAW;AAAA;;MACrD,oDAAyC;AAAA,EAAC,cAAa;AAAA;;MAD7D,aAA8D;AAAA,EAC9D;AAAA;;;MAKC;AAAA,EACH;AAAA,EACA;AAAA,EACA,gBAAW;AAAA,EACX;AAAA;;MAEM,cAAQ;AAAA,EAAC;AAAA;;MACP,cAAS;AAAA,EAAC;AAAA;;MAET;AAAa,EAChB,IAAE;AAAA,EACF;AAAA;;MAGG;AAAmB,EACtB,IAAI;AAAA,EACJ;AAAA,EACA,WAAO;AAAA;;MAGJ,cAAY;AAAA,EACf;AAAA;;MAGK;AAAmB,EACtB,IAAI;AAAA,EACJ;AAAA,EACA,WAAO;AAAA;;MAGJ;AAAmB,EACtB,IAAI;AAAA,EACJ,MAAM;AAAA;;;MAYH;AAAmB,EACtB,IAAI;AAAA,EACJ;AAAA,EACA,WAAO;AAAA;;;MAWL;AAAA,EAAoB;AAAA;;;;;;MAmBrB;AAAmB,EACtB,IAAI;AAAA,EACJ;AAAA,EACA,WAAO;AAAA;;2BA9GjB,yCAmHM;SA7GJC,iBAsBOC;AAAA,2BArBL,QASiB;AAAA,6BARZ,kBAAwB;AAAA,QAC3B,IAAG,oBAAa;AAAA,QAChB,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA;SAKL,eASiB;AAAA,6BARZ,kBAAwB;AAAA,QAC3B,IAAG,oBAAI;AAAA,QACP,IAAG;AAAA,QACH,IAAG;AAAA,QACH,IAAG;AAAA;SAKL,eAAgE;AAAA,6BAA3C,QAAE;AAAA,QAAI,IAAE,UAAG;AAAA,QAAC,GAAE;AAAA,QAAI;AAAA,QAAW,OAAM;AAAA;;;2BASxD,KA6EI;AAAA,6BA5EF,KA2EI;AAAA,+BAtEA;AAAA,UACF;AAAA,UAMA;AAAA,iCASI;AAAA,YACF;AAAA,YAKA;AAAA,mCACK,QAAmB;AAAA,cACrB,IAAI;AAAA,cACL,+BAAU;AAAA,cACV,WAAM;AAAA,cACN,GAAE;AAAA,cACF;AAAA,cACA,OAAM;AAAA;eAER,SAKE;AAAA;;iCAGC,QAAmB;AAAA,YACrB,IAAI;AAAA,YACL,MAAE,yBAAI;AAAA,YACN,GAAE;AAAA,YACF;AAAA,YACA,OAAM;AAAA;aAER,SAiBI;AAAA,iCAhBF,KAEO;AAAA,mCAFc,QAAE;AAAA,cAAI,IAAI,UAAC;AAAA;eAC9B;AAAA,qCAAgB,OAAa;AAAA;;eAE/B;AAAA,mCACW;AAAA,cACT,IAAI;AAAA,cACJ;AAAA,cACC;AAAA;eAEH,SAME;AAAA,mCALG,WAAgB;AAAA,cACnB,IAAI;AAAA,cACH,MAAI;AAAA,cACL,qBAAU;AAAA,cACV,WAAO;AAAA;;;;;;;;;;;;;"}
@@ -50,11 +50,10 @@ const _sfc_main = vue.defineComponent({
50
50
  return Array.isArray(previewSrcList) && previewSrcList.length > 0;
51
51
  });
52
52
  const imageIndex = vue.computed(() => {
53
- const { src, previewSrcList, initialIndex } = props;
53
+ const { previewSrcList, initialIndex } = props;
54
54
  let previewIndex = initialIndex;
55
- const srcIndex = previewSrcList.indexOf(src);
56
- if (srcIndex >= 0) {
57
- previewIndex = srcIndex;
55
+ if (initialIndex > previewSrcList.length - 1) {
56
+ previewIndex = 0;
58
57
  }
59
58
  return previewIndex;
60
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"image2.js","sources":["../../../../../../packages/components/image/src/image.vue"],"sourcesContent":["<template>\n <div ref=\"container\" :class=\"[ns.b(), $attrs.class]\" :style=\"containerStyle\">\n <slot v-if=\"loading\" name=\"placeholder\">\n <div :class=\"ns.e('placeholder')\"></div>\n </slot>\n <slot v-else-if=\"hasLoadError\" name=\"error\">\n <div :class=\"ns.e('error')\">{{ t('el.image.error') }}</div>\n </slot>\n <img\n v-else\n v-bind=\"attrs\"\n :src=\"src\"\n :style=\"imageStyle\"\n :class=\"[ns.e('inner'), preview ? ns.e('preview') : '']\"\n @click=\"clickHandler\"\n />\n <teleport to=\"body\" :disabled=\"!appendToBody\">\n <template v-if=\"preview\">\n <image-viewer\n v-if=\"showViewer\"\n :z-index=\"zIndex\"\n :initial-index=\"imageIndex\"\n :url-list=\"previewSrcList\"\n :hide-on-click-modal=\"hideOnClickModal\"\n @close=\"closeViewer\"\n @switch=\"switchViewer\"\n >\n <div v-if=\"$slots.viewer\">\n <slot name=\"viewer\" />\n </div>\n </image-viewer>\n </template>\n </teleport>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, onMounted, watch, nextTick } from 'vue'\nimport { isString } from '@vue/shared'\nimport { useEventListener, useThrottleFn, isClient } from '@vueuse/core'\nimport { useAttrs, useLocale, useNamespace } from '@element-plus/hooks'\nimport ImageViewer from '@element-plus/components/image-viewer'\nimport { getScrollContainer, isInContainer } from '@element-plus/utils/dom'\nimport { imageEmits, imageProps } from './image'\n\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst isHtmlElement = (e: any): e is Element =>\n e && e.nodeType === Node.ELEMENT_NODE\n\nlet prevOverflow = ''\n\nexport default defineComponent({\n name: 'ElImage',\n components: {\n ImageViewer,\n },\n inheritAttrs: false,\n\n props: imageProps,\n emits: imageEmits,\n\n setup(props, { emit, attrs: rawAttrs }) {\n const { t } = useLocale()\n const ns = useNamespace('image')\n\n const attrs = useAttrs()\n const hasLoadError = ref(false)\n const loading = ref(true)\n const imgWidth = ref(0)\n const imgHeight = ref(0)\n const showViewer = ref(false)\n const container = ref<HTMLElement>()\n\n const _scrollContainer = ref<HTMLElement | Window>()\n let stopScrollListener: () => void\n let stopWheelListener: () => void\n\n const containerStyle = computed(() => rawAttrs.style as StyleValue)\n\n const imageStyle = computed<CSSProperties>(() => {\n const { fit } = props\n if (isClient && fit) {\n return { objectFit: fit }\n }\n return {}\n })\n\n const preview = computed(() => {\n const { previewSrcList } = props\n return Array.isArray(previewSrcList) && previewSrcList.length > 0\n })\n\n const imageIndex = computed(() => {\n const { src, previewSrcList, initialIndex } = props\n let previewIndex = initialIndex\n const srcIndex = previewSrcList.indexOf(src)\n if (srcIndex >= 0) {\n previewIndex = srcIndex\n }\n return previewIndex\n })\n\n const loadImage = () => {\n if (!isClient) return\n\n // reset status\n loading.value = true\n hasLoadError.value = false\n\n const img = new Image()\n const currentImageSrc = props.src\n\n // load & error callbacks are only responsible for currentImageSrc\n img.addEventListener('load', (e) => {\n if (currentImageSrc !== props.src) {\n return\n }\n handleLoad(e, img)\n })\n img.addEventListener('error', (e) => {\n if (currentImageSrc !== props.src) {\n return\n }\n handleError(e)\n })\n\n // bind html attrs\n // so it can behave consistently\n Object.entries(attrs.value).forEach(([key, value]) => {\n // avoid onload to be overwritten\n if (key.toLowerCase() === 'onload') return\n img.setAttribute(key, value as string)\n })\n img.src = currentImageSrc\n }\n\n function handleLoad(e: Event, img: HTMLImageElement) {\n imgWidth.value = img.width\n imgHeight.value = img.height\n loading.value = false\n hasLoadError.value = false\n }\n\n function handleError(event: Event) {\n loading.value = false\n hasLoadError.value = true\n emit('error', event)\n }\n\n function handleLazyLoad() {\n if (isInContainer(container.value, _scrollContainer.value)) {\n loadImage()\n removeLazyLoadListener()\n }\n }\n const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200)\n\n async function addLazyLoadListener() {\n if (!isClient) return\n\n await nextTick()\n\n const { scrollContainer } = props\n if (isHtmlElement(scrollContainer)) {\n _scrollContainer.value = scrollContainer\n } else if (isString(scrollContainer) && scrollContainer !== '') {\n _scrollContainer.value =\n document.querySelector<HTMLElement>(scrollContainer) ?? undefined\n } else if (container.value) {\n _scrollContainer.value = getScrollContainer(container.value)\n }\n\n if (_scrollContainer.value) {\n stopScrollListener = useEventListener(\n _scrollContainer,\n 'scroll',\n lazyLoadHandler\n )\n setTimeout(() => handleLazyLoad(), 100)\n }\n }\n\n function removeLazyLoadListener() {\n if (!isClient || !_scrollContainer.value || !lazyLoadHandler) return\n\n stopScrollListener()\n _scrollContainer.value = undefined\n }\n\n function wheelHandler(e: WheelEvent) {\n if (!e.ctrlKey) return\n\n if (e.deltaY < 0) {\n e.preventDefault()\n return false\n } else if (e.deltaY > 0) {\n e.preventDefault()\n return false\n }\n }\n\n function clickHandler() {\n // don't show viewer when preview is false\n if (!preview.value) return\n\n stopWheelListener = useEventListener('wheel', wheelHandler, {\n passive: false,\n })\n\n // prevent body scroll\n prevOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n showViewer.value = true\n }\n\n function closeViewer() {\n stopWheelListener?.()\n document.body.style.overflow = prevOverflow\n showViewer.value = false\n emit('close')\n }\n\n function switchViewer(val: number) {\n emit('switch', val)\n }\n\n watch(\n () => props.src,\n () => {\n if (props.lazy) {\n // reset status\n loading.value = true\n hasLoadError.value = false\n removeLazyLoadListener()\n addLazyLoadListener()\n } else {\n loadImage()\n }\n }\n )\n\n onMounted(() => {\n if (props.lazy) {\n addLazyLoadListener()\n } else {\n loadImage()\n }\n })\n\n return {\n attrs,\n loading,\n hasLoadError,\n showViewer,\n containerStyle,\n imageStyle,\n preview,\n imageIndex,\n container,\n ns,\n\n clickHandler,\n closeViewer,\n switchViewer,\n t,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ImageViewer","imageProps","imageEmits","useLocale","useNamespace","useAttrs","ref","computed","isClient","isInContainer","useThrottleFn","nextTick","_openBlock"],"mappings":";;;;;;;;;;;;;;;;AA+CA,MAAM,gBAAgB,CAAC,MACrB,KAAK,EAAE,aAAa,KAAK;AAE3B,IAAI,eAAe;AAEnB,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,iBACVC;AAAA;AAAA,EAEF,cAAc;AAAA,EAEd,OAAOC;AAAA,EACP,OAAOC;AAAA,EAEP,MAAM,OAAO,EAAE,MAAM,OAAO,YAAY;AACtC,UAAM,EAAE,MAAMC;AACd,UAAM,KAAKC,qBAAa;AAExB,UAAM,QAAQC;AACd,UAAM,eAAeC,QAAI;AACzB,UAAM,UAAUA,QAAI;AACpB,UAAM,WAAWA,QAAI;AACrB,UAAM,YAAYA,QAAI;AACtB,UAAM,aAAaA,QAAI;AACvB,UAAM,YAAYA;AAElB,UAAM,mBAAmBA;AACzB,QAAI;AACJ,QAAI;AAEJ,UAAM,iBAAiBC,aAAS,MAAM,SAAS;AAE/C,UAAM,aAAaA,aAAwB,MAAM;AAC/C,YAAM,EAAE,QAAQ;AAChB,UAAIC,iBAAY,KAAK;AACnB,eAAO,EAAE,WAAW;AAAA;AAEtB,aAAO;AAAA;AAGT,UAAM,UAAUD,aAAS,MAAM;AAC7B,YAAM,EAAE,mBAAmB;AAC3B,aAAO,MAAM,QAAQ,mBAAmB,eAAe,SAAS;AAAA;AAGlE,UAAM,aAAaA,aAAS,MAAM;AAChC,YAAM,EAAE,KAAK,gBAAgB,iBAAiB;AAC9C,UAAI,eAAe;AACnB,YAAM,WAAW,eAAe,QAAQ;AACxC,UAAI,YAAY,GAAG;AACjB,uBAAe;AAAA;AAEjB,aAAO;AAAA;AAGT,UAAM,YAAY,MAAM;AACtB,UAAI,CAACC;AAAU;AAGf,cAAQ,QAAQ;AAChB,mBAAa,QAAQ;AAErB,YAAM,MAAM,IAAI;AAChB,YAAM,kBAAkB,MAAM;AAG9B,UAAI,iBAAiB,QAAQ,CAAC,MAAM;AAClC,YAAI,oBAAoB,MAAM,KAAK;AACjC;AAAA;AAEF,mBAAW,GAAG;AAAA;AAEhB,UAAI,iBAAiB,SAAS,CAAC,MAAM;AACnC,YAAI,oBAAoB,MAAM,KAAK;AACjC;AAAA;AAEF,oBAAY;AAAA;AAKd,aAAO,QAAQ,MAAM,OAAO,QAAQ,CAAC,CAAC,KAAK,WAAW;AAEpD,YAAI,IAAI,kBAAkB;AAAU;AACpC,YAAI,aAAa,KAAK;AAAA;AAExB,UAAI,MAAM;AAAA;AAGZ,wBAAoB,GAAU,KAAuB;AACnD,eAAS,QAAQ,IAAI;AACrB,gBAAU,QAAQ,IAAI;AACtB,cAAQ,QAAQ;AAChB,mBAAa,QAAQ;AAAA;AAGvB,yBAAqB,OAAc;AACjC,cAAQ,QAAQ;AAChB,mBAAa,QAAQ;AACrB,WAAK,SAAS;AAAA;AAGhB,8BAA0B;AACxB,UAAIC,kBAAc,UAAU,OAAO,iBAAiB,QAAQ;AAC1D;AACA;AAAA;AAAA;AAGJ,UAAM,kBAAkBC,mBAAc,gBAAgB;AAEtD,yCAAqC;AACnC,UAAI;AAAW;AAEf;AAEA,YAAMC;AACN;AACE;AAAyB;AAEzB,gCAAiB,iBACN;AAA+C,kCAChC;AAC1B;AAAsD;AAGxD;AACE;AAKA;AAAmC;AAAA;AAIvC;AACE;AAA8D;AAE9D;AACA;AAAyB;AAG3B;AACE,aAAO;AAAS;AAEhB;AACE,UAAE;AACF;AAAO;AAEP;AACA;AAAO;AAAA;AAIX;AAEE;AAAoB;AAEpB;AAA4D;AACjD;AAIX;AACA;AACA,yBAAmB;AAAA;AAGrB;AACE;AACA;AACA,yBAAmB;AACnB;AAAK;AAGP;AACE;AAAe;AAGjB;AAGI,cAAI,MAAM,MAAM;AAEd,gBAAQ;AACR,qBAAa,QAAQ;AACrB;AACA;AAAA;AAEA;AAAA;AAAA;AAKN;AACE;AACE;AAAA;AAEA;AAAA;AAAA;AAIJ;AAAO;AACL,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;;AAxQgB,SAAOC;AAAA,IAA2B;AAAqB;;AAC7D;AAC8B;AAA3B;;;AAG8C,0BAAhD;AAAE,kCAAkB;AAAC;;AAKvB,MACR;AAAO,MACP;AAAQ,MACR,OAAK;AAAE;;AAkBC;AAhBQ;AAAE;;AACH;AAEI;;AACf,UACA;AAAa,UACb;AAAU,UACV;AAAA,UACA;AAAkB,UAClB;AAAQ;;;AAEe;AACA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"image2.js","sources":["../../../../../../packages/components/image/src/image.vue"],"sourcesContent":["<template>\n <div ref=\"container\" :class=\"[ns.b(), $attrs.class]\" :style=\"containerStyle\">\n <slot v-if=\"loading\" name=\"placeholder\">\n <div :class=\"ns.e('placeholder')\"></div>\n </slot>\n <slot v-else-if=\"hasLoadError\" name=\"error\">\n <div :class=\"ns.e('error')\">{{ t('el.image.error') }}</div>\n </slot>\n <img\n v-else\n v-bind=\"attrs\"\n :src=\"src\"\n :style=\"imageStyle\"\n :class=\"[ns.e('inner'), preview ? ns.e('preview') : '']\"\n @click=\"clickHandler\"\n />\n <teleport to=\"body\" :disabled=\"!appendToBody\">\n <template v-if=\"preview\">\n <image-viewer\n v-if=\"showViewer\"\n :z-index=\"zIndex\"\n :initial-index=\"imageIndex\"\n :url-list=\"previewSrcList\"\n :hide-on-click-modal=\"hideOnClickModal\"\n @close=\"closeViewer\"\n @switch=\"switchViewer\"\n >\n <div v-if=\"$slots.viewer\">\n <slot name=\"viewer\" />\n </div>\n </image-viewer>\n </template>\n </teleport>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, onMounted, watch, nextTick } from 'vue'\nimport { isString } from '@vue/shared'\nimport { useEventListener, useThrottleFn, isClient } from '@vueuse/core'\nimport { useAttrs, useLocale, useNamespace } from '@element-plus/hooks'\nimport ImageViewer from '@element-plus/components/image-viewer'\nimport { getScrollContainer, isInContainer } from '@element-plus/utils/dom'\nimport { imageEmits, imageProps } from './image'\n\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst isHtmlElement = (e: any): e is Element =>\n e && e.nodeType === Node.ELEMENT_NODE\n\nlet prevOverflow = ''\n\nexport default defineComponent({\n name: 'ElImage',\n components: {\n ImageViewer,\n },\n inheritAttrs: false,\n\n props: imageProps,\n emits: imageEmits,\n\n setup(props, { emit, attrs: rawAttrs }) {\n const { t } = useLocale()\n const ns = useNamespace('image')\n\n const attrs = useAttrs()\n const hasLoadError = ref(false)\n const loading = ref(true)\n const imgWidth = ref(0)\n const imgHeight = ref(0)\n const showViewer = ref(false)\n const container = ref<HTMLElement>()\n\n const _scrollContainer = ref<HTMLElement | Window>()\n let stopScrollListener: () => void\n let stopWheelListener: () => void\n\n const containerStyle = computed(() => rawAttrs.style as StyleValue)\n\n const imageStyle = computed<CSSProperties>(() => {\n const { fit } = props\n if (isClient && fit) {\n return { objectFit: fit }\n }\n return {}\n })\n\n const preview = computed(() => {\n const { previewSrcList } = props\n return Array.isArray(previewSrcList) && previewSrcList.length > 0\n })\n\n const imageIndex = computed(() => {\n const { previewSrcList, initialIndex } = props\n let previewIndex = initialIndex\n if (initialIndex > previewSrcList.length - 1) {\n previewIndex = 0\n }\n return previewIndex\n })\n\n const loadImage = () => {\n if (!isClient) return\n\n // reset status\n loading.value = true\n hasLoadError.value = false\n\n const img = new Image()\n const currentImageSrc = props.src\n\n // load & error callbacks are only responsible for currentImageSrc\n img.addEventListener('load', (e) => {\n if (currentImageSrc !== props.src) {\n return\n }\n handleLoad(e, img)\n })\n img.addEventListener('error', (e) => {\n if (currentImageSrc !== props.src) {\n return\n }\n handleError(e)\n })\n\n // bind html attrs\n // so it can behave consistently\n Object.entries(attrs.value).forEach(([key, value]) => {\n // avoid onload to be overwritten\n if (key.toLowerCase() === 'onload') return\n img.setAttribute(key, value as string)\n })\n img.src = currentImageSrc\n }\n\n function handleLoad(e: Event, img: HTMLImageElement) {\n imgWidth.value = img.width\n imgHeight.value = img.height\n loading.value = false\n hasLoadError.value = false\n }\n\n function handleError(event: Event) {\n loading.value = false\n hasLoadError.value = true\n emit('error', event)\n }\n\n function handleLazyLoad() {\n if (isInContainer(container.value, _scrollContainer.value)) {\n loadImage()\n removeLazyLoadListener()\n }\n }\n\n const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200)\n\n async function addLazyLoadListener() {\n if (!isClient) return\n\n await nextTick()\n\n const { scrollContainer } = props\n if (isHtmlElement(scrollContainer)) {\n _scrollContainer.value = scrollContainer\n } else if (isString(scrollContainer) && scrollContainer !== '') {\n _scrollContainer.value =\n document.querySelector<HTMLElement>(scrollContainer) ?? undefined\n } else if (container.value) {\n _scrollContainer.value = getScrollContainer(container.value)\n }\n\n if (_scrollContainer.value) {\n stopScrollListener = useEventListener(\n _scrollContainer,\n 'scroll',\n lazyLoadHandler\n )\n setTimeout(() => handleLazyLoad(), 100)\n }\n }\n\n function removeLazyLoadListener() {\n if (!isClient || !_scrollContainer.value || !lazyLoadHandler) return\n\n stopScrollListener()\n _scrollContainer.value = undefined\n }\n\n function wheelHandler(e: WheelEvent) {\n if (!e.ctrlKey) return\n\n if (e.deltaY < 0) {\n e.preventDefault()\n return false\n } else if (e.deltaY > 0) {\n e.preventDefault()\n return false\n }\n }\n\n function clickHandler() {\n // don't show viewer when preview is false\n if (!preview.value) return\n\n stopWheelListener = useEventListener('wheel', wheelHandler, {\n passive: false,\n })\n\n // prevent body scroll\n prevOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n showViewer.value = true\n }\n\n function closeViewer() {\n stopWheelListener?.()\n document.body.style.overflow = prevOverflow\n showViewer.value = false\n emit('close')\n }\n\n function switchViewer(val: number) {\n emit('switch', val)\n }\n\n watch(\n () => props.src,\n () => {\n if (props.lazy) {\n // reset status\n loading.value = true\n hasLoadError.value = false\n removeLazyLoadListener()\n addLazyLoadListener()\n } else {\n loadImage()\n }\n }\n )\n\n onMounted(() => {\n if (props.lazy) {\n addLazyLoadListener()\n } else {\n loadImage()\n }\n })\n\n return {\n attrs,\n loading,\n hasLoadError,\n showViewer,\n containerStyle,\n imageStyle,\n preview,\n imageIndex,\n container,\n ns,\n\n clickHandler,\n closeViewer,\n switchViewer,\n t,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ImageViewer","imageProps","imageEmits","useLocale","useNamespace","useAttrs","ref","computed","isClient","isInContainer","useThrottleFn","nextTick","_openBlock"],"mappings":";;;;;;;;;;;;;;;;AA+CA,MAAM,gBAAgB,CAAC,MACrB,KAAK,EAAE,aAAa,KAAK;AAE3B,IAAI,eAAe;AAEnB,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,iBACVC;AAAA;AAAA,EAEF,cAAc;AAAA,EAEd,OAAOC;AAAA,EACP,OAAOC;AAAA,EAEP,MAAM,OAAO,EAAE,MAAM,OAAO,YAAY;AACtC,UAAM,EAAE,MAAMC;AACd,UAAM,KAAKC,qBAAa;AAExB,UAAM,QAAQC;AACd,UAAM,eAAeC,QAAI;AACzB,UAAM,UAAUA,QAAI;AACpB,UAAM,WAAWA,QAAI;AACrB,UAAM,YAAYA,QAAI;AACtB,UAAM,aAAaA,QAAI;AACvB,UAAM,YAAYA;AAElB,UAAM,mBAAmBA;AACzB,QAAI;AACJ,QAAI;AAEJ,UAAM,iBAAiBC,aAAS,MAAM,SAAS;AAE/C,UAAM,aAAaA,aAAwB,MAAM;AAC/C,YAAM,EAAE,QAAQ;AAChB,UAAIC,iBAAY,KAAK;AACnB,eAAO,EAAE,WAAW;AAAA;AAEtB,aAAO;AAAA;AAGT,UAAM,UAAUD,aAAS,MAAM;AAC7B,YAAM,EAAE,mBAAmB;AAC3B,aAAO,MAAM,QAAQ,mBAAmB,eAAe,SAAS;AAAA;AAGlE,UAAM,aAAaA,aAAS,MAAM;AAChC,YAAM,EAAE,gBAAgB,iBAAiB;AACzC,UAAI,eAAe;AACnB,UAAI,eAAe,eAAe,SAAS,GAAG;AAC5C,uBAAe;AAAA;AAEjB,aAAO;AAAA;AAGT,UAAM,YAAY,MAAM;AACtB,UAAI,CAACC;AAAU;AAGf,cAAQ,QAAQ;AAChB,mBAAa,QAAQ;AAErB,YAAM,MAAM,IAAI;AAChB,YAAM,kBAAkB,MAAM;AAG9B,UAAI,iBAAiB,QAAQ,CAAC,MAAM;AAClC,YAAI,oBAAoB,MAAM,KAAK;AACjC;AAAA;AAEF,mBAAW,GAAG;AAAA;AAEhB,UAAI,iBAAiB,SAAS,CAAC,MAAM;AACnC,YAAI,oBAAoB,MAAM,KAAK;AACjC;AAAA;AAEF,oBAAY;AAAA;AAKd,aAAO,QAAQ,MAAM,OAAO,QAAQ,CAAC,CAAC,KAAK,WAAW;AAEpD,YAAI,IAAI,kBAAkB;AAAU;AACpC,YAAI,aAAa,KAAK;AAAA;AAExB,UAAI,MAAM;AAAA;AAGZ,wBAAoB,GAAU,KAAuB;AACnD,eAAS,QAAQ,IAAI;AACrB,gBAAU,QAAQ,IAAI;AACtB,cAAQ,QAAQ;AAChB,mBAAa,QAAQ;AAAA;AAGvB,yBAAqB,OAAc;AACjC,cAAQ,QAAQ;AAChB,mBAAa,QAAQ;AACrB,WAAK,SAAS;AAAA;AAGhB,8BAA0B;AACxB,UAAIC,kBAAc,UAAU,OAAO,iBAAiB,QAAQ;AAC1D;AACA;AAAA;AAAA;AAIJ,UAAM,kBAAkBC,mBAAc,gBAAgB;AAEtD,yCAAqC;AACnC,UAAI;AAAW;AAEf;AAEA,YAAMC;AACN;AACE;AAAyB;AAEzB,gCAAiB,iBACN;AAA+C,kCAChC;AAC1B;AAAsD;AAGxD;AACE;AAKA;AAAmC;AAAA;AAIvC;AACE;AAA8D;AAE9D;AACA;AAAyB;AAG3B;AACE,aAAO;AAAS;AAEhB;AACE,UAAE;AACF;AAAO;AAEP;AACA;AAAO;AAAA;AAIX;AAEE;AAAoB;AAEpB;AAA4D;AACjD;AAIX;AACA;AACA,yBAAmB;AAAA;AAGrB;AACE;AACA;AACA,yBAAmB;AACnB;AAAK;AAGP;AACE;AAAe;AAGjB;AAGI,cAAI,MAAM,MAAM;AAEd,gBAAQ;AACR,qBAAa,QAAQ;AACrB;AACA;AAAA;AAEA;AAAA;AAAA;AAKN;AACE;AACE;AAAA;AAEA;AAAA;AAAA;AAIJ;AAAO;AACL,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;;;AAxQgB,SAAOC;AAAA,IAA2B;AAAqB;;AAC7D;AAC8B;AAA3B;;;AAG8C,0BAAhD;AAAE,kCAAkB;AAAC;;AAKvB,MACR;AAAO,MACP;AAAQ,MACR,OAAK;AAAE;;AAkBC;AAhBQ;AAAE;;AACH;AAEI;;AACf,UACA;AAAa,UACb;AAAU,UACV;AAAA,UACA;AAAkB,UAClB;AAAQ;;;AAEe;AACA;;;;;;;;;;;;;;"}
@@ -7,7 +7,7 @@ export declare const ElImageViewer: import("../../utils/types").SFCWithInstall<i
7
7
  }, {
8
8
  index: import("vue").Ref<number>;
9
9
  wrapper: import("vue").Ref<HTMLDivElement | undefined>;
10
- img: import("vue").Ref<HTMLImageElement | undefined>;
10
+ imgRefs: import("vue").Ref<any[]>;
11
11
  isSingle: import("vue").ComputedRef<boolean>;
12
12
  isFirst: import("vue").ComputedRef<boolean>;
13
13
  isLast: import("vue").ComputedRef<boolean>;
@@ -9,7 +9,7 @@ declare const _default: import("vue").DefineComponent<{
9
9
  }, {
10
10
  index: import("vue").Ref<number>;
11
11
  wrapper: import("vue").Ref<HTMLDivElement | undefined>;
12
- img: import("vue").Ref<HTMLImageElement | undefined>;
12
+ imgRefs: import("vue").Ref<any[]>;
13
13
  isSingle: import("vue").ComputedRef<boolean>;
14
14
  isFirst: import("vue").ComputedRef<boolean>;
15
15
  isLast: import("vue").ComputedRef<boolean>;
@@ -43,7 +43,7 @@ const _sfc_main = vue.defineComponent({
43
43
  const { t } = index$1.useLocale();
44
44
  const ns = index$2.useNamespace("image-viewer");
45
45
  const wrapper = vue.ref();
46
- const img = vue.ref();
46
+ const imgRefs = vue.ref([]);
47
47
  const scopeEventListener = vue.effectScope();
48
48
  const loading = vue.ref(true);
49
49
  const index = vue.ref(props.initialIndex);
@@ -70,11 +70,28 @@ const _sfc_main = vue.defineComponent({
70
70
  });
71
71
  const imgStyle = vue.computed(() => {
72
72
  const { scale, deg, offsetX, offsetY, enableTransition } = transform.value;
73
+ let translateX = offsetX / scale;
74
+ let translateY = offsetY / scale;
75
+ switch (deg % 360) {
76
+ case 90:
77
+ case -270:
78
+ ;
79
+ [translateX, translateY] = [translateY, -translateX];
80
+ break;
81
+ case 180:
82
+ case -180:
83
+ ;
84
+ [translateX, translateY] = [-translateX, -translateY];
85
+ break;
86
+ case 270:
87
+ case -90:
88
+ ;
89
+ [translateX, translateY] = [-translateY, translateX];
90
+ break;
91
+ }
73
92
  const style = {
74
- transform: `scale(${scale}) rotate(${deg}deg)`,
75
- transition: enableTransition ? "transform .3s" : "",
76
- marginLeft: `${offsetX}px`,
77
- marginTop: `${offsetY}px`
93
+ transform: `scale(${scale}) rotate(${deg}deg) translate(${translateX}px, ${translateY}px)`,
94
+ transition: enableTransition ? "transform .3s" : ""
78
95
  };
79
96
  if (mode.value.name === Mode.CONTAIN.name) {
80
97
  style.maxWidth = style.maxHeight = "100%";
@@ -112,12 +129,12 @@ const _sfc_main = vue.defineComponent({
112
129
  const delta = e.wheelDelta ? e.wheelDelta : -e.detail;
113
130
  if (delta > 0) {
114
131
  handleActions("zoomIn", {
115
- zoomRate: 0.015,
132
+ zoomRate: 1.2,
116
133
  enableTransition: false
117
134
  });
118
135
  } else {
119
136
  handleActions("zoomOut", {
120
- zoomRate: 0.015,
137
+ zoomRate: 1.2,
121
138
  enableTransition: false
122
139
  });
123
140
  }
@@ -140,13 +157,10 @@ const _sfc_main = vue.defineComponent({
140
157
  function handleMouseDown(e) {
141
158
  if (loading.value || e.button !== 0 || !wrapper.value)
142
159
  return;
160
+ transform.value.enableTransition = false;
143
161
  const { offsetX, offsetY } = transform.value;
144
162
  const startX = e.pageX;
145
163
  const startY = e.pageY;
146
- const divLeft = wrapper.value.clientLeft;
147
- const divRight = wrapper.value.clientLeft + wrapper.value.clientWidth;
148
- const divTop = wrapper.value.clientTop;
149
- const divBottom = wrapper.value.clientTop + wrapper.value.clientHeight;
150
164
  const dragHandler = util.rafThrottle((ev) => {
151
165
  transform.value = {
152
166
  ...transform.value,
@@ -155,12 +169,7 @@ const _sfc_main = vue.defineComponent({
155
169
  };
156
170
  });
157
171
  const removeMousemove = core.useEventListener(document, "mousemove", dragHandler);
158
- core.useEventListener(document, "mouseup", (evt) => {
159
- const mouseX = evt.pageX;
160
- const mouseY = evt.pageY;
161
- if (mouseX < divLeft || mouseX > divRight || mouseY < divTop || mouseY > divBottom) {
162
- reset();
163
- }
172
+ core.useEventListener(document, "mouseup", () => {
164
173
  removeMousemove();
165
174
  });
166
175
  e.preventDefault();
@@ -201,7 +210,7 @@ const _sfc_main = vue.defineComponent({
201
210
  if (loading.value)
202
211
  return;
203
212
  const { zoomRate, rotateDeg, enableTransition } = {
204
- zoomRate: 0.2,
213
+ zoomRate: 1.4,
205
214
  rotateDeg: 90,
206
215
  enableTransition: true,
207
216
  ...options
@@ -209,11 +218,13 @@ const _sfc_main = vue.defineComponent({
209
218
  switch (action) {
210
219
  case "zoomOut":
211
220
  if (transform.value.scale > 0.2) {
212
- transform.value.scale = parseFloat((transform.value.scale - zoomRate).toFixed(3));
221
+ transform.value.scale = parseFloat((transform.value.scale / zoomRate).toFixed(3));
213
222
  }
214
223
  break;
215
224
  case "zoomIn":
216
- transform.value.scale = parseFloat((transform.value.scale + zoomRate).toFixed(3));
225
+ if (transform.value.scale < 7) {
226
+ transform.value.scale = parseFloat((transform.value.scale * zoomRate).toFixed(3));
227
+ }
217
228
  break;
218
229
  case "clockwise":
219
230
  transform.value.deg += rotateDeg;
@@ -226,7 +237,7 @@ const _sfc_main = vue.defineComponent({
226
237
  }
227
238
  vue.watch(currentImg, () => {
228
239
  vue.nextTick(() => {
229
- const $img = img.value;
240
+ const $img = imgRefs.value[0];
230
241
  if (!($img == null ? void 0 : $img.complete)) {
231
242
  loading.value = true;
232
243
  }
@@ -244,7 +255,7 @@ const _sfc_main = vue.defineComponent({
244
255
  return {
245
256
  index,
246
257
  wrapper,
247
- img,
258
+ imgRefs,
248
259
  isSingle,
249
260
  isFirst,
250
261
  isLast,
@@ -390,7 +401,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
390
401
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.urlList, (url, i) => {
391
402
  return vue.withDirectives((vue.openBlock(), vue.createElementBlock("img", {
392
403
  ref_for: true,
393
- ref: "img",
404
+ ref: (el) => _ctx.imgRefs[i] = el,
394
405
  key: url,
395
406
  src: url,
396
407
  style: vue.normalizeStyle(_ctx.imgStyle),
@@ -1 +1 @@
1
- {"version":3,"file":"image-viewer2.js","sources":["../../../../../../packages/components/image-viewer/src/image-viewer.vue"],"sourcesContent":["<template>\n <transition name=\"viewer-fade\">\n <div\n ref=\"wrapper\"\n :tabindex=\"-1\"\n :class=\"ns.e('wrapper')\"\n :style=\"{ zIndex }\"\n >\n <div :class=\"ns.e('mask')\" @click.self=\"hideOnClickModal && hide()\" />\n\n <!-- CLOSE -->\n <span :class=\"[ns.e('btn'), ns.e('close')]\" @click=\"hide\">\n <el-icon><close /></el-icon>\n </span>\n\n <!-- ARROW -->\n <template v-if=\"!isSingle\">\n <span\n :class=\"[\n ns.e('btn'),\n ns.e('prev'),\n ns.is('disabled', !infinite && isFirst),\n ]\"\n @click=\"prev\"\n >\n <el-icon><arrow-left /></el-icon>\n </span>\n <span\n :class=\"[\n ns.e('btn'),\n ns.e('next'),\n ns.is('disabled', !infinite && isLast),\n ]\"\n @click=\"next\"\n >\n <el-icon><arrow-right /></el-icon>\n </span>\n </template>\n <!-- ACTIONS -->\n <div :class=\"[ns.e('btn'), ns.e('actions')]\">\n <div :class=\"ns.e('actions__inner')\">\n <el-icon @click=\"handleActions('zoomOut')\">\n <zoom-out />\n </el-icon>\n <el-icon @click=\"handleActions('zoomIn')\">\n <zoom-in />\n </el-icon>\n <i :class=\"ns.e('actions__divider')\"></i>\n <el-icon @click=\"toggleMode\">\n <component :is=\"mode.icon\" />\n </el-icon>\n <i :class=\"ns.e('actions__divider')\"></i>\n <el-icon @click=\"handleActions('anticlockwise')\">\n <refresh-left />\n </el-icon>\n <el-icon @click=\"handleActions('clockwise')\">\n <refresh-right />\n </el-icon>\n </div>\n </div>\n <!-- CANVAS -->\n <div :class=\"ns.e('canvas')\">\n <img\n v-for=\"(url, i) in urlList\"\n v-show=\"i === index\"\n ref=\"img\"\n :key=\"url\"\n :src=\"url\"\n :style=\"imgStyle\"\n :class=\"ns.e('img')\"\n @load=\"handleImgLoad\"\n @error=\"handleImgError\"\n @mousedown=\"handleMouseDown\"\n />\n </div>\n <slot />\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n onMounted,\n watch,\n nextTick,\n effectScope,\n markRaw,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport ElIcon from '@element-plus/components/icon'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { rafThrottle, isFirefox } from '@element-plus/utils/util'\nimport {\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n FullScreen,\n ScaleToOriginal,\n} from '@element-plus/icons-vue'\nimport { imageViewerProps, imageViewerEmits } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\n\nconst Mode = {\n CONTAIN: {\n name: 'contain',\n icon: markRaw(FullScreen),\n },\n ORIGINAL: {\n name: 'original',\n icon: markRaw(ScaleToOriginal),\n },\n}\n\nconst mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'\nexport type ImageViewerAction =\n | 'zoomIn'\n | 'zoomOut'\n | 'clockwise'\n | 'anticlockwise'\n\nexport default defineComponent({\n name: 'ElImageViewer',\n components: {\n ElIcon,\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n },\n props: imageViewerProps,\n emits: imageViewerEmits,\n\n setup(props, { emit }) {\n const { t } = useLocale()\n const ns = useNamespace('image-viewer')\n const wrapper = ref<HTMLDivElement>()\n const img = ref<HTMLImageElement>()\n\n const scopeEventListener = effectScope()\n\n const loading = ref(true)\n const index = ref(props.initialIndex)\n const mode = ref(Mode.CONTAIN)\n const transform = ref({\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n })\n\n const isSingle = computed(() => {\n const { urlList } = props\n return urlList.length <= 1\n })\n\n const isFirst = computed(() => {\n return index.value === 0\n })\n\n const isLast = computed(() => {\n return index.value === props.urlList.length - 1\n })\n\n const currentImg = computed(() => {\n return props.urlList[index.value]\n })\n\n const imgStyle = computed(() => {\n const { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n const style: CSSProperties = {\n transform: `scale(${scale}) rotate(${deg}deg)`,\n transition: enableTransition ? 'transform .3s' : '',\n marginLeft: `${offsetX}px`,\n marginTop: `${offsetY}px`,\n }\n if (mode.value.name === Mode.CONTAIN.name) {\n style.maxWidth = style.maxHeight = '100%'\n }\n return style\n })\n\n function hide() {\n unregisterEventListener()\n emit('close')\n }\n\n function registerEventListener() {\n const keydownHandler = rafThrottle((e: KeyboardEvent) => {\n switch (e.code) {\n // ESC\n case EVENT_CODE.esc:\n hide()\n break\n // SPACE\n case EVENT_CODE.space:\n toggleMode()\n break\n // LEFT_ARROW\n case EVENT_CODE.left:\n prev()\n break\n // UP_ARROW\n case EVENT_CODE.up:\n handleActions('zoomIn')\n break\n // RIGHT_ARROW\n case EVENT_CODE.right:\n next()\n break\n // DOWN_ARROW\n case EVENT_CODE.down:\n handleActions('zoomOut')\n break\n }\n })\n const mousewheelHandler = rafThrottle(\n (e: WheelEvent | any /* TODO: wheelDelta is deprecated */) => {\n const delta = e.wheelDelta ? e.wheelDelta : -e.detail\n if (delta > 0) {\n handleActions('zoomIn', {\n zoomRate: 0.015,\n enableTransition: false,\n })\n } else {\n handleActions('zoomOut', {\n zoomRate: 0.015,\n enableTransition: false,\n })\n }\n }\n )\n\n scopeEventListener.run(() => {\n useEventListener(document, 'keydown', keydownHandler)\n useEventListener(document, mousewheelEventName, mousewheelHandler)\n })\n }\n\n function unregisterEventListener() {\n scopeEventListener.stop()\n }\n\n function handleImgLoad() {\n loading.value = false\n }\n\n function handleImgError(e: Event) {\n loading.value = false\n ;(e.target as HTMLImageElement).alt = t('el.image.error')\n }\n\n function handleMouseDown(e: MouseEvent) {\n if (loading.value || e.button !== 0 || !wrapper.value) return\n\n const { offsetX, offsetY } = transform.value\n const startX = e.pageX\n const startY = e.pageY\n\n const divLeft = wrapper.value.clientLeft\n const divRight = wrapper.value.clientLeft + wrapper.value.clientWidth\n const divTop = wrapper.value.clientTop\n const divBottom = wrapper.value.clientTop + wrapper.value.clientHeight\n\n const dragHandler = rafThrottle((ev: MouseEvent) => {\n transform.value = {\n ...transform.value,\n offsetX: offsetX + ev.pageX - startX,\n offsetY: offsetY + ev.pageY - startY,\n }\n })\n const removeMousemove = useEventListener(\n document,\n 'mousemove',\n dragHandler\n )\n useEventListener(document, 'mouseup', (evt) => {\n const mouseX = evt.pageX\n const mouseY = evt.pageY\n if (\n mouseX < divLeft ||\n mouseX > divRight ||\n mouseY < divTop ||\n mouseY > divBottom\n ) {\n reset()\n }\n removeMousemove()\n })\n\n e.preventDefault()\n }\n\n function reset() {\n transform.value = {\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n }\n }\n\n function toggleMode() {\n if (loading.value) return\n\n const modeNames = Object.keys(Mode)\n const modeValues = Object.values(Mode)\n const currentMode = mode.value.name\n const index = modeValues.findIndex((i) => i.name === currentMode)\n const nextIndex = (index + 1) % modeNames.length\n mode.value = Mode[modeNames[nextIndex]]\n reset()\n }\n\n function prev() {\n if (isFirst.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value - 1 + len) % len\n }\n\n function next() {\n if (isLast.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value + 1) % len\n }\n\n function handleActions(action: ImageViewerAction, options = {}) {\n if (loading.value) return\n const { zoomRate, rotateDeg, enableTransition } = {\n zoomRate: 0.2,\n rotateDeg: 90,\n enableTransition: true,\n ...options,\n }\n switch (action) {\n case 'zoomOut':\n if (transform.value.scale > 0.2) {\n transform.value.scale = parseFloat(\n (transform.value.scale - zoomRate).toFixed(3)\n )\n }\n break\n case 'zoomIn':\n transform.value.scale = parseFloat(\n (transform.value.scale + zoomRate).toFixed(3)\n )\n break\n case 'clockwise':\n transform.value.deg += rotateDeg\n break\n case 'anticlockwise':\n transform.value.deg -= rotateDeg\n break\n }\n transform.value.enableTransition = enableTransition\n }\n\n watch(currentImg, () => {\n nextTick(() => {\n const $img = img.value\n if (!$img?.complete) {\n loading.value = true\n }\n })\n })\n\n watch(index, (val) => {\n reset()\n emit('switch', val)\n })\n\n onMounted(() => {\n registerEventListener()\n // add tabindex then wrapper can be focusable via Javascript\n // focus wrapper so arrow key can't cause inner scroll behavior underneath\n wrapper.value?.focus?.()\n })\n\n return {\n index,\n wrapper,\n img,\n isSingle,\n isFirst,\n isLast,\n currentImg,\n imgStyle,\n mode,\n handleActions,\n prev,\n next,\n hide,\n toggleMode,\n handleImgLoad,\n handleImgError,\n handleMouseDown,\n\n ns,\n }\n },\n})\n</script>\n"],"names":["markRaw","FullScreen","ScaleToOriginal","isFirefox","defineComponent","ElIcon","Close","ArrowLeft","ArrowRight","ZoomOut","ZoomIn","RefreshLeft","RefreshRight","imageViewerProps","imageViewerEmits","useLocale","useNamespace","ref","effectScope","computed","rafThrottle","EVENT_CODE","useEventListener","_normalizeStyle"],"mappings":"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"}
1
+ {"version":3,"file":"image-viewer2.js","sources":["../../../../../../packages/components/image-viewer/src/image-viewer.vue"],"sourcesContent":["<template>\n <transition name=\"viewer-fade\">\n <div\n ref=\"wrapper\"\n :tabindex=\"-1\"\n :class=\"ns.e('wrapper')\"\n :style=\"{ zIndex }\"\n >\n <div :class=\"ns.e('mask')\" @click.self=\"hideOnClickModal && hide()\" />\n\n <!-- CLOSE -->\n <span :class=\"[ns.e('btn'), ns.e('close')]\" @click=\"hide\">\n <el-icon><close /></el-icon>\n </span>\n\n <!-- ARROW -->\n <template v-if=\"!isSingle\">\n <span\n :class=\"[\n ns.e('btn'),\n ns.e('prev'),\n ns.is('disabled', !infinite && isFirst),\n ]\"\n @click=\"prev\"\n >\n <el-icon><arrow-left /></el-icon>\n </span>\n <span\n :class=\"[\n ns.e('btn'),\n ns.e('next'),\n ns.is('disabled', !infinite && isLast),\n ]\"\n @click=\"next\"\n >\n <el-icon><arrow-right /></el-icon>\n </span>\n </template>\n <!-- ACTIONS -->\n <div :class=\"[ns.e('btn'), ns.e('actions')]\">\n <div :class=\"ns.e('actions__inner')\">\n <el-icon @click=\"handleActions('zoomOut')\">\n <zoom-out />\n </el-icon>\n <el-icon @click=\"handleActions('zoomIn')\">\n <zoom-in />\n </el-icon>\n <i :class=\"ns.e('actions__divider')\"></i>\n <el-icon @click=\"toggleMode\">\n <component :is=\"mode.icon\" />\n </el-icon>\n <i :class=\"ns.e('actions__divider')\"></i>\n <el-icon @click=\"handleActions('anticlockwise')\">\n <refresh-left />\n </el-icon>\n <el-icon @click=\"handleActions('clockwise')\">\n <refresh-right />\n </el-icon>\n </div>\n </div>\n <!-- CANVAS -->\n <div :class=\"ns.e('canvas')\">\n <img\n v-for=\"(url, i) in urlList\"\n v-show=\"i === index\"\n :ref=\"(el) => (imgRefs[i] = el)\"\n :key=\"url\"\n :src=\"url\"\n :style=\"imgStyle\"\n :class=\"ns.e('img')\"\n @load=\"handleImgLoad\"\n @error=\"handleImgError\"\n @mousedown=\"handleMouseDown\"\n />\n </div>\n <slot />\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n onMounted,\n watch,\n nextTick,\n effectScope,\n markRaw,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport ElIcon from '@element-plus/components/icon'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { rafThrottle, isFirefox } from '@element-plus/utils/util'\nimport {\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n FullScreen,\n ScaleToOriginal,\n} from '@element-plus/icons-vue'\nimport { imageViewerProps, imageViewerEmits } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\n\nconst Mode = {\n CONTAIN: {\n name: 'contain',\n icon: markRaw(FullScreen),\n },\n ORIGINAL: {\n name: 'original',\n icon: markRaw(ScaleToOriginal),\n },\n}\n\nconst mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'\nexport type ImageViewerAction =\n | 'zoomIn'\n | 'zoomOut'\n | 'clockwise'\n | 'anticlockwise'\n\nexport default defineComponent({\n name: 'ElImageViewer',\n components: {\n ElIcon,\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n },\n props: imageViewerProps,\n emits: imageViewerEmits,\n\n setup(props, { emit }) {\n const { t } = useLocale()\n const ns = useNamespace('image-viewer')\n const wrapper = ref<HTMLDivElement>()\n const imgRefs = ref<any[]>([])\n\n const scopeEventListener = effectScope()\n\n const loading = ref(true)\n const index = ref(props.initialIndex)\n const mode = ref(Mode.CONTAIN)\n const transform = ref({\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n })\n\n const isSingle = computed(() => {\n const { urlList } = props\n return urlList.length <= 1\n })\n\n const isFirst = computed(() => {\n return index.value === 0\n })\n\n const isLast = computed(() => {\n return index.value === props.urlList.length - 1\n })\n\n const currentImg = computed(() => {\n return props.urlList[index.value]\n })\n\n const imgStyle = computed(() => {\n const { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n let translateX = offsetX / scale\n let translateY = offsetY / scale\n\n switch (deg % 360) {\n case 90:\n case -270:\n ;[translateX, translateY] = [translateY, -translateX]\n break\n case 180:\n case -180:\n ;[translateX, translateY] = [-translateX, -translateY]\n break\n case 270:\n case -90:\n ;[translateX, translateY] = [-translateY, translateX]\n break\n }\n\n const style: CSSProperties = {\n transform: `scale(${scale}) rotate(${deg}deg) translate(${translateX}px, ${translateY}px)`,\n transition: enableTransition ? 'transform .3s' : '',\n }\n if (mode.value.name === Mode.CONTAIN.name) {\n style.maxWidth = style.maxHeight = '100%'\n }\n return style\n })\n\n function hide() {\n unregisterEventListener()\n emit('close')\n }\n\n function registerEventListener() {\n const keydownHandler = rafThrottle((e: KeyboardEvent) => {\n switch (e.code) {\n // ESC\n case EVENT_CODE.esc:\n hide()\n break\n // SPACE\n case EVENT_CODE.space:\n toggleMode()\n break\n // LEFT_ARROW\n case EVENT_CODE.left:\n prev()\n break\n // UP_ARROW\n case EVENT_CODE.up:\n handleActions('zoomIn')\n break\n // RIGHT_ARROW\n case EVENT_CODE.right:\n next()\n break\n // DOWN_ARROW\n case EVENT_CODE.down:\n handleActions('zoomOut')\n break\n }\n })\n const mousewheelHandler = rafThrottle(\n (e: WheelEvent | any /* TODO: wheelDelta is deprecated */) => {\n const delta = e.wheelDelta ? e.wheelDelta : -e.detail\n if (delta > 0) {\n handleActions('zoomIn', {\n zoomRate: 1.2,\n enableTransition: false,\n })\n } else {\n handleActions('zoomOut', {\n zoomRate: 1.2,\n enableTransition: false,\n })\n }\n }\n )\n\n scopeEventListener.run(() => {\n useEventListener(document, 'keydown', keydownHandler)\n useEventListener(document, mousewheelEventName, mousewheelHandler)\n })\n }\n\n function unregisterEventListener() {\n scopeEventListener.stop()\n }\n\n function handleImgLoad() {\n loading.value = false\n }\n\n function handleImgError(e: Event) {\n loading.value = false\n ;(e.target as HTMLImageElement).alt = t('el.image.error')\n }\n\n function handleMouseDown(e: MouseEvent) {\n if (loading.value || e.button !== 0 || !wrapper.value) return\n transform.value.enableTransition = false\n\n const { offsetX, offsetY } = transform.value\n const startX = e.pageX\n const startY = e.pageY\n\n const dragHandler = rafThrottle((ev: MouseEvent) => {\n transform.value = {\n ...transform.value,\n offsetX: offsetX + ev.pageX - startX,\n offsetY: offsetY + ev.pageY - startY,\n }\n })\n const removeMousemove = useEventListener(\n document,\n 'mousemove',\n dragHandler\n )\n useEventListener(document, 'mouseup', () => {\n removeMousemove()\n })\n\n e.preventDefault()\n }\n\n function reset() {\n transform.value = {\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n }\n }\n\n function toggleMode() {\n if (loading.value) return\n\n const modeNames = Object.keys(Mode)\n const modeValues = Object.values(Mode)\n const currentMode = mode.value.name\n const index = modeValues.findIndex((i) => i.name === currentMode)\n const nextIndex = (index + 1) % modeNames.length\n mode.value = Mode[modeNames[nextIndex]]\n reset()\n }\n\n function prev() {\n if (isFirst.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value - 1 + len) % len\n }\n\n function next() {\n if (isLast.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value + 1) % len\n }\n\n function handleActions(action: ImageViewerAction, options = {}) {\n if (loading.value) return\n const { zoomRate, rotateDeg, enableTransition } = {\n zoomRate: 1.4,\n rotateDeg: 90,\n enableTransition: true,\n ...options,\n }\n switch (action) {\n case 'zoomOut':\n if (transform.value.scale > 0.2) {\n transform.value.scale = parseFloat(\n (transform.value.scale / zoomRate).toFixed(3)\n )\n }\n break\n case 'zoomIn':\n if (transform.value.scale < 7) {\n transform.value.scale = parseFloat(\n (transform.value.scale * zoomRate).toFixed(3)\n )\n }\n break\n case 'clockwise':\n transform.value.deg += rotateDeg\n break\n case 'anticlockwise':\n transform.value.deg -= rotateDeg\n break\n }\n transform.value.enableTransition = enableTransition\n }\n\n watch(currentImg, () => {\n nextTick(() => {\n const $img = imgRefs.value[0]\n if (!$img?.complete) {\n loading.value = true\n }\n })\n })\n\n watch(index, (val) => {\n reset()\n emit('switch', val)\n })\n\n onMounted(() => {\n registerEventListener()\n // add tabindex then wrapper can be focusable via Javascript\n // focus wrapper so arrow key can't cause inner scroll behavior underneath\n wrapper.value?.focus?.()\n })\n\n return {\n index,\n wrapper,\n imgRefs,\n isSingle,\n isFirst,\n isLast,\n currentImg,\n imgStyle,\n mode,\n handleActions,\n prev,\n next,\n hide,\n toggleMode,\n handleImgLoad,\n handleImgError,\n handleMouseDown,\n ns,\n }\n },\n})\n</script>\n"],"names":["markRaw","FullScreen","ScaleToOriginal","isFirefox","defineComponent","ElIcon","Close","ArrowLeft","ArrowRight","ZoomOut","ZoomIn","RefreshLeft","RefreshRight","imageViewerProps","imageViewerEmits","useLocale","useNamespace","ref","effectScope","computed","rafThrottle","EVENT_CODE","useEventListener","_normalizeStyle"],"mappings":"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"}
@@ -122,7 +122,7 @@ var result = require('./result/src/result.js');
122
122
  var row = require('./row/src/row.js');
123
123
  var util = require('./scrollbar/src/util.js');
124
124
  var scrollbar = require('./scrollbar/src/scrollbar.js');
125
- var bar = require('./scrollbar/src/bar.js');
125
+ var thumb = require('./scrollbar/src/thumb.js');
126
126
  var token = require('./select/src/token.js');
127
127
  var token$1 = require('./select-v2/src/token.js');
128
128
  var skeleton = require('./skeleton/src/skeleton.js');
@@ -343,7 +343,7 @@ exports.BAR_MAP = util.BAR_MAP;
343
343
  exports.renderThumbStyle = util.renderThumbStyle;
344
344
  exports.scrollbarEmits = scrollbar.scrollbarEmits;
345
345
  exports.scrollbarProps = scrollbar.scrollbarProps;
346
- exports.barProps = bar.barProps;
346
+ exports.thumbProps = thumb.thumbProps;
347
347
  exports.selectGroupKey = token.selectGroupKey;
348
348
  exports.selectKey = token.selectKey;
349
349
  exports.selectV2InjectionKey = token$1.selectV2InjectionKey;