@robot-admin/naive-ui-components 0.12.1 → 0.13.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 (255) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +27 -1
  3. package/README_EN.md +26 -0
  4. package/dist/C_ActionBar.css +60 -60
  5. package/dist/C_ActionBar2.cjs +1 -1
  6. package/dist/C_ActionBar2.js +1 -1
  7. package/dist/C_AntV.css +49 -49
  8. package/dist/C_AntV2.cjs +3 -3
  9. package/dist/C_AntV2.js +3 -3
  10. package/dist/C_AudioPlayer.css +81 -66
  11. package/dist/C_AudioPlayer2.cjs +1 -1
  12. package/dist/C_AudioPlayer2.js +1 -1
  13. package/dist/C_AvatarGroup.css +40 -25
  14. package/dist/C_AvatarGroup2.cjs +1 -1
  15. package/dist/C_AvatarGroup2.js +1 -1
  16. package/dist/C_Barcode.css +6 -6
  17. package/dist/C_Barcode2.cjs +1 -1
  18. package/dist/C_Barcode2.js +1 -1
  19. package/dist/C_Breadcrumb.css +14 -14
  20. package/dist/C_Breadcrumb2.cjs +1 -1
  21. package/dist/C_Breadcrumb2.js +1 -1
  22. package/dist/C_Captcha.css +50 -50
  23. package/dist/C_Captcha2.cjs +1 -1
  24. package/dist/C_Captcha2.js +1 -1
  25. package/dist/C_Cascade.css +2 -2
  26. package/dist/C_Cascade2.cjs +1 -1
  27. package/dist/C_Cascade2.js +1 -1
  28. package/dist/C_Chat.css +96 -78
  29. package/dist/C_Chat2.cjs +1 -1
  30. package/dist/C_Chat2.js +1 -1
  31. package/dist/C_City.css +52 -28
  32. package/dist/C_City2.cjs +1 -1
  33. package/dist/C_City2.js +1 -1
  34. package/dist/C_Code.css +48 -42
  35. package/dist/C_Code2.cjs +1 -1
  36. package/dist/C_Code2.js +1 -1
  37. package/dist/C_CollapsePanel.css +14 -14
  38. package/dist/C_CollapsePanel2.cjs +1 -1
  39. package/dist/C_CollapsePanel2.js +1 -1
  40. package/dist/C_ContextMenu.css +14 -14
  41. package/dist/C_ContextMenu2.cjs +1 -1
  42. package/dist/C_ContextMenu2.js +1 -1
  43. package/dist/C_Cron.css +94 -55
  44. package/dist/C_Cron2.cjs +1 -1
  45. package/dist/C_Cron2.js +1 -1
  46. package/dist/C_Date2.cjs +1 -1
  47. package/dist/C_Date2.js +1 -1
  48. package/dist/C_Draggable.css +48 -48
  49. package/dist/C_Draggable2.cjs +1 -1
  50. package/dist/C_Draggable2.js +1 -1
  51. package/dist/C_Editor.css +13 -14
  52. package/dist/C_Editor2.cjs +1 -1
  53. package/dist/C_Editor2.js +1 -1
  54. package/dist/C_FilePreview.css +18 -18
  55. package/dist/C_FilePreview2.cjs +1 -1
  56. package/dist/C_FilePreview2.js +1 -1
  57. package/dist/C_Form.base.css +36 -36
  58. package/dist/C_Form.css +49 -50
  59. package/dist/C_Form2.cjs +1 -1
  60. package/dist/C_Form2.js +1 -1
  61. package/dist/C_FormModal.css +8 -8
  62. package/dist/C_FormModal2.cjs +1 -1
  63. package/dist/C_FormModal2.js +1 -1
  64. package/dist/C_FormSearch.css +45 -45
  65. package/dist/C_FormSearch2.cjs +1 -1
  66. package/dist/C_FormSearch2.js +1 -1
  67. package/dist/C_FormulaEditor.css +94 -55
  68. package/dist/C_FormulaEditor2.cjs +2 -2
  69. package/dist/C_FormulaEditor2.js +2 -2
  70. package/dist/C_FullCalendar.css +8 -1
  71. package/dist/C_FullCalendar2.cjs +1 -1
  72. package/dist/C_FullCalendar2.js +1 -1
  73. package/dist/C_GlobalSearch2.cjs +1 -1
  74. package/dist/C_GlobalSearch2.js +1 -1
  75. package/dist/C_Guide.css +14 -14
  76. package/dist/C_Guide2.cjs +1 -1
  77. package/dist/C_Guide2.js +1 -1
  78. package/dist/C_Icon.css +14 -14
  79. package/dist/C_Icon2.cjs +1 -1
  80. package/dist/C_Icon2.js +1 -1
  81. package/dist/C_ImageCropper.css +22 -22
  82. package/dist/C_ImageCropper2.cjs +1 -1
  83. package/dist/C_ImageCropper2.js +1 -1
  84. package/dist/C_Language.css +14 -14
  85. package/dist/C_Language2.cjs +1 -1
  86. package/dist/C_Language2.js +1 -1
  87. package/dist/C_Login.css +134 -134
  88. package/dist/C_Login2.cjs +1 -1
  89. package/dist/C_Login2.js +1 -1
  90. package/dist/C_Map.css +3 -3
  91. package/dist/C_Map2.cjs +1 -1
  92. package/dist/C_Map2.js +1 -1
  93. package/dist/C_Markdown.css +35 -35
  94. package/dist/C_Markdown2.cjs +1 -1
  95. package/dist/C_Markdown2.js +1 -1
  96. package/dist/C_Menu2.cjs +1 -1
  97. package/dist/C_Menu2.js +1 -1
  98. package/dist/C_NotificationCenter.css +30 -30
  99. package/dist/C_NotificationCenter2.cjs +1 -1
  100. package/dist/C_NotificationCenter2.js +1 -1
  101. package/dist/C_OrgChart.css +4 -0
  102. package/dist/C_OrgChart2.cjs +1 -1
  103. package/dist/C_OrgChart2.js +1 -1
  104. package/dist/C_Progress2.cjs +1 -1
  105. package/dist/C_Progress2.js +1 -1
  106. package/dist/C_QRCode.css +8 -8
  107. package/dist/C_QRCode2.cjs +1 -1
  108. package/dist/C_QRCode2.js +1 -1
  109. package/dist/C_Signature.css +14 -14
  110. package/dist/C_Signature2.cjs +1 -1
  111. package/dist/C_Signature2.js +1 -1
  112. package/dist/C_Skeleton2.cjs +1 -1
  113. package/dist/C_Skeleton2.js +1 -1
  114. package/dist/C_SplitPane.css +39 -39
  115. package/dist/C_SplitPane2.cjs +1 -1
  116. package/dist/C_SplitPane2.js +1 -1
  117. package/dist/C_Steps.css +48 -38
  118. package/dist/C_Steps2.cjs +1 -1
  119. package/dist/C_Steps2.js +1 -1
  120. package/dist/C_Table.base.css +160 -160
  121. package/dist/C_Table.css +173 -174
  122. package/dist/C_TagsView.css +52 -52
  123. package/dist/C_TagsView2.cjs +1 -1
  124. package/dist/C_TagsView2.js +1 -1
  125. package/dist/C_Theme.css +14 -14
  126. package/dist/C_Theme2.cjs +1 -1
  127. package/dist/C_Theme2.js +1 -1
  128. package/dist/C_Time.css +4 -4
  129. package/dist/C_Time2.cjs +1 -1
  130. package/dist/C_Time2.js +1 -1
  131. package/dist/C_Timeline.css +76 -58
  132. package/dist/C_Timeline2.cjs +1 -1
  133. package/dist/C_Timeline2.js +1 -1
  134. package/dist/C_Transfer.css +51 -51
  135. package/dist/C_Transfer2.cjs +1 -1
  136. package/dist/C_Transfer2.js +1 -1
  137. package/dist/C_Tree.css +35 -32
  138. package/dist/C_Tree2.cjs +1 -1
  139. package/dist/C_Tree2.js +1 -1
  140. package/dist/C_Upload.css +53 -50
  141. package/dist/C_Upload2.cjs +1 -1
  142. package/dist/C_Upload2.js +1 -1
  143. package/dist/C_VideoPlayer.css +17 -13
  144. package/dist/C_VideoPlayer2.cjs +2 -2
  145. package/dist/C_VideoPlayer2.js +2 -2
  146. package/dist/C_VtableGantt.css +19 -19
  147. package/dist/C_VtableGantt2.cjs +1 -1
  148. package/dist/C_VtableGantt2.js +1 -1
  149. package/dist/C_WaterFall.css +19 -15
  150. package/dist/C_WaterFall2.cjs +1 -1
  151. package/dist/C_WaterFall2.js +1 -1
  152. package/dist/C_WorkFlow.css +123 -123
  153. package/dist/C_WorkFlow2.cjs +1 -1
  154. package/dist/C_WorkFlow2.js +1 -1
  155. package/dist/constants.d.cts +4 -4
  156. package/dist/constants.d.ts +4 -4
  157. package/dist/constants2.d.cts +4 -4
  158. package/dist/constants2.d.ts +4 -4
  159. package/dist/constants3.d.cts +9 -5
  160. package/dist/constants3.d.ts +9 -5
  161. package/dist/constants4.d.cts +5 -5
  162. package/dist/constants4.d.ts +5 -5
  163. package/dist/constants5.d.cts +2 -2
  164. package/dist/constants5.d.ts +2 -2
  165. package/dist/data.d.cts +15 -15
  166. package/dist/data.d.ts +15 -15
  167. package/dist/data2.cjs +1 -1
  168. package/dist/data2.js +1 -1
  169. package/dist/index.cjs +1 -1
  170. package/dist/index.d.cts +0 -1
  171. package/dist/index.js +1 -1
  172. package/dist/index.vue.d.cts +2 -0
  173. package/dist/index.vue.d.ts +2 -0
  174. package/dist/index10.vue.d.cts +1 -1
  175. package/dist/index10.vue.d.ts +3 -3
  176. package/dist/index11.vue.d.cts +3 -3
  177. package/dist/index11.vue.d.ts +3 -3
  178. package/dist/index12.vue.d.cts +3 -3
  179. package/dist/index13.vue.d.ts +2 -2
  180. package/dist/index14.vue.d.cts +2 -2
  181. package/dist/index14.vue.d.ts +14 -47
  182. package/dist/index15.vue.d.cts +14 -47
  183. package/dist/index15.vue.d.ts +2 -2
  184. package/dist/index16.vue.d.cts +2 -2
  185. package/dist/index17.vue.d.ts +5 -5
  186. package/dist/index18.vue.d.cts +5 -5
  187. package/dist/index18.vue.d.ts +2 -2
  188. package/dist/index19.vue.d.cts +1 -1
  189. package/dist/index19.vue.d.ts +1 -1
  190. package/dist/index2.vue.d.cts +2 -2
  191. package/dist/index2.vue.d.ts +2 -2
  192. package/dist/index20.vue.d.cts +2 -2
  193. package/dist/index20.vue.d.ts +2 -2
  194. package/dist/index21.vue.d.cts +2 -2
  195. package/dist/index21.vue.d.ts +2 -2
  196. package/dist/index22.vue.d.cts +2 -2
  197. package/dist/index22.vue.d.ts +2 -2
  198. package/dist/index24.vue.d.cts +3 -3
  199. package/dist/index24.vue.d.ts +3 -3
  200. package/dist/index25.vue.d.cts +1 -1
  201. package/dist/index25.vue.d.ts +1 -1
  202. package/dist/index26.vue.d.cts +4 -4
  203. package/dist/index26.vue.d.ts +4 -4
  204. package/dist/index27.vue.d.cts +3 -3
  205. package/dist/index27.vue.d.ts +3 -3
  206. package/dist/index3.vue.d.cts +4 -4
  207. package/dist/index3.vue.d.ts +4 -4
  208. package/dist/index4.vue.d.cts +2 -2
  209. package/dist/index5.vue.d.ts +2 -2
  210. package/dist/index6.vue.d.cts +2 -2
  211. package/dist/index7.vue.d.ts +2 -2
  212. package/dist/index8.vue.d.cts +2 -2
  213. package/dist/index9.vue.d.ts +1 -1
  214. package/dist/mapUtils.d.cts +3 -3
  215. package/dist/mapUtils.d.ts +3 -3
  216. package/dist/presets.d.cts +1 -1
  217. package/dist/presets.d.ts +1 -1
  218. package/dist/style.css +1573 -1365
  219. package/dist/useCalendarEvents.d.cts +23 -18
  220. package/dist/useCalendarEvents.d.ts +23 -18
  221. package/dist/useCollapsePanel.d.cts +7 -6
  222. package/dist/useCollapsePanel.d.ts +7 -6
  223. package/dist/useCropperCore.d.cts +34 -19
  224. package/dist/useCropperCore.d.ts +34 -19
  225. package/dist/useDraggableLayout.d.cts +4 -4
  226. package/dist/useDraggableLayout.d.ts +4 -4
  227. package/dist/useDynamicFormState.d.cts +7 -2
  228. package/dist/useDynamicFormState.d.ts +7 -2
  229. package/dist/useEdgeInteraction.d.cts +19 -19
  230. package/dist/useEdgeInteraction.d.ts +19 -19
  231. package/dist/useFullscreen.d.cts +6 -6
  232. package/dist/useFullscreen.d.ts +6 -6
  233. package/dist/useInfiniteScroll.d.cts +4 -4
  234. package/dist/useInfiniteScroll.d.ts +4 -4
  235. package/dist/useQRCode.d.cts +5 -4
  236. package/dist/useQRCode.d.ts +5 -4
  237. package/dist/useSearchState.d.cts +9 -9
  238. package/dist/useSearchState.d.ts +9 -9
  239. package/dist/useSignatureHistory.d.cts +18 -10
  240. package/dist/useSignatureHistory.d.ts +18 -10
  241. package/dist/useSplitResize.d.cts +3 -3
  242. package/dist/useSplitResize.d.ts +3 -3
  243. package/dist/useTableQuery.cjs +3 -3
  244. package/dist/useTableQuery.d.cts +3 -6
  245. package/dist/useTableQuery.d.ts +3 -6
  246. package/dist/useTableQuery.js +3 -3
  247. package/dist/useTimeSelection.d.cts +8 -5
  248. package/dist/useTimeSelection.d.ts +8 -5
  249. package/dist/useTreeOperations.d.cts +8 -8
  250. package/dist/useTreeOperations.d.ts +8 -8
  251. package/dist/useWorkflowValidation.d.cts +10 -8
  252. package/dist/useWorkflowValidation.d.ts +10 -8
  253. package/dist/verification.d.cts +3 -3
  254. package/dist/verification.d.ts +3 -3
  255. package/package.json +4 -3
@@ -1,13 +1,17 @@
1
- /* unplugin-vue-components disabled */.c-waterfall[data-v-e5b37410] {
1
+ /* unplugin-vue-components disabled */.c-waterfall[data-v-f5a6939b] {
2
2
  width: 100%;
3
3
  }
4
- .waterfall__body[data-v-e5b37410] {
4
+ .waterfall__body[data-v-f5a6939b] {
5
5
  overflow: hidden;
6
6
  }
7
- .waterfall__item[data-v-e5b37410] {
7
+ .waterfall__item[data-v-f5a6939b] {
8
8
  cursor: pointer;
9
9
  }
10
- .waterfall__card[data-v-e5b37410] {
10
+ .waterfall__item[data-v-f5a6939b]:focus-visible {
11
+ outline: 2px solid var(--primary-color, #2080f0);
12
+ outline-offset: 2px;
13
+ }
14
+ .waterfall__card[data-v-f5a6939b] {
11
15
  overflow: hidden;
12
16
  border-radius: 8px;
13
17
  border: 1px solid var(--border-color);
@@ -15,36 +19,36 @@
15
19
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
16
20
  transition: box-shadow 0.2s ease, transform 0.2s ease;
17
21
  }
18
- .waterfall__card[data-v-e5b37410]:hover {
22
+ .waterfall__card[data-v-f5a6939b]:hover {
19
23
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
20
24
  transform: translateY(-2px);
21
25
  }
22
- .waterfall__image[data-v-e5b37410] {
26
+ .waterfall__image[data-v-f5a6939b] {
23
27
  display: block;
24
28
  width: 100%;
25
29
  object-fit: cover;
26
30
  background: var(--body-color);
27
31
  }
28
- .waterfall__title[data-v-e5b37410] {
32
+ .waterfall__title[data-v-f5a6939b] {
29
33
  padding: 10px 12px;
30
34
  font-size: 13px;
31
35
  line-height: 1.5;
32
36
  color: var(--text-color-1);
33
37
  word-break: break-all;
34
38
  }
35
- .waterfall__skeleton[data-v-e5b37410] {
39
+ .waterfall__skeleton[data-v-f5a6939b] {
36
40
  overflow: hidden;
37
41
  border-radius: 8px;
38
42
  }
39
- .waterfall__skeleton-inner[data-v-e5b37410] {
43
+ .waterfall__skeleton-inner[data-v-f5a6939b] {
40
44
  width: 100%;
41
45
  height: 100%;
42
46
  border-radius: 8px;
43
47
  background: linear-gradient(90deg, var(--body-color) 25%, color-mix(in srgb, var(--body-color) 80%, var(--border-color)) 37%, var(--body-color) 63%);
44
48
  background-size: 400% 100%;
45
- animation: shimmer-e5b37410 1.4s ease infinite;
49
+ animation: shimmer-f5a6939b 1.4s ease infinite;
46
50
  }
47
- @keyframes shimmer-e5b37410 {
51
+ @keyframes shimmer-f5a6939b {
48
52
  0% {
49
53
  background-position: 100% 50%;
50
54
  }
@@ -52,20 +56,20 @@
52
56
  background-position: 0 50%;
53
57
  }
54
58
  }
55
- .waterfall__footer[data-v-e5b37410] {
59
+ .waterfall__footer[data-v-f5a6939b] {
56
60
  padding: 24px 0;
57
61
  text-align: center;
58
62
  }
59
- .waterfall__sentinel[data-v-e5b37410] {
63
+ .waterfall__sentinel[data-v-f5a6939b] {
60
64
  height: 1px;
61
65
  }
62
- .waterfall__status[data-v-e5b37410] {
66
+ .waterfall__status[data-v-f5a6939b] {
63
67
  display: inline-flex;
64
68
  gap: 8px;
65
69
  align-items: center;
66
70
  font-size: 13px;
67
71
  color: var(--text-color-3);
68
72
  }
69
- .waterfall__status--done[data-v-e5b37410] {
73
+ .waterfall__status--done[data-v-f5a6939b] {
70
74
  color: var(--text-color-4);
71
75
  }
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./export-helper.cjs`);let t=require(`vue`),n=require(`naive-ui`);const r=[{minWidth:1600,columns:6},{minWidth:1200,columns:5},{minWidth:992,columns:4},{minWidth:768,columns:3},{minWidth:480,columns:2},{minWidth:0,columns:1}],i=[180,360];function a(e,n,i){let a=(0,t.ref)(4),o=(0,t.ref)(0);function s(e){if(n?.value&&n.value>0)return n.value;let t=[...i?.value?.length?i.value:r].sort((e,t)=>t.minWidth-e.minWidth);for(let n of t)if(e>=n.minWidth)return n.columns;return 1}let c=null;function l(){let t=e.value;if(!t)return;c=new ResizeObserver(e=>{for(let t of e){let{width:e}=t.contentRect;o.value=e,a.value=s(e)}}),c.observe(t);let n=t.getBoundingClientRect();o.value=n.width,a.value=s(n.width)}function u(){c?.disconnect(),c=null}return(0,t.onMounted)(l),(0,t.onBeforeUnmount)(u),(0,t.watch)(e,()=>{u(),l()}),(0,t.watch)([()=>n?.value,()=>i?.value],()=>{o.value>0&&(a.value=s(o.value))}),{columns:(0,t.readonly)(a),containerWidth:(0,t.readonly)(o)}}function o(e,n,r,i){let a=(0,t.ref)([]),o=(0,t.ref)(0),s=new Map;function c(e,t){s.set(e,t)}function l(){let t=n.value,c=r.value,l=i.value??16;if(t<=0||c<=0||e.value.length===0){a.value=[],o.value=0;return}let u=(c-(t-1)*l)/t,d=Array.from({length:t},(e,t)=>({index:t,height:0})),f=[];for(let t of e.value){let e=d.reduce((e,t)=>t.height<e.height?t:e),n=s.get(t.id)||(t.width>0?t.height/t.width*u:u),r=e.index*(u+l),i=e.height;f.push({item:t,columnIndex:e.index,x:r,y:i,width:u,height:n}),e.height=i+n+l}a.value=f,o.value=Math.max(...d.map(e=>e.height))-l}return(0,t.watch)([e,()=>e.value.length,n,r,i],l,{immediate:!0}),{layoutItems:(0,t.readonly)(a),containerHeight:(0,t.readonly)(o),cacheImageHeight:c,relayout:l}}function s(e,n,r,i,a){let o=(0,t.ref)(`idle`),s=null;function c(e){e[0]?.isIntersecting&&(!n.value||r.value||i.value||(o.value=`loading`,a()))}function l(){let t=e.value;!t||!n.value||(s=new IntersectionObserver(c,{rootMargin:`200px 0px`}),s.observe(t))}function u(){s?.disconnect(),s=null}return(0,t.watch)([r,i],()=>{i.value?o.value=`no-more`:r.value?o.value=`loading`:o.value=`idle`}),(0,t.onMounted)(l),(0,t.onBeforeUnmount)(u),(0,t.watch)([e,n],()=>{u(),l()}),{status:(0,t.readonly)(o)}}const c=[`onClick`],l={class:`waterfall__card`},u=[`src`,`alt`,`loading`,`onLoad`,`onError`],d={key:0,class:`waterfall__title`},f={key:0,class:`waterfall__footer`},p={key:0,class:`waterfall__status`},m={key:1,class:`waterfall__status waterfall__status--done`},h=(0,t.defineComponent)({name:`C_WaterFall`,__name:`index`,props:{items:{},columns:{default:void 0},gap:{default:16},lazy:{type:Boolean,default:!0},infinite:{type:Boolean,default:!1},skeleton:{type:Boolean,default:!0},skeletonCount:{default:8},animationDuration:{default:300},breakpoints:{default:void 0},loading:{type:Boolean,default:!1},noMore:{type:Boolean,default:!1}},emits:[`load-more`,`item-click`,`image-loaded`,`image-error`],setup(e,{expose:r,emit:h}){let g=e,_=h,v=(0,t.ref)(),y=(0,t.ref)(),{columns:b,containerWidth:x}=a(v,(0,t.computed)(()=>g.columns),(0,t.computed)(()=>g.breakpoints)),{layoutItems:S,containerHeight:C,cacheImageHeight:w,relayout:T}=o((0,t.computed)(()=>g.items),b,x,(0,t.computed)(()=>g.gap)),E=(0,t.computed)(()=>g.skeleton&&g.loading&&S.value.length===0),D=(0,t.computed)(()=>{let e=b.value,t=x.value,n=g.gap;if(e<=0||t<=0)return[];let r=(t-(e-1)*n)/e,a=g.skeletonCount??8,o=Array(e).fill(0),s=[];for(let e=0;e<a;e++){let e=o.indexOf(Math.min(...o)),t=i[0]+Math.random()*(i[1]-i[0]);s.push({x:e*(r+n),y:o[e],width:r,height:t}),o[e]+=t+n}return s}),O=(0,t.computed)(()=>D.value.length===0?0:Math.max(...D.value.map(e=>e.y+e.height))),k=(0,t.computed)(()=>E.value?O.value:C.value),{status:A}=s(y,(0,t.computed)(()=>g.infinite),(0,t.computed)(()=>g.loading),(0,t.computed)(()=>g.noMore),()=>_(`load-more`));function j(e,t){let n=t.target;if(n.naturalHeight&&n.naturalWidth){let t=n.naturalHeight/n.naturalWidth*e.width;w(e.item.id,t)}_(`image-loaded`,e.item)}function M(e){_(`image-error`,e.item)}function N(){v.value?.scrollIntoView({behavior:`smooth`,block:`start`})}return r({relayout:T,scrollToTop:N,getColumns:()=>b.value,getContainerHeight:()=>C.value}),(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{ref_key:`containerRef`,ref:v,class:`c-waterfall`},[(0,t.createElementVNode)(`div`,{class:`waterfall__body`,style:(0,t.normalizeStyle)({height:`${k.value}px`,position:`relative`})},[E.value?((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,{key:0},(0,t.renderList)(D.value,(n,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:`sk-${i}`,class:`waterfall__skeleton`,style:(0,t.normalizeStyle)({position:`absolute`,left:`${n.x}px`,top:`${n.y}px`,width:`${n.width}px`,height:`${n.height}px`,transition:`all ${g.animationDuration??(0,t.unref)(300)}ms ease`})},[(0,t.renderSlot)(e.$slots,`skeleton`,{},()=>[r[0]||=(0,t.createElementVNode)(`div`,{class:`waterfall__skeleton-inner`},null,-1)],!0)],4))),128)):(0,t.createCommentVNode)(`v-if`,!0),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(S),(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:n.item.id,class:`waterfall__item`,style:(0,t.normalizeStyle)({position:`absolute`,left:`${n.x}px`,top:`${n.y}px`,width:`${n.width}px`,transition:`all ${g.animationDuration??(0,t.unref)(300)}ms ease`}),onClick:e=>_(`item-click`,n.item,r)},[(0,t.renderSlot)(e.$slots,`item`,{item:n.item,index:r,width:n.width,height:n.height},()=>[(0,t.createElementVNode)(`div`,l,[(0,t.createElementVNode)(`img`,{src:n.item.src,alt:n.item.title||``,loading:g.lazy?`lazy`:`eager`,class:`waterfall__image`,style:(0,t.normalizeStyle)({height:`${n.height}px`}),onLoad:e=>j(n,e),onError:e=>M(n)},null,44,u),n.item.title?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,d,(0,t.toDisplayString)(n.item.title),1)):(0,t.createCommentVNode)(`v-if`,!0)])],!0)],12,c))),128))],4),g.infinite?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,f,[(0,t.createElementVNode)(`div`,{ref_key:`sentinelRef`,ref:y,class:`waterfall__sentinel`},null,512),(0,t.renderSlot)(e.$slots,`footer`,{status:(0,t.unref)(A)},()=>[g.loading?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,p,[(0,t.createVNode)((0,t.unref)(n.NSpin),{size:`small`}),r[1]||=(0,t.createElementVNode)(`span`,null,`加载中…`,-1)])):g.noMore?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,m,` 没有更多了 `)):(0,t.createCommentVNode)(`v-if`,!0)],!0)])):(0,t.createCommentVNode)(`v-if`,!0)],512))}});var g=e.t(h,[[`__scopeId`,`data-v-e5b37410`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return 300}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return 8}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return 200}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return 16}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return i}});
1
+ require(`./chunk.cjs`);const e=require(`./export-helper.cjs`);let t=require(`vue`),n=require(`naive-ui`);const r=[{minWidth:1600,columns:6},{minWidth:1200,columns:5},{minWidth:992,columns:4},{minWidth:768,columns:3},{minWidth:480,columns:2},{minWidth:0,columns:1}],i=[180,360];function a(e,n,i){let a=(0,t.ref)(4),o=(0,t.ref)(0);function s(e){if(n?.value&&n.value>0)return n.value;let t=[...i?.value?.length?i.value:r].sort((e,t)=>t.minWidth-e.minWidth);for(let n of t)if(e>=n.minWidth)return n.columns;return 1}let c=null;function l(){let t=e.value;if(!t)return;c=new ResizeObserver(e=>{for(let t of e){let{width:e}=t.contentRect;o.value=e,a.value=s(e)}}),c.observe(t);let n=t.getBoundingClientRect();o.value=n.width,a.value=s(n.width)}function u(){c?.disconnect(),c=null}return(0,t.onMounted)(l),(0,t.onBeforeUnmount)(u),(0,t.watch)(e,()=>{u(),l()}),(0,t.watch)([()=>n?.value,()=>i?.value],()=>{o.value>0&&(a.value=s(o.value))}),{columns:(0,t.readonly)(a),containerWidth:(0,t.readonly)(o)}}function o(e,n,r,i){let a=(0,t.ref)([]),o=(0,t.ref)(0),s=new Map;function c(e,t,n){let r=e/t;return Number.isFinite(r)&&r>0?r*n:n}function l(e,t){let n=s.get(e.id),r=n?.src&&n.src!==e.src?void 0:n;return r&&!r.basisWidth?r.height:r?.basisWidth?c(r.height,r.basisWidth,t):c(e.height,e.width,t)}function u(){a.value=[],o.value=0,e.value.length===0&&s.clear()}function d(t,n,r){return Number.isFinite(t)&&Number.isFinite(n)&&Number.isFinite(r)&&n>0&&e.value.length>0}function f(e,t,n,r){if(!Number.isFinite(t)||t<=0||n!==void 0&&(!Number.isFinite(n)||n<=0))return;let i=s.get(e);i?.height===t&&i.basisWidth===n&&i.src===r||(s.set(e,{height:t,basisWidth:n,src:r}),p())}function p(){let t=Math.min(24,Math.max(1,Math.floor(n.value))),c=r.value,f=Math.max(0,i.value??16);if(!d(t,c,f)){u();return}let p=(c-(t-1)*f)/t;if(p<=0){u();return}let m=Array.from({length:t},(e,t)=>({index:t,height:0})),h=[],g=new Set;for(let t of e.value){g.add(t.id);let e=m.reduce((e,t)=>t.height<e.height?t:e),n=l(t,p),r=e.index*(p+f),i=e.height;h.push({item:t,columnIndex:e.index,x:r,y:i,width:p,height:n}),e.height=i+n+f}for(let e of s.keys())g.has(e)||s.delete(e);a.value=h,o.value=Math.max(...m.map(e=>e.height))-f}return(0,t.watch)([e,()=>e.value.length,n,r,i],p,{immediate:!0}),{layoutItems:(0,t.readonly)(a),containerHeight:(0,t.readonly)(o),cacheImageHeight:f,relayout:p}}function s(e,n,r,i,a){let o=(0,t.ref)(`idle`),s=null,c=!1;function l(e){if(!e[0]?.isIntersecting){c=!1;return}!n.value||r.value||i.value||c||(c=!0,o.value=`loading`,a())}function u(){let t=e.value;!t||!n.value||(s=new IntersectionObserver(l,{rootMargin:`200px 0px`}),s.observe(t))}function d(){s?.disconnect(),s=null,c=!1}return(0,t.watch)([r,i],()=>{i.value?o.value=`no-more`:r.value?o.value=`loading`:(o.value=`idle`,c=!1)}),(0,t.onMounted)(u),(0,t.onBeforeUnmount)(d),(0,t.watch)([e,n],()=>{d(),u()}),{status:(0,t.readonly)(o)}}const c=[`aria-label`,`onClick`,`onKeydown`],l={class:`waterfall__card`},u=[`src`,`alt`,`loading`,`onLoad`,`onError`],d={key:0,class:`waterfall__title`},f={key:0,class:`waterfall__footer`},p={key:0,class:`waterfall__status`},m={key:1,class:`waterfall__status waterfall__status--done`},h=(0,t.defineComponent)({name:`C_WaterFall`,__name:`index`,props:{items:{},columns:{default:void 0},gap:{default:16},lazy:{type:Boolean,default:!0},infinite:{type:Boolean,default:!1},skeleton:{type:Boolean,default:!0},skeletonCount:{default:8},animationDuration:{default:300},breakpoints:{default:void 0},loading:{type:Boolean,default:!1},noMore:{type:Boolean,default:!1}},emits:[`load-more`,`item-click`,`image-loaded`,`image-error`],setup(e,{expose:r,emit:h}){let g=e,_=h,v=(0,t.ref)(),y=(0,t.ref)(),{columns:b,containerWidth:x}=a(v,(0,t.computed)(()=>g.columns),(0,t.computed)(()=>g.breakpoints)),{layoutItems:S,containerHeight:C,cacheImageHeight:w,relayout:T}=o((0,t.computed)(()=>g.items),b,x,(0,t.computed)(()=>g.gap)),E=(0,t.computed)(()=>g.skeleton&&g.loading&&S.value.length===0),D=(0,t.computed)(()=>{let e=Math.min(24,Math.max(1,Math.floor(b.value))),t=x.value,n=Math.max(0,g.gap);if(!Number.isFinite(e)||t<=0)return[];let r=(t-(e-1)*n)/e;if(r<=0)return[];let a=Math.min(100,Math.max(0,Math.floor(g.skeletonCount??8))),o=Array(e).fill(0),s=[];for(let e=0;e<a;e++){let t=o.indexOf(Math.min(...o)),a=i[0]+e*73%(i[1]-i[0]);s.push({x:t*(r+n),y:o[t],width:r,height:a}),o[t]+=a+n}return s}),O=(0,t.computed)(()=>D.value.length===0?0:Math.max(...D.value.map(e=>e.y+e.height))),k=(0,t.computed)(()=>E.value?O.value:C.value),{status:A}=s(y,(0,t.computed)(()=>g.infinite),(0,t.computed)(()=>g.loading),(0,t.computed)(()=>g.noMore),()=>_(`load-more`));function j(e,t){let n=t.target;if(n.naturalHeight&&n.naturalWidth){let t=n.naturalHeight/n.naturalWidth*e.width;w(e.item.id,t,e.width,e.item.src)}_(`image-loaded`,e.item)}function M(e){_(`image-error`,e.item)}function N(){v.value?.scrollIntoView({behavior:`smooth`,block:`start`})}return r({relayout:T,scrollToTop:N,getColumns:()=>b.value,getContainerHeight:()=>C.value}),(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{ref_key:`containerRef`,ref:v,class:`c-waterfall`},[(0,t.createElementVNode)(`div`,{class:`waterfall__body`,style:(0,t.normalizeStyle)({height:`${k.value}px`,position:`relative`})},[E.value?((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,{key:0},(0,t.renderList)(D.value,(n,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:`sk-${i}`,class:`waterfall__skeleton`,style:(0,t.normalizeStyle)({position:`absolute`,left:`${n.x}px`,top:`${n.y}px`,width:`${n.width}px`,height:`${n.height}px`,transition:`all ${g.animationDuration??(0,t.unref)(300)}ms ease`})},[(0,t.renderSlot)(e.$slots,`skeleton`,{},()=>[r[0]||=(0,t.createElementVNode)(`div`,{class:`waterfall__skeleton-inner`},null,-1)],!0)],4))),128)):(0,t.createCommentVNode)(`v-if`,!0),((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)((0,t.unref)(S),(n,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:n.item.id,class:`waterfall__item`,role:`button`,tabindex:`0`,"aria-label":n.item.title||`瀑布流项目 ${r+1}`,style:(0,t.normalizeStyle)({position:`absolute`,left:`${n.x}px`,top:`${n.y}px`,width:`${n.width}px`,transition:`all ${g.animationDuration??(0,t.unref)(300)}ms ease`}),onClick:e=>_(`item-click`,n.item,r),onKeydown:[(0,t.withKeys)(e=>_(`item-click`,n.item,r),[`enter`]),(0,t.withKeys)((0,t.withModifiers)(e=>_(`item-click`,n.item,r),[`prevent`]),[`space`])]},[(0,t.renderSlot)(e.$slots,`item`,{item:n.item,index:r,width:n.width,height:n.height},()=>[(0,t.createElementVNode)(`div`,l,[(0,t.createElementVNode)(`img`,{src:n.item.src,alt:n.item.title||``,loading:g.lazy?`lazy`:`eager`,class:`waterfall__image`,style:(0,t.normalizeStyle)({height:`${n.height}px`}),onLoad:e=>j(n,e),onError:e=>M(n)},null,44,u),n.item.title?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,d,(0,t.toDisplayString)(n.item.title),1)):(0,t.createCommentVNode)(`v-if`,!0)])],!0)],44,c))),128))],4),g.infinite?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,f,[(0,t.createElementVNode)(`div`,{ref_key:`sentinelRef`,ref:y,class:`waterfall__sentinel`},null,512),(0,t.renderSlot)(e.$slots,`footer`,{status:(0,t.unref)(A)},()=>[g.loading?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,p,[(0,t.createVNode)((0,t.unref)(n.NSpin),{size:`small`}),r[1]||=(0,t.createElementVNode)(`span`,null,`加载中…`,-1)])):g.noMore?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,m,` 没有更多了 `)):(0,t.createCommentVNode)(`v-if`,!0)],!0)])):(0,t.createCommentVNode)(`v-if`,!0)],512))}});var g=e.t(h,[[`__scopeId`,`data-v-f5a6939b`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return 300}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return 8}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return 200}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return 16}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return i}});
@@ -1 +1 @@
1
- import{t as e}from"./export-helper.js";import{Fragment as t,computed as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createVNode as o,defineComponent as s,normalizeStyle as c,onBeforeUnmount as l,onMounted as u,openBlock as d,readonly as f,ref as p,renderList as m,renderSlot as h,toDisplayString as g,unref as _,watch as v}from"vue";import{NSpin as y}from"naive-ui";const b=16,x=300,S=8,C=200,w=[{minWidth:1600,columns:6},{minWidth:1200,columns:5},{minWidth:992,columns:4},{minWidth:768,columns:3},{minWidth:480,columns:2},{minWidth:0,columns:1}],T=[180,360];function E(e,t,n){let r=p(4),i=p(0);function a(e){if(t?.value&&t.value>0)return t.value;let r=[...n?.value?.length?n.value:w].sort((e,t)=>t.minWidth-e.minWidth);for(let t of r)if(e>=t.minWidth)return t.columns;return 1}let o=null;function s(){let t=e.value;if(!t)return;o=new ResizeObserver(e=>{for(let t of e){let{width:e}=t.contentRect;i.value=e,r.value=a(e)}}),o.observe(t);let n=t.getBoundingClientRect();i.value=n.width,r.value=a(n.width)}function c(){o?.disconnect(),o=null}return u(s),l(c),v(e,()=>{c(),s()}),v([()=>t?.value,()=>n?.value],()=>{i.value>0&&(r.value=a(i.value))}),{columns:f(r),containerWidth:f(i)}}function D(e,t,n,r){let i=p([]),a=p(0),o=new Map;function s(e,t){o.set(e,t)}function c(){let s=t.value,c=n.value,l=r.value??16;if(s<=0||c<=0||e.value.length===0){i.value=[],a.value=0;return}let u=(c-(s-1)*l)/s,d=Array.from({length:s},(e,t)=>({index:t,height:0})),f=[];for(let t of e.value){let e=d.reduce((e,t)=>t.height<e.height?t:e),n=o.get(t.id)||(t.width>0?t.height/t.width*u:u),r=e.index*(u+l),i=e.height;f.push({item:t,columnIndex:e.index,x:r,y:i,width:u,height:n}),e.height=i+n+l}i.value=f,a.value=Math.max(...d.map(e=>e.height))-l}return v([e,()=>e.value.length,t,n,r],c,{immediate:!0}),{layoutItems:f(i),containerHeight:f(a),cacheImageHeight:s,relayout:c}}function O(e,t,n,r,i){let a=p(`idle`),o=null;function s(e){e[0]?.isIntersecting&&(!t.value||n.value||r.value||(a.value=`loading`,i()))}function c(){let n=e.value;!n||!t.value||(o=new IntersectionObserver(s,{rootMargin:`200px 0px`}),o.observe(n))}function d(){o?.disconnect(),o=null}return v([n,r],()=>{r.value?a.value=`no-more`:n.value?a.value=`loading`:a.value=`idle`}),u(c),l(d),v([e,t],()=>{d(),c()}),{status:f(a)}}const k=[`onClick`],A={class:`waterfall__card`},j=[`src`,`alt`,`loading`,`onLoad`,`onError`],M={key:0,class:`waterfall__title`},N={key:0,class:`waterfall__footer`},P={key:0,class:`waterfall__status`},F={key:1,class:`waterfall__status waterfall__status--done`};var I=e(s({name:`C_WaterFall`,__name:`index`,props:{items:{},columns:{default:void 0},gap:{default:16},lazy:{type:Boolean,default:!0},infinite:{type:Boolean,default:!1},skeleton:{type:Boolean,default:!0},skeletonCount:{default:8},animationDuration:{default:300},breakpoints:{default:void 0},loading:{type:Boolean,default:!1},noMore:{type:Boolean,default:!1}},emits:[`load-more`,`item-click`,`image-loaded`,`image-error`],setup(e,{expose:s,emit:l}){let u=e,f=l,v=p(),b=p(),{columns:x,containerWidth:S}=E(v,n(()=>u.columns),n(()=>u.breakpoints)),{layoutItems:C,containerHeight:w,cacheImageHeight:I,relayout:L}=D(n(()=>u.items),x,S,n(()=>u.gap)),R=n(()=>u.skeleton&&u.loading&&C.value.length===0),z=n(()=>{let e=x.value,t=S.value,n=u.gap;if(e<=0||t<=0)return[];let r=(t-(e-1)*n)/e,i=u.skeletonCount??8,a=Array(e).fill(0),o=[];for(let e=0;e<i;e++){let e=a.indexOf(Math.min(...a)),t=T[0]+Math.random()*(T[1]-T[0]);o.push({x:e*(r+n),y:a[e],width:r,height:t}),a[e]+=t+n}return o}),B=n(()=>z.value.length===0?0:Math.max(...z.value.map(e=>e.y+e.height))),V=n(()=>R.value?B.value:w.value),{status:H}=O(b,n(()=>u.infinite),n(()=>u.loading),n(()=>u.noMore),()=>f(`load-more`));function U(e,t){let n=t.target;if(n.naturalHeight&&n.naturalWidth){let t=n.naturalHeight/n.naturalWidth*e.width;I(e.item.id,t)}f(`image-loaded`,e.item)}function W(e){f(`image-error`,e.item)}function G(){v.value?.scrollIntoView({behavior:`smooth`,block:`start`})}return s({relayout:L,scrollToTop:G,getColumns:()=>x.value,getContainerHeight:()=>w.value}),(e,n)=>(d(),i(`div`,{ref_key:`containerRef`,ref:v,class:`c-waterfall`},[a(`div`,{class:`waterfall__body`,style:c({height:`${V.value}px`,position:`relative`})},[R.value?(d(!0),i(t,{key:0},m(z.value,(t,r)=>(d(),i(`div`,{key:`sk-${r}`,class:`waterfall__skeleton`,style:c({position:`absolute`,left:`${t.x}px`,top:`${t.y}px`,width:`${t.width}px`,height:`${t.height}px`,transition:`all ${u.animationDuration??_(300)}ms ease`})},[h(e.$slots,`skeleton`,{},()=>[n[0]||=a(`div`,{class:`waterfall__skeleton-inner`},null,-1)],!0)],4))),128)):r(`v-if`,!0),(d(!0),i(t,null,m(_(C),(t,n)=>(d(),i(`div`,{key:t.item.id,class:`waterfall__item`,style:c({position:`absolute`,left:`${t.x}px`,top:`${t.y}px`,width:`${t.width}px`,transition:`all ${u.animationDuration??_(300)}ms ease`}),onClick:e=>f(`item-click`,t.item,n)},[h(e.$slots,`item`,{item:t.item,index:n,width:t.width,height:t.height},()=>[a(`div`,A,[a(`img`,{src:t.item.src,alt:t.item.title||``,loading:u.lazy?`lazy`:`eager`,class:`waterfall__image`,style:c({height:`${t.height}px`}),onLoad:e=>U(t,e),onError:e=>W(t)},null,44,j),t.item.title?(d(),i(`div`,M,g(t.item.title),1)):r(`v-if`,!0)])],!0)],12,k))),128))],4),u.infinite?(d(),i(`div`,N,[a(`div`,{ref_key:`sentinelRef`,ref:b,class:`waterfall__sentinel`},null,512),h(e.$slots,`footer`,{status:_(H)},()=>[u.loading?(d(),i(`div`,P,[o(_(y),{size:`small`}),n[1]||=a(`span`,null,`加载中…`,-1)])):u.noMore?(d(),i(`div`,F,` 没有更多了 `)):r(`v-if`,!0)],!0)])):r(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-e5b37410`]]);export{x as a,S as c,E as i,C as l,O as n,w as o,D as r,b as s,I as t,T as u};
1
+ import{t as e}from"./export-helper.js";import{Fragment as t,computed as n,createCommentVNode as r,createElementBlock as i,createElementVNode as a,createVNode as o,defineComponent as s,normalizeStyle as c,onBeforeUnmount as l,onMounted as u,openBlock as d,readonly as f,ref as p,renderList as m,renderSlot as h,toDisplayString as g,unref as _,watch as v,withKeys as y,withModifiers as b}from"vue";import{NSpin as x}from"naive-ui";const S=16,C=300,w=8,T=200,E=[{minWidth:1600,columns:6},{minWidth:1200,columns:5},{minWidth:992,columns:4},{minWidth:768,columns:3},{minWidth:480,columns:2},{minWidth:0,columns:1}],D=[180,360];function O(e,t,n){let r=p(4),i=p(0);function a(e){if(t?.value&&t.value>0)return t.value;let r=[...n?.value?.length?n.value:E].sort((e,t)=>t.minWidth-e.minWidth);for(let t of r)if(e>=t.minWidth)return t.columns;return 1}let o=null;function s(){let t=e.value;if(!t)return;o=new ResizeObserver(e=>{for(let t of e){let{width:e}=t.contentRect;i.value=e,r.value=a(e)}}),o.observe(t);let n=t.getBoundingClientRect();i.value=n.width,r.value=a(n.width)}function c(){o?.disconnect(),o=null}return u(s),l(c),v(e,()=>{c(),s()}),v([()=>t?.value,()=>n?.value],()=>{i.value>0&&(r.value=a(i.value))}),{columns:f(r),containerWidth:f(i)}}function k(e,t,n,r){let i=p([]),a=p(0),o=new Map;function s(e,t,n){let r=e/t;return Number.isFinite(r)&&r>0?r*n:n}function c(e,t){let n=o.get(e.id),r=n?.src&&n.src!==e.src?void 0:n;return r&&!r.basisWidth?r.height:r?.basisWidth?s(r.height,r.basisWidth,t):s(e.height,e.width,t)}function l(){i.value=[],a.value=0,e.value.length===0&&o.clear()}function u(t,n,r){return Number.isFinite(t)&&Number.isFinite(n)&&Number.isFinite(r)&&n>0&&e.value.length>0}function d(e,t,n,r){if(!Number.isFinite(t)||t<=0||n!==void 0&&(!Number.isFinite(n)||n<=0))return;let i=o.get(e);i?.height===t&&i.basisWidth===n&&i.src===r||(o.set(e,{height:t,basisWidth:n,src:r}),m())}function m(){let s=Math.min(24,Math.max(1,Math.floor(t.value))),d=n.value,f=Math.max(0,r.value??16);if(!u(s,d,f)){l();return}let p=(d-(s-1)*f)/s;if(p<=0){l();return}let m=Array.from({length:s},(e,t)=>({index:t,height:0})),h=[],g=new Set;for(let t of e.value){g.add(t.id);let e=m.reduce((e,t)=>t.height<e.height?t:e),n=c(t,p),r=e.index*(p+f),i=e.height;h.push({item:t,columnIndex:e.index,x:r,y:i,width:p,height:n}),e.height=i+n+f}for(let e of o.keys())g.has(e)||o.delete(e);i.value=h,a.value=Math.max(...m.map(e=>e.height))-f}return v([e,()=>e.value.length,t,n,r],m,{immediate:!0}),{layoutItems:f(i),containerHeight:f(a),cacheImageHeight:d,relayout:m}}function A(e,t,n,r,i){let a=p(`idle`),o=null,s=!1;function c(e){if(!e[0]?.isIntersecting){s=!1;return}!t.value||n.value||r.value||s||(s=!0,a.value=`loading`,i())}function d(){let n=e.value;!n||!t.value||(o=new IntersectionObserver(c,{rootMargin:`200px 0px`}),o.observe(n))}function m(){o?.disconnect(),o=null,s=!1}return v([n,r],()=>{r.value?a.value=`no-more`:n.value?a.value=`loading`:(a.value=`idle`,s=!1)}),u(d),l(m),v([e,t],()=>{m(),d()}),{status:f(a)}}const j=[`aria-label`,`onClick`,`onKeydown`],M={class:`waterfall__card`},N=[`src`,`alt`,`loading`,`onLoad`,`onError`],P={key:0,class:`waterfall__title`},F={key:0,class:`waterfall__footer`},I={key:0,class:`waterfall__status`},L={key:1,class:`waterfall__status waterfall__status--done`};var R=e(s({name:`C_WaterFall`,__name:`index`,props:{items:{},columns:{default:void 0},gap:{default:16},lazy:{type:Boolean,default:!0},infinite:{type:Boolean,default:!1},skeleton:{type:Boolean,default:!0},skeletonCount:{default:8},animationDuration:{default:300},breakpoints:{default:void 0},loading:{type:Boolean,default:!1},noMore:{type:Boolean,default:!1}},emits:[`load-more`,`item-click`,`image-loaded`,`image-error`],setup(e,{expose:s,emit:l}){let u=e,f=l,v=p(),S=p(),{columns:C,containerWidth:w}=O(v,n(()=>u.columns),n(()=>u.breakpoints)),{layoutItems:T,containerHeight:E,cacheImageHeight:R,relayout:z}=k(n(()=>u.items),C,w,n(()=>u.gap)),B=n(()=>u.skeleton&&u.loading&&T.value.length===0),V=n(()=>{let e=Math.min(24,Math.max(1,Math.floor(C.value))),t=w.value,n=Math.max(0,u.gap);if(!Number.isFinite(e)||t<=0)return[];let r=(t-(e-1)*n)/e;if(r<=0)return[];let i=Math.min(100,Math.max(0,Math.floor(u.skeletonCount??8))),a=Array(e).fill(0),o=[];for(let e=0;e<i;e++){let t=a.indexOf(Math.min(...a)),i=D[0]+e*73%(D[1]-D[0]);o.push({x:t*(r+n),y:a[t],width:r,height:i}),a[t]+=i+n}return o}),H=n(()=>V.value.length===0?0:Math.max(...V.value.map(e=>e.y+e.height))),U=n(()=>B.value?H.value:E.value),{status:W}=A(S,n(()=>u.infinite),n(()=>u.loading),n(()=>u.noMore),()=>f(`load-more`));function G(e,t){let n=t.target;if(n.naturalHeight&&n.naturalWidth){let t=n.naturalHeight/n.naturalWidth*e.width;R(e.item.id,t,e.width,e.item.src)}f(`image-loaded`,e.item)}function K(e){f(`image-error`,e.item)}function q(){v.value?.scrollIntoView({behavior:`smooth`,block:`start`})}return s({relayout:z,scrollToTop:q,getColumns:()=>C.value,getContainerHeight:()=>E.value}),(e,n)=>(d(),i(`div`,{ref_key:`containerRef`,ref:v,class:`c-waterfall`},[a(`div`,{class:`waterfall__body`,style:c({height:`${U.value}px`,position:`relative`})},[B.value?(d(!0),i(t,{key:0},m(V.value,(t,r)=>(d(),i(`div`,{key:`sk-${r}`,class:`waterfall__skeleton`,style:c({position:`absolute`,left:`${t.x}px`,top:`${t.y}px`,width:`${t.width}px`,height:`${t.height}px`,transition:`all ${u.animationDuration??_(300)}ms ease`})},[h(e.$slots,`skeleton`,{},()=>[n[0]||=a(`div`,{class:`waterfall__skeleton-inner`},null,-1)],!0)],4))),128)):r(`v-if`,!0),(d(!0),i(t,null,m(_(T),(t,n)=>(d(),i(`div`,{key:t.item.id,class:`waterfall__item`,role:`button`,tabindex:`0`,"aria-label":t.item.title||`瀑布流项目 ${n+1}`,style:c({position:`absolute`,left:`${t.x}px`,top:`${t.y}px`,width:`${t.width}px`,transition:`all ${u.animationDuration??_(300)}ms ease`}),onClick:e=>f(`item-click`,t.item,n),onKeydown:[y(e=>f(`item-click`,t.item,n),[`enter`]),y(b(e=>f(`item-click`,t.item,n),[`prevent`]),[`space`])]},[h(e.$slots,`item`,{item:t.item,index:n,width:t.width,height:t.height},()=>[a(`div`,M,[a(`img`,{src:t.item.src,alt:t.item.title||``,loading:u.lazy?`lazy`:`eager`,class:`waterfall__image`,style:c({height:`${t.height}px`}),onLoad:e=>G(t,e),onError:e=>K(t)},null,44,N),t.item.title?(d(),i(`div`,P,g(t.item.title),1)):r(`v-if`,!0)])],!0)],44,j))),128))],4),u.infinite?(d(),i(`div`,F,[a(`div`,{ref_key:`sentinelRef`,ref:S,class:`waterfall__sentinel`},null,512),h(e.$slots,`footer`,{status:_(W)},()=>[u.loading?(d(),i(`div`,I,[o(_(x),{size:`small`}),n[1]||=a(`span`,null,`加载中…`,-1)])):u.noMore?(d(),i(`div`,L,` 没有更多了 `)):r(`v-if`,!0)],!0)])):r(`v-if`,!0)],512))}}),[[`__scopeId`,`data-v-f5a6939b`]]);export{C as a,w as c,O as i,T as l,A as n,E as o,k as r,S as s,R as t,D as u};