vane-waterfall 1.0.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/README.md +174 -365
  2. package/dist/chunks/WaterfallCore-BSXw7bl_.js +581 -0
  3. package/dist/chunks/doc-3Fpag2G8.js +84 -0
  4. package/dist/chunks/doc-78xF08vt.js +82 -0
  5. package/dist/chunks/doc-B-7dugGv.js +79 -0
  6. package/dist/chunks/doc-B6kLfMPv.js +121 -0
  7. package/dist/chunks/doc-BCGQ8Cp5.js +114 -0
  8. package/dist/chunks/doc-BIzjYAZW.js +50 -0
  9. package/dist/chunks/doc-BP0DmB7-.js +91 -0
  10. package/dist/chunks/doc-BXElhF2h.js +138 -0
  11. package/dist/chunks/doc-BXSy2aPP.js +59 -0
  12. package/dist/chunks/doc-BfWnfTst.js +83 -0
  13. package/dist/chunks/doc-BtzhgTYj.js +85 -0
  14. package/dist/chunks/doc-C5xrHNoC.js +70 -0
  15. package/dist/chunks/doc-CBHjiDG7.js +88 -0
  16. package/dist/chunks/doc-CTUoMe7o.js +79 -0
  17. package/dist/chunks/doc-CcPFavOs.js +56 -0
  18. package/dist/chunks/doc-CraXjOaA.js +68 -0
  19. package/dist/chunks/doc-DElLNjIc.js +61 -0
  20. package/dist/chunks/doc-DJjxOYzW.js +111 -0
  21. package/dist/chunks/doc-DukOmDCo.js +95 -0
  22. package/dist/chunks/doc-DzvTrZ13.js +60 -0
  23. package/dist/chunks/doc-NhL4Ux8q.js +125 -0
  24. package/dist/chunks/doc-bTHwfIVb.js +78 -0
  25. package/dist/chunks/doc-f4Uijujv.js +102 -0
  26. package/dist/chunks/doc-gTAsLjVx.js +55 -0
  27. package/dist/chunks/doc-j4W9SUrY.js +76 -0
  28. package/dist/chunks/doc-kTbJE7rY.js +92 -0
  29. package/dist/chunks/index-BAWlVYr3.js +5 -0
  30. package/dist/chunks/index-COaun3nf.js +15 -0
  31. package/dist/chunks/index-DXAtA2f6.js +11 -0
  32. package/dist/chunks/index-DsRLmBW-.js +13 -0
  33. package/dist/chunks/index-gjoCq0yC.js +21 -0
  34. package/dist/chunks/index-wLI6UXkY.js +5 -0
  35. package/dist/chunks/withPlugins-DLoKg4AP.js +559 -0
  36. package/dist/components/WaterfallPlugin/WaterfallCore.d.ts +124 -0
  37. package/dist/components/WaterfallPlugin/WaterfallCore.d.ts.map +1 -0
  38. package/dist/components/WaterfallPlugin/index.d.ts +9 -10
  39. package/dist/components/WaterfallPlugin/index.d.ts.map +1 -0
  40. package/dist/components/WaterfallPlugin/layout.d.ts +41 -0
  41. package/dist/components/WaterfallPlugin/layout.d.ts.map +1 -0
  42. package/dist/components/WaterfallPlugin/plugins/types.d.ts +76 -380
  43. package/dist/components/WaterfallPlugin/plugins/types.d.ts.map +1 -0
  44. package/dist/components/WaterfallPlugin/virtualize.d.ts +62 -0
  45. package/dist/components/WaterfallPlugin/virtualize.d.ts.map +1 -0
  46. package/dist/components/WaterfallPlugin/{plugins/withPlugins.d.ts → withPlugins.d.ts} +4 -2
  47. package/dist/components/WaterfallPlugin/withPlugins.d.ts.map +1 -0
  48. package/dist/custom-plugins/A11yPlugin/create.d.ts +23 -0
  49. package/dist/custom-plugins/A11yPlugin/create.d.ts.map +1 -0
  50. package/dist/custom-plugins/A11yPlugin/doc.json.d.ts +52 -0
  51. package/dist/custom-plugins/A11yPlugin/index.d.ts +11 -0
  52. package/dist/custom-plugins/A11yPlugin/index.d.ts.map +1 -0
  53. package/dist/custom-plugins/A11yPlugin/index.js +5 -0
  54. package/dist/{components/WaterfallPlugin/custom-plugins/Alignment/index.d.ts → custom-plugins/AlignmentPlugin/create.d.ts} +3 -3
  55. package/dist/custom-plugins/AlignmentPlugin/create.d.ts.map +1 -0
  56. package/dist/custom-plugins/AlignmentPlugin/doc.json.d.ts +34 -0
  57. package/dist/custom-plugins/AlignmentPlugin/index.d.ts +11 -0
  58. package/dist/custom-plugins/AlignmentPlugin/index.d.ts.map +1 -0
  59. package/dist/custom-plugins/AlignmentPlugin/index.js +5 -0
  60. package/dist/custom-plugins/AutoColumnPlugin/create.d.ts +18 -0
  61. package/dist/custom-plugins/AutoColumnPlugin/create.d.ts.map +1 -0
  62. package/dist/custom-plugins/AutoColumnPlugin/doc.json.d.ts +50 -0
  63. package/dist/custom-plugins/AutoColumnPlugin/index.d.ts +11 -0
  64. package/dist/custom-plugins/AutoColumnPlugin/index.d.ts.map +1 -0
  65. package/dist/custom-plugins/AutoColumnPlugin/index.js +5 -0
  66. package/dist/{components/WaterfallPlugin/custom-plugins/Bookmark/index.d.ts → custom-plugins/BookmarkPlugin/create.d.ts} +3 -3
  67. package/dist/custom-plugins/BookmarkPlugin/create.d.ts.map +1 -0
  68. package/dist/custom-plugins/BookmarkPlugin/doc.json.d.ts +41 -0
  69. package/dist/custom-plugins/BookmarkPlugin/index.d.ts +11 -0
  70. package/dist/custom-plugins/BookmarkPlugin/index.d.ts.map +1 -0
  71. package/dist/custom-plugins/BookmarkPlugin/index.js +5 -0
  72. package/dist/custom-plugins/ClickAnalyticsPlugin/create.d.ts +25 -0
  73. package/dist/custom-plugins/ClickAnalyticsPlugin/create.d.ts.map +1 -0
  74. package/dist/custom-plugins/ClickAnalyticsPlugin/doc.json.d.ts +41 -0
  75. package/dist/custom-plugins/ClickAnalyticsPlugin/index.d.ts +11 -0
  76. package/dist/custom-plugins/ClickAnalyticsPlugin/index.d.ts.map +1 -0
  77. package/dist/custom-plugins/ClickAnalyticsPlugin/index.js +5 -0
  78. package/dist/{components/WaterfallPlugin/custom-plugins/DebounceLayout/index.d.ts → custom-plugins/DebounceLayoutPlugin/create.d.ts} +3 -3
  79. package/dist/custom-plugins/DebounceLayoutPlugin/create.d.ts.map +1 -0
  80. package/dist/custom-plugins/DebounceLayoutPlugin/doc.json.d.ts +34 -0
  81. package/dist/custom-plugins/DebounceLayoutPlugin/index.d.ts +11 -0
  82. package/dist/custom-plugins/DebounceLayoutPlugin/index.d.ts.map +1 -0
  83. package/dist/custom-plugins/DebounceLayoutPlugin/index.js +5 -0
  84. package/dist/custom-plugins/DragReorderPlugin/create.d.ts +33 -0
  85. package/dist/custom-plugins/DragReorderPlugin/create.d.ts.map +1 -0
  86. package/dist/custom-plugins/DragReorderPlugin/doc.json.d.ts +53 -0
  87. package/dist/custom-plugins/DragReorderPlugin/index.d.ts +11 -0
  88. package/dist/custom-plugins/DragReorderPlugin/index.d.ts.map +1 -0
  89. package/dist/custom-plugins/DragReorderPlugin/index.js +5 -0
  90. package/dist/{components/WaterfallPlugin/custom-plugins/Filter/index.d.ts → custom-plugins/FilterPlugin/create.d.ts} +3 -3
  91. package/dist/custom-plugins/FilterPlugin/create.d.ts.map +1 -0
  92. package/dist/custom-plugins/FilterPlugin/doc.json.d.ts +47 -0
  93. package/dist/custom-plugins/FilterPlugin/index.d.ts +11 -0
  94. package/dist/custom-plugins/FilterPlugin/index.d.ts.map +1 -0
  95. package/dist/custom-plugins/FilterPlugin/index.js +5 -0
  96. package/dist/{components/WaterfallPlugin/custom-plugins/FixedHeight/index.d.ts → custom-plugins/FixedHeightPlugin/create.d.ts} +3 -3
  97. package/dist/custom-plugins/FixedHeightPlugin/create.d.ts.map +1 -0
  98. package/dist/custom-plugins/FixedHeightPlugin/doc.json.d.ts +34 -0
  99. package/dist/custom-plugins/FixedHeightPlugin/index.d.ts +11 -0
  100. package/dist/custom-plugins/FixedHeightPlugin/index.d.ts.map +1 -0
  101. package/dist/custom-plugins/FixedHeightPlugin/index.js +5 -0
  102. package/dist/{components/WaterfallPlugin/custom-plugins/Gap/index.d.ts → custom-plugins/GapPlugin/create.d.ts} +3 -3
  103. package/dist/custom-plugins/GapPlugin/create.d.ts.map +1 -0
  104. package/dist/custom-plugins/GapPlugin/doc.json.d.ts +47 -0
  105. package/dist/custom-plugins/GapPlugin/index.d.ts +11 -0
  106. package/dist/custom-plugins/GapPlugin/index.d.ts.map +1 -0
  107. package/dist/custom-plugins/GapPlugin/index.js +5 -0
  108. package/dist/custom-plugins/GroupingPlugin/create.d.ts +16 -0
  109. package/dist/custom-plugins/GroupingPlugin/create.d.ts.map +1 -0
  110. package/dist/custom-plugins/GroupingPlugin/doc.json.d.ts +40 -0
  111. package/dist/custom-plugins/GroupingPlugin/index.d.ts +11 -0
  112. package/dist/custom-plugins/GroupingPlugin/index.d.ts.map +1 -0
  113. package/dist/custom-plugins/GroupingPlugin/index.js +5 -0
  114. package/dist/custom-plugins/HeatmapAnalyticsPlugin/create.d.ts +31 -0
  115. package/dist/custom-plugins/HeatmapAnalyticsPlugin/create.d.ts.map +1 -0
  116. package/dist/custom-plugins/HeatmapAnalyticsPlugin/doc.json.d.ts +43 -0
  117. package/dist/custom-plugins/HeatmapAnalyticsPlugin/index.d.ts +11 -0
  118. package/dist/custom-plugins/HeatmapAnalyticsPlugin/index.d.ts.map +1 -0
  119. package/dist/custom-plugins/HeatmapAnalyticsPlugin/index.js +5 -0
  120. package/dist/custom-plugins/InfiniteScrollPlugin/create.d.ts +17 -0
  121. package/dist/custom-plugins/InfiniteScrollPlugin/create.d.ts.map +1 -0
  122. package/dist/custom-plugins/InfiniteScrollPlugin/doc.json.d.ts +44 -0
  123. package/dist/custom-plugins/InfiniteScrollPlugin/index.d.ts +11 -0
  124. package/dist/custom-plugins/InfiniteScrollPlugin/index.d.ts.map +1 -0
  125. package/dist/custom-plugins/InfiniteScrollPlugin/index.js +5 -0
  126. package/dist/{components/WaterfallPlugin/custom-plugins/Pagination/index.d.ts → custom-plugins/PaginationPlugin/create.d.ts} +3 -3
  127. package/dist/custom-plugins/PaginationPlugin/create.d.ts.map +1 -0
  128. package/dist/custom-plugins/PaginationPlugin/doc.json.d.ts +50 -0
  129. package/dist/custom-plugins/PaginationPlugin/index.d.ts +11 -0
  130. package/dist/custom-plugins/PaginationPlugin/index.d.ts.map +1 -0
  131. package/dist/custom-plugins/PaginationPlugin/index.js +5 -0
  132. package/dist/custom-plugins/PinItemPlugin/create.d.ts +23 -0
  133. package/dist/custom-plugins/PinItemPlugin/create.d.ts.map +1 -0
  134. package/dist/custom-plugins/PinItemPlugin/doc.json.d.ts +43 -0
  135. package/dist/custom-plugins/PinItemPlugin/index.d.ts +11 -0
  136. package/dist/custom-plugins/PinItemPlugin/index.d.ts.map +1 -0
  137. package/dist/custom-plugins/PinItemPlugin/index.js +5 -0
  138. package/dist/{components/WaterfallPlugin/custom-plugins/Recycle/index.d.ts → custom-plugins/RecyclePlugin/create.d.ts} +3 -3
  139. package/dist/custom-plugins/RecyclePlugin/create.d.ts.map +1 -0
  140. package/dist/custom-plugins/RecyclePlugin/doc.json.d.ts +35 -0
  141. package/dist/custom-plugins/RecyclePlugin/index.d.ts +11 -0
  142. package/dist/custom-plugins/RecyclePlugin/index.d.ts.map +1 -0
  143. package/dist/custom-plugins/RecyclePlugin/index.js +5 -0
  144. package/dist/custom-plugins/ReducedMotionPlugin/create.d.ts +25 -0
  145. package/dist/custom-plugins/ReducedMotionPlugin/create.d.ts.map +1 -0
  146. package/dist/custom-plugins/ReducedMotionPlugin/doc.json.d.ts +42 -0
  147. package/dist/custom-plugins/ReducedMotionPlugin/index.d.ts +11 -0
  148. package/dist/custom-plugins/ReducedMotionPlugin/index.d.ts.map +1 -0
  149. package/dist/custom-plugins/ReducedMotionPlugin/index.js +5 -0
  150. package/dist/custom-plugins/ResponsiveColumnsPlugin/create.d.ts +22 -0
  151. package/dist/custom-plugins/ResponsiveColumnsPlugin/create.d.ts.map +1 -0
  152. package/dist/custom-plugins/ResponsiveColumnsPlugin/doc.json.d.ts +37 -0
  153. package/dist/custom-plugins/ResponsiveColumnsPlugin/index.d.ts +10 -0
  154. package/dist/custom-plugins/ResponsiveColumnsPlugin/index.d.ts.map +1 -0
  155. package/dist/custom-plugins/ResponsiveColumnsPlugin/index.js +5 -0
  156. package/dist/{components/WaterfallPlugin/custom-plugins/ScrollAnchor/index.d.ts → custom-plugins/ScrollAnchorPlugin/create.d.ts} +3 -3
  157. package/dist/custom-plugins/ScrollAnchorPlugin/create.d.ts.map +1 -0
  158. package/dist/custom-plugins/ScrollAnchorPlugin/doc.json.d.ts +34 -0
  159. package/dist/custom-plugins/ScrollAnchorPlugin/index.d.ts +11 -0
  160. package/dist/custom-plugins/ScrollAnchorPlugin/index.d.ts.map +1 -0
  161. package/dist/custom-plugins/ScrollAnchorPlugin/index.js +5 -0
  162. package/dist/{components/WaterfallPlugin/custom-plugins/Search/index.d.ts → custom-plugins/SearchPlugin/create.d.ts} +3 -3
  163. package/dist/custom-plugins/SearchPlugin/create.d.ts.map +1 -0
  164. package/dist/custom-plugins/SearchPlugin/doc.json.d.ts +47 -0
  165. package/dist/custom-plugins/SearchPlugin/index.d.ts +11 -0
  166. package/dist/custom-plugins/SearchPlugin/index.d.ts.map +1 -0
  167. package/dist/custom-plugins/SearchPlugin/index.js +5 -0
  168. package/dist/{components/WaterfallPlugin/custom-plugins/Sort/index.d.ts → custom-plugins/SortPlugin/create.d.ts} +3 -3
  169. package/dist/custom-plugins/SortPlugin/create.d.ts.map +1 -0
  170. package/dist/custom-plugins/SortPlugin/doc.json.d.ts +46 -0
  171. package/dist/custom-plugins/SortPlugin/index.d.ts +11 -0
  172. package/dist/custom-plugins/SortPlugin/index.d.ts.map +1 -0
  173. package/dist/custom-plugins/SortPlugin/index.js +5 -0
  174. package/dist/{components/WaterfallPlugin/custom-plugins/StatePersistence/index.d.ts → custom-plugins/StatePersistencePlugin/create.d.ts} +3 -3
  175. package/dist/custom-plugins/StatePersistencePlugin/create.d.ts.map +1 -0
  176. package/dist/custom-plugins/StatePersistencePlugin/doc.json.d.ts +47 -0
  177. package/dist/custom-plugins/StatePersistencePlugin/index.d.ts +11 -0
  178. package/dist/custom-plugins/StatePersistencePlugin/index.d.ts.map +1 -0
  179. package/dist/custom-plugins/StatePersistencePlugin/index.js +5 -0
  180. package/dist/custom-plugins/StickyHeaderPlugin/create.d.ts +13 -0
  181. package/dist/custom-plugins/StickyHeaderPlugin/create.d.ts.map +1 -0
  182. package/dist/custom-plugins/StickyHeaderPlugin/doc.json.d.ts +40 -0
  183. package/dist/custom-plugins/StickyHeaderPlugin/index.d.ts +11 -0
  184. package/dist/custom-plugins/StickyHeaderPlugin/index.d.ts.map +1 -0
  185. package/dist/custom-plugins/StickyHeaderPlugin/index.js +5 -0
  186. package/dist/{components/WaterfallPlugin/custom-plugins/Throttle/index.d.ts → custom-plugins/ThrottlePlugin/create.d.ts} +3 -3
  187. package/dist/custom-plugins/ThrottlePlugin/create.d.ts.map +1 -0
  188. package/dist/custom-plugins/ThrottlePlugin/doc.json.d.ts +40 -0
  189. package/dist/custom-plugins/ThrottlePlugin/index.d.ts +11 -0
  190. package/dist/custom-plugins/ThrottlePlugin/index.d.ts.map +1 -0
  191. package/dist/custom-plugins/ThrottlePlugin/index.js +5 -0
  192. package/dist/{components/WaterfallPlugin/custom-plugins/Transition/index.d.ts → custom-plugins/TransitionPlugin/create.d.ts} +3 -3
  193. package/dist/custom-plugins/TransitionPlugin/create.d.ts.map +1 -0
  194. package/dist/custom-plugins/TransitionPlugin/doc.json.d.ts +43 -0
  195. package/dist/custom-plugins/TransitionPlugin/index.d.ts +11 -0
  196. package/dist/custom-plugins/TransitionPlugin/index.d.ts.map +1 -0
  197. package/dist/custom-plugins/TransitionPlugin/index.js +5 -0
  198. package/dist/{components/WaterfallPlugin/custom-plugins/URLSync/index.d.ts → custom-plugins/URLSyncPlugin/create.d.ts} +3 -3
  199. package/dist/custom-plugins/URLSyncPlugin/create.d.ts.map +1 -0
  200. package/dist/custom-plugins/URLSyncPlugin/doc.json.d.ts +41 -0
  201. package/dist/custom-plugins/URLSyncPlugin/index.d.ts +11 -0
  202. package/dist/custom-plugins/URLSyncPlugin/index.d.ts.map +1 -0
  203. package/dist/custom-plugins/URLSyncPlugin/index.js +5 -0
  204. package/dist/custom-plugins/index.d.ts +61 -0
  205. package/dist/custom-plugins/index.d.ts.map +1 -0
  206. package/dist/custom-plugins/index.js +34 -0
  207. package/dist/entries/core.d.ts +8 -0
  208. package/dist/entries/core.d.ts.map +1 -0
  209. package/dist/entries/core.js +7 -0
  210. package/dist/entries/plugins.d.ts +7 -0
  211. package/dist/entries/plugins.d.ts.map +1 -0
  212. package/dist/entries/plugins.js +36 -0
  213. package/dist/index.d.ts +14 -9
  214. package/dist/index.d.ts.map +1 -0
  215. package/dist/index.js +8 -0
  216. package/dist/presets/dashboard/index.d.ts +13 -0
  217. package/dist/presets/dashboard/index.d.ts.map +1 -0
  218. package/dist/presets/dashboard/index.js +21 -0
  219. package/dist/presets/photo-feed/index.d.ts +13 -0
  220. package/dist/presets/photo-feed/index.d.ts.map +1 -0
  221. package/dist/presets/photo-feed/index.js +17 -0
  222. package/dist/presets/product-feed/index.d.ts +9 -0
  223. package/dist/presets/product-feed/index.d.ts.map +1 -0
  224. package/dist/presets/product-feed/index.js +23 -0
  225. package/package.json +222 -82
  226. package/dist/404.jpg +0 -0
  227. package/dist/components/WaterfallPlugin/core/WaterfallCore.d.ts +0 -174
  228. package/dist/components/WaterfallPlugin/custom-plugins/A11y/index.d.ts +0 -16
  229. package/dist/components/WaterfallPlugin/custom-plugins/AutoColumn/index.d.ts +0 -17
  230. package/dist/components/WaterfallPlugin/custom-plugins/ClickAnalytics/index.d.ts +0 -12
  231. package/dist/components/WaterfallPlugin/custom-plugins/DragReorder/index.d.ts +0 -13
  232. package/dist/components/WaterfallPlugin/custom-plugins/Grouping/index.d.ts +0 -12
  233. package/dist/components/WaterfallPlugin/custom-plugins/HeatmapAnalytics/index.d.ts +0 -14
  234. package/dist/components/WaterfallPlugin/custom-plugins/InfiniteScroll/index.d.ts +0 -13
  235. package/dist/components/WaterfallPlugin/custom-plugins/PinItem/index.d.ts +0 -13
  236. package/dist/components/WaterfallPlugin/custom-plugins/ReducedMotion/index.d.ts +0 -13
  237. package/dist/components/WaterfallPlugin/custom-plugins/ResponsiveColumns/index.d.ts +0 -10
  238. package/dist/components/WaterfallPlugin/custom-plugins/StickyHeader/index.d.ts +0 -11
  239. package/dist/components/WaterfallPlugin/custom-plugins/VirtualWaterfall/index.d.ts +0 -12
  240. package/dist/components/WaterfallPlugin/custom-plugins/index.d.ts +0 -30
  241. package/dist/components/WaterfallPlugin/plugins/PluginBus.d.ts +0 -2
  242. package/dist/components/WaterfallPlugin/plugins/PluginManager.d.ts +0 -2
  243. package/dist/components/WaterfallPlugin/plugins/index.d.ts +0 -8
  244. package/dist/index.es.js +0 -2382
  245. package/dist/index.umd.js +0 -30
  246. package/dist/vite.svg +0 -1
package/dist/index.es.js DELETED
@@ -1,2382 +0,0 @@
1
- import Je, { forwardRef as at, useRef as F, useState as de, useMemo as je, useCallback as Ve, useEffect as Ue, useImperativeHandle as vt } from "react";
2
- var Ze = { exports: {} }, ze = {};
3
- /**
4
- * @license React
5
- * react-jsx-runtime.production.min.js
6
- *
7
- * Copyright (c) Facebook, Inc. and its affiliates.
8
- *
9
- * This source code is licensed under the MIT license found in the
10
- * LICENSE file in the root directory of this source tree.
11
- */
12
- var ot;
13
- function yt() {
14
- if (ot) return ze;
15
- ot = 1;
16
- var i = Je, r = Symbol.for("react.element"), n = Symbol.for("react.fragment"), t = Object.prototype.hasOwnProperty, a = i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, s = { key: !0, ref: !0, __self: !0, __source: !0 };
17
- function l(c, u, h) {
18
- var p, g = {}, f = null, b = null;
19
- h !== void 0 && (f = "" + h), u.key !== void 0 && (f = "" + u.key), u.ref !== void 0 && (b = u.ref);
20
- for (p in u) t.call(u, p) && !s.hasOwnProperty(p) && (g[p] = u[p]);
21
- if (c && c.defaultProps) for (p in u = c.defaultProps, u) g[p] === void 0 && (g[p] = u[p]);
22
- return { $$typeof: r, type: c, key: f, ref: b, props: g, _owner: a.current };
23
- }
24
- return ze.Fragment = n, ze.jsx = l, ze.jsxs = l, ze;
25
- }
26
- var $e = {};
27
- /**
28
- * @license React
29
- * react-jsx-runtime.development.js
30
- *
31
- * Copyright (c) Facebook, Inc. and its affiliates.
32
- *
33
- * This source code is licensed under the MIT license found in the
34
- * LICENSE file in the root directory of this source tree.
35
- */
36
- var it;
37
- function pt() {
38
- return it || (it = 1, process.env.NODE_ENV !== "production" && function() {
39
- var i = Je, r = Symbol.for("react.element"), n = Symbol.for("react.portal"), t = Symbol.for("react.fragment"), a = Symbol.for("react.strict_mode"), s = Symbol.for("react.profiler"), l = Symbol.for("react.provider"), c = Symbol.for("react.context"), u = Symbol.for("react.forward_ref"), h = Symbol.for("react.suspense"), p = Symbol.for("react.suspense_list"), g = Symbol.for("react.memo"), f = Symbol.for("react.lazy"), b = Symbol.for("react.offscreen"), I = Symbol.iterator, E = "@@iterator";
40
- function ce(e) {
41
- if (e === null || typeof e != "object")
42
- return null;
43
- var d = I && e[I] || e[E];
44
- return typeof d == "function" ? d : null;
45
- }
46
- var K = i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
47
- function k(e) {
48
- {
49
- for (var d = arguments.length, v = new Array(d > 1 ? d - 1 : 0), S = 1; S < d; S++)
50
- v[S - 1] = arguments[S];
51
- Z("error", e, v);
52
- }
53
- }
54
- function Z(e, d, v) {
55
- {
56
- var S = K.ReactDebugCurrentFrame, A = S.getStackAddendum();
57
- A !== "" && (d += "%s", v = v.concat([A]));
58
- var D = v.map(function(O) {
59
- return String(O);
60
- });
61
- D.unshift("Warning: " + d), Function.prototype.apply.call(console[e], console, D);
62
- }
63
- }
64
- var ye = !1, we = !1, Re = !1, re = !1, Te = !1, pe;
65
- pe = Symbol.for("react.module.reference");
66
- function be(e) {
67
- return !!(typeof e == "string" || typeof e == "function" || e === t || e === s || Te || e === a || e === h || e === p || re || e === b || ye || we || Re || typeof e == "object" && e !== null && (e.$$typeof === f || e.$$typeof === g || e.$$typeof === l || e.$$typeof === c || e.$$typeof === u || // This needs to include all possible module reference object
68
- // types supported by any Flight configuration anywhere since
69
- // we don't know which Flight build this will end up being used
70
- // with.
71
- e.$$typeof === pe || e.getModuleId !== void 0));
72
- }
73
- function Se(e, d, v) {
74
- var S = e.displayName;
75
- if (S)
76
- return S;
77
- var A = d.displayName || d.name || "";
78
- return A !== "" ? v + "(" + A + ")" : v;
79
- }
80
- function he(e) {
81
- return e.displayName || "Context";
82
- }
83
- function ee(e) {
84
- if (e == null)
85
- return null;
86
- if (typeof e.tag == "number" && k("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof e == "function")
87
- return e.displayName || e.name || null;
88
- if (typeof e == "string")
89
- return e;
90
- switch (e) {
91
- case t:
92
- return "Fragment";
93
- case n:
94
- return "Portal";
95
- case s:
96
- return "Profiler";
97
- case a:
98
- return "StrictMode";
99
- case h:
100
- return "Suspense";
101
- case p:
102
- return "SuspenseList";
103
- }
104
- if (typeof e == "object")
105
- switch (e.$$typeof) {
106
- case c:
107
- var d = e;
108
- return he(d) + ".Consumer";
109
- case l:
110
- var v = e;
111
- return he(v._context) + ".Provider";
112
- case u:
113
- return Se(e, e.render, "ForwardRef");
114
- case g:
115
- var S = e.displayName || null;
116
- return S !== null ? S : ee(e.type) || "Memo";
117
- case f: {
118
- var A = e, D = A._payload, O = A._init;
119
- try {
120
- return ee(O(D));
121
- } catch {
122
- return null;
123
- }
124
- }
125
- }
126
- return null;
127
- }
128
- var q = Object.assign, ue = 0, Ee, G, C, j, me, W, y;
129
- function ne() {
130
- }
131
- ne.__reactDisabledLog = !0;
132
- function o() {
133
- {
134
- if (ue === 0) {
135
- Ee = console.log, G = console.info, C = console.warn, j = console.error, me = console.group, W = console.groupCollapsed, y = console.groupEnd;
136
- var e = {
137
- configurable: !0,
138
- enumerable: !0,
139
- value: ne,
140
- writable: !0
141
- };
142
- Object.defineProperties(console, {
143
- info: e,
144
- log: e,
145
- warn: e,
146
- error: e,
147
- group: e,
148
- groupCollapsed: e,
149
- groupEnd: e
150
- });
151
- }
152
- ue++;
153
- }
154
- }
155
- function m() {
156
- {
157
- if (ue--, ue === 0) {
158
- var e = {
159
- configurable: !0,
160
- enumerable: !0,
161
- writable: !0
162
- };
163
- Object.defineProperties(console, {
164
- log: q({}, e, {
165
- value: Ee
166
- }),
167
- info: q({}, e, {
168
- value: G
169
- }),
170
- warn: q({}, e, {
171
- value: C
172
- }),
173
- error: q({}, e, {
174
- value: j
175
- }),
176
- group: q({}, e, {
177
- value: me
178
- }),
179
- groupCollapsed: q({}, e, {
180
- value: W
181
- }),
182
- groupEnd: q({}, e, {
183
- value: y
184
- })
185
- });
186
- }
187
- ue < 0 && k("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
188
- }
189
- }
190
- var T = K.ReactCurrentDispatcher, _;
191
- function M(e, d, v) {
192
- {
193
- if (_ === void 0)
194
- try {
195
- throw Error();
196
- } catch (A) {
197
- var S = A.stack.trim().match(/\n( *(at )?)/);
198
- _ = S && S[1] || "";
199
- }
200
- return `
201
- ` + _ + e;
202
- }
203
- }
204
- var B = !1, z;
205
- {
206
- var $ = typeof WeakMap == "function" ? WeakMap : Map;
207
- z = new $();
208
- }
209
- function J(e, d) {
210
- if (!e || B)
211
- return "";
212
- {
213
- var v = z.get(e);
214
- if (v !== void 0)
215
- return v;
216
- }
217
- var S;
218
- B = !0;
219
- var A = Error.prepareStackTrace;
220
- Error.prepareStackTrace = void 0;
221
- var D;
222
- D = T.current, T.current = null, o();
223
- try {
224
- if (d) {
225
- var O = function() {
226
- throw Error();
227
- };
228
- if (Object.defineProperty(O.prototype, "props", {
229
- set: function() {
230
- throw Error();
231
- }
232
- }), typeof Reflect == "object" && Reflect.construct) {
233
- try {
234
- Reflect.construct(O, []);
235
- } catch (le) {
236
- S = le;
237
- }
238
- Reflect.construct(e, [], O);
239
- } else {
240
- try {
241
- O.call();
242
- } catch (le) {
243
- S = le;
244
- }
245
- e.call(O.prototype);
246
- }
247
- } else {
248
- try {
249
- throw Error();
250
- } catch (le) {
251
- S = le;
252
- }
253
- e();
254
- }
255
- } catch (le) {
256
- if (le && S && typeof le.stack == "string") {
257
- for (var P = le.stack.split(`
258
- `), te = S.stack.split(`
259
- `), x = P.length - 1, Y = te.length - 1; x >= 1 && Y >= 0 && P[x] !== te[Y]; )
260
- Y--;
261
- for (; x >= 1 && Y >= 0; x--, Y--)
262
- if (P[x] !== te[Y]) {
263
- if (x !== 1 || Y !== 1)
264
- do
265
- if (x--, Y--, Y < 0 || P[x] !== te[Y]) {
266
- var ve = `
267
- ` + P[x].replace(" at new ", " at ");
268
- return e.displayName && ve.includes("<anonymous>") && (ve = ve.replace("<anonymous>", e.displayName)), typeof e == "function" && z.set(e, ve), ve;
269
- }
270
- while (x >= 1 && Y >= 0);
271
- break;
272
- }
273
- }
274
- } finally {
275
- B = !1, T.current = D, m(), Error.prepareStackTrace = A;
276
- }
277
- var De = e ? e.displayName || e.name : "", Ae = De ? M(De) : "";
278
- return typeof e == "function" && z.set(e, Ae), Ae;
279
- }
280
- function Q(e, d, v) {
281
- return J(e, !1);
282
- }
283
- function X(e) {
284
- var d = e.prototype;
285
- return !!(d && d.isReactComponent);
286
- }
287
- function ge(e, d, v) {
288
- if (e == null)
289
- return "";
290
- if (typeof e == "function")
291
- return J(e, X(e));
292
- if (typeof e == "string")
293
- return M(e);
294
- switch (e) {
295
- case h:
296
- return M("Suspense");
297
- case p:
298
- return M("SuspenseList");
299
- }
300
- if (typeof e == "object")
301
- switch (e.$$typeof) {
302
- case u:
303
- return Q(e.render);
304
- case g:
305
- return ge(e.type, d, v);
306
- case f: {
307
- var S = e, A = S._payload, D = S._init;
308
- try {
309
- return ge(D(A), d, v);
310
- } catch {
311
- }
312
- }
313
- }
314
- return "";
315
- }
316
- var fe = Object.prototype.hasOwnProperty, We = {}, Ne = K.ReactDebugCurrentFrame;
317
- function Me(e) {
318
- if (e) {
319
- var d = e._owner, v = ge(e.type, e._source, d ? d.type : null);
320
- Ne.setExtraStackFrame(v);
321
- } else
322
- Ne.setExtraStackFrame(null);
323
- }
324
- function Ie(e, d, v, S, A) {
325
- {
326
- var D = Function.call.bind(fe);
327
- for (var O in e)
328
- if (D(e, O)) {
329
- var P = void 0;
330
- try {
331
- if (typeof e[O] != "function") {
332
- var te = Error((S || "React class") + ": " + v + " type `" + O + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof e[O] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
333
- throw te.name = "Invariant Violation", te;
334
- }
335
- P = e[O](d, O, S, v, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
336
- } catch (x) {
337
- P = x;
338
- }
339
- P && !(P instanceof Error) && (Me(A), k("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", S || "React class", v, O, typeof P), Me(null)), P instanceof Error && !(P.message in We) && (We[P.message] = !0, Me(A), k("Failed %s type: %s", v, P.message), Me(null));
340
- }
341
- }
342
- }
343
- var xe = Array.isArray;
344
- function Ce(e) {
345
- return xe(e);
346
- }
347
- function Pe(e) {
348
- {
349
- var d = typeof Symbol == "function" && Symbol.toStringTag, v = d && e[Symbol.toStringTag] || e.constructor.name || "Object";
350
- return v;
351
- }
352
- }
353
- function He(e) {
354
- try {
355
- return Be(e), !1;
356
- } catch {
357
- return !0;
358
- }
359
- }
360
- function Be(e) {
361
- return "" + e;
362
- }
363
- function Ge(e) {
364
- if (He(e))
365
- return k("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", Pe(e)), Be(e);
366
- }
367
- var Ye = K.ReactCurrentOwner, Qe = {
368
- key: !0,
369
- ref: !0,
370
- __self: !0,
371
- __source: !0
372
- }, R, w;
373
- function U(e) {
374
- if (fe.call(e, "ref")) {
375
- var d = Object.getOwnPropertyDescriptor(e, "ref").get;
376
- if (d && d.isReactWarning)
377
- return !1;
378
- }
379
- return e.ref !== void 0;
380
- }
381
- function V(e) {
382
- if (fe.call(e, "key")) {
383
- var d = Object.getOwnPropertyDescriptor(e, "key").get;
384
- if (d && d.isReactWarning)
385
- return !1;
386
- }
387
- return e.key !== void 0;
388
- }
389
- function N(e, d) {
390
- typeof e.ref == "string" && Ye.current;
391
- }
392
- function H(e, d) {
393
- {
394
- var v = function() {
395
- R || (R = !0, k("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", d));
396
- };
397
- v.isReactWarning = !0, Object.defineProperty(e, "key", {
398
- get: v,
399
- configurable: !0
400
- });
401
- }
402
- }
403
- function oe(e, d) {
404
- {
405
- var v = function() {
406
- w || (w = !0, k("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)", d));
407
- };
408
- v.isReactWarning = !0, Object.defineProperty(e, "ref", {
409
- get: v,
410
- configurable: !0
411
- });
412
- }
413
- }
414
- var _e = function(e, d, v, S, A, D, O) {
415
- var P = {
416
- // This tag allows us to uniquely identify this as a React Element
417
- $$typeof: r,
418
- // Built-in properties that belong on the element
419
- type: e,
420
- key: d,
421
- ref: v,
422
- props: O,
423
- // Record the component responsible for creating this element.
424
- _owner: D
425
- };
426
- return P._store = {}, Object.defineProperty(P._store, "validated", {
427
- configurable: !1,
428
- enumerable: !1,
429
- writable: !0,
430
- value: !1
431
- }), Object.defineProperty(P, "_self", {
432
- configurable: !1,
433
- enumerable: !1,
434
- writable: !1,
435
- value: S
436
- }), Object.defineProperty(P, "_source", {
437
- configurable: !1,
438
- enumerable: !1,
439
- writable: !1,
440
- value: A
441
- }), Object.freeze && (Object.freeze(P.props), Object.freeze(P)), P;
442
- };
443
- function Ke(e, d, v, S, A) {
444
- {
445
- var D, O = {}, P = null, te = null;
446
- v !== void 0 && (Ge(v), P = "" + v), V(d) && (Ge(d.key), P = "" + d.key), U(d) && (te = d.ref, N(d, A));
447
- for (D in d)
448
- fe.call(d, D) && !Qe.hasOwnProperty(D) && (O[D] = d[D]);
449
- if (e && e.defaultProps) {
450
- var x = e.defaultProps;
451
- for (D in x)
452
- O[D] === void 0 && (O[D] = x[D]);
453
- }
454
- if (P || te) {
455
- var Y = typeof e == "function" ? e.displayName || e.name || "Unknown" : e;
456
- P && H(O, Y), te && oe(O, Y);
457
- }
458
- return _e(e, P, te, A, S, Ye.current, O);
459
- }
460
- }
461
- var ie = K.ReactCurrentOwner, Le = K.ReactDebugCurrentFrame;
462
- function ke(e) {
463
- if (e) {
464
- var d = e._owner, v = ge(e.type, e._source, d ? d.type : null);
465
- Le.setExtraStackFrame(v);
466
- } else
467
- Le.setExtraStackFrame(null);
468
- }
469
- var ae;
470
- ae = !1;
471
- function Fe(e) {
472
- return typeof e == "object" && e !== null && e.$$typeof === r;
473
- }
474
- function qe() {
475
- {
476
- if (ie.current) {
477
- var e = ee(ie.current.type);
478
- if (e)
479
- return `
480
-
481
- Check the render method of \`` + e + "`.";
482
- }
483
- return "";
484
- }
485
- }
486
- function Oe(e) {
487
- return "";
488
- }
489
- var se = {};
490
- function st(e) {
491
- {
492
- var d = qe();
493
- if (!d) {
494
- var v = typeof e == "string" ? e : e.displayName || e.name;
495
- v && (d = `
496
-
497
- Check the top-level render call using <` + v + ">.");
498
- }
499
- return d;
500
- }
501
- }
502
- function et(e, d) {
503
- {
504
- if (!e._store || e._store.validated || e.key != null)
505
- return;
506
- e._store.validated = !0;
507
- var v = st(d);
508
- if (se[v])
509
- return;
510
- se[v] = !0;
511
- var S = "";
512
- e && e._owner && e._owner !== ie.current && (S = " It was passed a child from " + ee(e._owner.type) + "."), ke(e), k('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', v, S), ke(null);
513
- }
514
- }
515
- function tt(e, d) {
516
- {
517
- if (typeof e != "object")
518
- return;
519
- if (Ce(e))
520
- for (var v = 0; v < e.length; v++) {
521
- var S = e[v];
522
- Fe(S) && et(S, d);
523
- }
524
- else if (Fe(e))
525
- e._store && (e._store.validated = !0);
526
- else if (e) {
527
- var A = ce(e);
528
- if (typeof A == "function" && A !== e.entries)
529
- for (var D = A.call(e), O; !(O = D.next()).done; )
530
- Fe(O.value) && et(O.value, d);
531
- }
532
- }
533
- }
534
- function lt(e) {
535
- {
536
- var d = e.type;
537
- if (d == null || typeof d == "string")
538
- return;
539
- var v;
540
- if (typeof d == "function")
541
- v = d.propTypes;
542
- else if (typeof d == "object" && (d.$$typeof === u || // Note: Memo only checks outer props here.
543
- // Inner props are checked in the reconciler.
544
- d.$$typeof === g))
545
- v = d.propTypes;
546
- else
547
- return;
548
- if (v) {
549
- var S = ee(d);
550
- Ie(v, e.props, "prop", S, e);
551
- } else if (d.PropTypes !== void 0 && !ae) {
552
- ae = !0;
553
- var A = ee(d);
554
- k("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", A || "Unknown");
555
- }
556
- typeof d.getDefaultProps == "function" && !d.getDefaultProps.isReactClassApproved && k("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
557
- }
558
- }
559
- function ct(e) {
560
- {
561
- for (var d = Object.keys(e.props), v = 0; v < d.length; v++) {
562
- var S = d[v];
563
- if (S !== "children" && S !== "key") {
564
- ke(e), k("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", S), ke(null);
565
- break;
566
- }
567
- }
568
- e.ref !== null && (ke(e), k("Invalid attribute `ref` supplied to `React.Fragment`."), ke(null));
569
- }
570
- }
571
- var rt = {};
572
- function nt(e, d, v, S, A, D) {
573
- {
574
- var O = be(e);
575
- if (!O) {
576
- var P = "";
577
- (e === void 0 || typeof e == "object" && e !== null && Object.keys(e).length === 0) && (P += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");
578
- var te = Oe();
579
- te ? P += te : P += qe();
580
- var x;
581
- e === null ? x = "null" : Ce(e) ? x = "array" : e !== void 0 && e.$$typeof === r ? (x = "<" + (ee(e.type) || "Unknown") + " />", P = " Did you accidentally export a JSX literal instead of a component?") : x = typeof e, k("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", x, P);
582
- }
583
- var Y = Ke(e, d, v, A, D);
584
- if (Y == null)
585
- return Y;
586
- if (O) {
587
- var ve = d.children;
588
- if (ve !== void 0)
589
- if (S)
590
- if (Ce(ve)) {
591
- for (var De = 0; De < ve.length; De++)
592
- tt(ve[De], e);
593
- Object.freeze && Object.freeze(ve);
594
- } else
595
- k("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
596
- else
597
- tt(ve, e);
598
- }
599
- if (fe.call(d, "key")) {
600
- var Ae = ee(e), le = Object.keys(d).filter(function(gt) {
601
- return gt !== "key";
602
- }), Xe = le.length > 0 ? "{key: someKey, " + le.join(": ..., ") + ": ...}" : "{key: someKey}";
603
- if (!rt[Ae + Xe]) {
604
- var mt = le.length > 0 ? "{" + le.join(": ..., ") + ": ...}" : "{}";
605
- k(`A props object containing a "key" prop is being spread into JSX:
606
- let props = %s;
607
- <%s {...props} />
608
- React keys must be passed directly to JSX without using spread:
609
- let props = %s;
610
- <%s key={someKey} {...props} />`, Xe, Ae, mt, Ae), rt[Ae + Xe] = !0;
611
- }
612
- }
613
- return e === t ? ct(Y) : lt(Y), Y;
614
- }
615
- }
616
- function ut(e, d, v) {
617
- return nt(e, d, v, !0);
618
- }
619
- function ft(e, d, v) {
620
- return nt(e, d, v, !1);
621
- }
622
- var dt = ft, ht = ut;
623
- $e.Fragment = t, $e.jsx = dt, $e.jsxs = ht;
624
- }()), $e;
625
- }
626
- process.env.NODE_ENV === "production" ? Ze.exports = yt() : Ze.exports = pt();
627
- var L = Ze.exports;
628
- const It = at(
629
- function(r, n) {
630
- const {
631
- items: t = [],
632
- renderItem: a,
633
- keyExtractor: s = (R, w) => w,
634
- columns: l = 3,
635
- gap: c = 16,
636
- rowGap: u,
637
- columnGap: h,
638
- alignmentMode: p = "shortest",
639
- padding: g = 0,
640
- containerStyle: f,
641
- containerClassName: b,
642
- itemStyle: I,
643
- itemClassName: E,
644
- useTransform: ce = !0,
645
- throttleDelay: K = 16,
646
- debounceDelay: k = 150,
647
- onMount: Z,
648
- onUnmount: ye,
649
- onBeforeLayout: we,
650
- onLayout: Re,
651
- onLayoutComplete: re,
652
- onItemMount: Te,
653
- onItemUnmount: pe,
654
- onItemEnterViewport: be,
655
- onItemLeaveViewport: Se,
656
- onScroll: he,
657
- onResize: ee,
658
- onReachBottom: q,
659
- onItemClick: ue,
660
- children: Ee,
661
- containerRefExternal: G,
662
- itemRefsExternal: C,
663
- debug: j = !1
664
- } = r, me = F(null), W = F(/* @__PURE__ */ new Map()), y = G || me, ne = C || W, o = F(/* @__PURE__ */ new Map()), m = F(null), T = F(), _ = F(), M = F(0), [B, z] = de({
665
- columns: l,
666
- columnWidth: 0,
667
- gap: h || c,
668
- columnHeights: Array(l).fill(0),
669
- totalHeight: 0,
670
- containerWidth: 0,
671
- containerHeight: 0
672
- }), [$, J] = de(/* @__PURE__ */ new Map()), Q = F(!1), X = F(!1), ge = F(!1), [fe, We] = de({
673
- scrollTop: 0,
674
- scrollLeft: 0,
675
- scrollHeight: 0,
676
- scrollWidth: 0,
677
- clientHeight: 0,
678
- clientWidth: 0,
679
- isScrolling: !1,
680
- direction: null
681
- }), [, Ne] = de({}), Me = F(/* @__PURE__ */ new Set()), Ie = je(() => typeof g == "number" ? { top: g, right: g, bottom: g, left: g } : {
682
- top: g.top || 0,
683
- right: g.right || 0,
684
- bottom: g.bottom || 0,
685
- left: g.left || 0
686
- }, [g]), xe = u !== void 0 ? u : c, Ce = h !== void 0 ? h : c, Pe = Ve(async () => {
687
- const R = y.current, w = ne.current;
688
- if (!R || Q.current) return;
689
- if (Q.current = !0, ge.current = !1, we && await we() === !1) {
690
- Q.current = !1;
691
- return;
692
- }
693
- const U = R.clientWidth, N = (U - Ie.left - Ie.right - Ce * (l - 1)) / l, H = Array(l).fill(Ie.top), oe = Array(l).fill(0), _e = /* @__PURE__ */ new Map();
694
- if (Re && Re(), t.length === 0) {
695
- const ie = Ie.top + Ie.bottom;
696
- z({
697
- columns: l,
698
- columnWidth: N,
699
- gap: Ce,
700
- columnHeights: H,
701
- totalHeight: ie,
702
- containerWidth: U,
703
- containerHeight: R.clientHeight
704
- }), J(/* @__PURE__ */ new Map()), X.current = !0, re && re(), Q.current = !1, ge.current = !1;
705
- return;
706
- }
707
- for (let ie = 0; ie < t.length; ie++) {
708
- const Le = w.get(ie), ke = (Le == null ? void 0 : Le.offsetHeight) || 0;
709
- if (ke === 0) continue;
710
- let ae = 0;
711
- if (p === "sequential")
712
- ae = ie % l;
713
- else if (p === "balanced") {
714
- let Oe = oe[0];
715
- ae = 0;
716
- for (let se = 1; se < l; se++)
717
- oe[se] < Oe && (Oe = oe[se], ae = se);
718
- } else {
719
- let Oe = H[0];
720
- ae = 0;
721
- for (let se = 1; se < H.length; se++)
722
- H[se] < Oe && (Oe = H[se], ae = se);
723
- }
724
- const Fe = Ie.left + ae * (N + Ce), qe = H[ae];
725
- _e.set(ie, {
726
- x: Fe,
727
- y: qe,
728
- width: N,
729
- height: ke,
730
- column: ae,
731
- row: Math.floor(ie / l)
732
- }), H[ae] += ke + xe, oe[ae] += 1;
733
- }
734
- const Ke = Math.max(...H) + Ie.bottom;
735
- z({
736
- columns: l,
737
- columnWidth: N,
738
- gap: Ce,
739
- columnHeights: H,
740
- totalHeight: Ke,
741
- containerWidth: U,
742
- containerHeight: R.clientHeight
743
- }), J(_e), X.current = !0, re && re(), Q.current = !1, ge.current = !1;
744
- }, [
745
- t,
746
- l,
747
- Ce,
748
- xe,
749
- Ie,
750
- we,
751
- Re,
752
- re,
753
- j,
754
- y,
755
- ne
756
- ]), He = Ve(() => {
757
- _.current && window.clearTimeout(_.current), _.current = window.setTimeout(() => {
758
- Pe();
759
- }, k);
760
- }, [Pe, k]), Be = Ve(() => {
761
- const R = y.current;
762
- if (!R) return;
763
- const w = fe.scrollTop, U = fe.scrollLeft, V = R.scrollTop, N = R.scrollLeft, H = V > w ? "down" : V < w ? "up" : N > U ? "right" : N < U ? "left" : null;
764
- We({
765
- scrollTop: V,
766
- scrollLeft: N,
767
- scrollHeight: R.scrollHeight,
768
- scrollWidth: R.scrollWidth,
769
- clientHeight: R.clientHeight,
770
- clientWidth: R.clientWidth,
771
- isScrolling: !0,
772
- direction: H
773
- });
774
- }, [fe.scrollTop, fe.scrollLeft, y]), Ge = Ve(() => {
775
- const R = Date.now();
776
- Be();
777
- const w = y.current;
778
- if (w) {
779
- if (he && he(w.scrollTop, w.scrollLeft), R - M.current >= K) {
780
- if (M.current = R, q) {
781
- const U = w.scrollTop, V = w.scrollHeight, N = w.clientHeight, H = V - (U + N);
782
- H < 100 && q(H);
783
- }
784
- if (be || Se) {
785
- const U = w.scrollTop, V = w.clientHeight, N = /* @__PURE__ */ new Set();
786
- $.forEach((H, oe) => {
787
- const _e = H.y;
788
- H.y + H.height > U && _e < U + V && (N.add(oe), !Me.current.has(oe) && be && be(oe));
789
- }), Se && Me.current.forEach((H) => {
790
- N.has(H) || Se(H);
791
- }), Me.current = N;
792
- }
793
- }
794
- T.current && window.clearTimeout(T.current), T.current = window.setTimeout(() => {
795
- We((U) => ({ ...U, isScrolling: !1 }));
796
- }, k);
797
- }
798
- }, [
799
- Be,
800
- he,
801
- q,
802
- be,
803
- Se,
804
- y,
805
- $,
806
- K,
807
- k
808
- ]), Ye = Ve(
809
- (R) => {
810
- var N;
811
- const w = (N = R[0]) == null ? void 0 : N.target;
812
- if (!w) return;
813
- const U = w.clientWidth, V = w.clientHeight;
814
- ee && ee(U, V), He();
815
- },
816
- [ee, He]
817
- );
818
- Ue(() => {
819
- Z && Z(), X.current || Pe();
820
- const R = y.current;
821
- return R && (m.current = new ResizeObserver(Ye), m.current.observe(R)), () => {
822
- var w;
823
- ye && ye(), (w = m.current) == null || w.disconnect(), T.current && window.clearTimeout(T.current), _.current && window.clearTimeout(_.current);
824
- };
825
- }, []), Ue(() => {
826
- X.current = !1, ge.current = !1, He();
827
- }, [t, He]), Ue(() => {
828
- X.current = !1, ge.current = !1, Pe();
829
- }, [l]), vt(n, () => ({
830
- relayout: Pe,
831
- scrollToItem: (R, w = {}) => {
832
- const U = $.get(R);
833
- if (!U || !y.current) return;
834
- const V = y.current, N = w.offset || 0;
835
- let H = U.y + N;
836
- w.block === "center" ? H -= V.clientHeight / 2 - U.height / 2 : w.block === "end" && (H -= V.clientHeight - U.height), V.scrollTo({
837
- top: Math.max(0, H),
838
- behavior: w.behavior || "auto"
839
- });
840
- },
841
- scrollToTop: (R = {}) => {
842
- var w;
843
- (w = y.current) == null || w.scrollTo({
844
- top: R.offset || 0,
845
- behavior: R.behavior || "auto"
846
- });
847
- },
848
- scrollToBottom: (R = {}) => {
849
- const w = y.current;
850
- w && w.scrollTo({
851
- top: w.scrollHeight - w.clientHeight + (R.offset || 0),
852
- behavior: R.behavior || "auto"
853
- });
854
- },
855
- getItemPosition: (R) => $.get(R) || null,
856
- getAllItemPositions: () => $,
857
- getColumnHeights: () => B.columnHeights,
858
- getLayoutInfo: () => B,
859
- getViewportInfo: () => {
860
- const R = y.current;
861
- return R ? {
862
- scrollTop: R.scrollTop,
863
- scrollLeft: R.scrollLeft,
864
- scrollHeight: R.scrollHeight,
865
- scrollWidth: R.scrollWidth,
866
- clientHeight: R.clientHeight,
867
- clientWidth: R.clientWidth,
868
- isScrolling: fe.isScrolling,
869
- direction: fe.direction
870
- } : fe;
871
- },
872
- forceUpdate: () => Ne({}),
873
- getContainer: () => y.current,
874
- getItemElement: (R) => ne.current.get(R) || null,
875
- measureItem: async (R) => {
876
- const w = ne.current.get(R);
877
- return w ? { width: w.offsetWidth, height: w.offsetHeight } : { width: 0, height: 0 };
878
- }
879
- }));
880
- const Qe = () => t.map((R, w) => {
881
- const U = s(R, w), V = $.get(w), N = V ? ce ? {
882
- position: "absolute",
883
- transform: `translate(${V.x}px, ${V.y}px)`,
884
- width: V.width,
885
- boxSizing: "border-box"
886
- } : {
887
- position: "absolute",
888
- left: V.x,
889
- top: V.y,
890
- width: V.width,
891
- boxSizing: "border-box"
892
- } : {
893
- position: "absolute",
894
- opacity: 0,
895
- pointerEvents: "none"
896
- };
897
- return /* @__PURE__ */ L.jsx(
898
- "div",
899
- {
900
- ref: (H) => {
901
- if (H) {
902
- if (ne.current.set(w, H), !o.current.get(w)) {
903
- const _e = new ResizeObserver(() => {
904
- He();
905
- });
906
- try {
907
- _e.observe(H), o.current.set(w, _e);
908
- } catch {
909
- }
910
- }
911
- Te && Te(w, H), X.current && !V && !Q.current && !ge.current && (ge.current = !0, requestAnimationFrame(() => Pe()));
912
- } else {
913
- ne.current.delete(w);
914
- const oe = o.current.get(w);
915
- if (oe) {
916
- try {
917
- oe.disconnect();
918
- } catch {
919
- }
920
- o.current.delete(w);
921
- }
922
- pe && pe(w);
923
- }
924
- },
925
- style: { ...N, ...I },
926
- className: E,
927
- onClick: (H) => ue == null ? void 0 : ue(w, R, H),
928
- "data-index": w,
929
- children: a(R, w)
930
- },
931
- U
932
- );
933
- });
934
- return /* @__PURE__ */ L.jsxs(
935
- "div",
936
- {
937
- ref: y,
938
- style: {
939
- position: "relative",
940
- overflowX: "hidden",
941
- overflowY: "auto",
942
- ...f
943
- },
944
- className: b,
945
- onScroll: Ge,
946
- children: [
947
- Ee,
948
- /* @__PURE__ */ L.jsx(
949
- "div",
950
- {
951
- style: {
952
- position: "relative",
953
- width: "100%",
954
- height: B.totalHeight,
955
- minWidth: 0
956
- },
957
- children: Qe()
958
- }
959
- )
960
- ]
961
- }
962
- );
963
- }
964
- );
965
- function bt() {
966
- const i = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), n = (f, b) => {
967
- const I = i.get(f);
968
- if (I)
969
- for (const E of I)
970
- try {
971
- E(b);
972
- } catch {
973
- }
974
- }, t = (f, b) => {
975
- let I = i.get(f);
976
- return I || (I = /* @__PURE__ */ new Set(), i.set(f, I)), I.add(b), () => {
977
- I == null || I.delete(b);
978
- };
979
- }, a = (f, b) => {
980
- const I = (E) => {
981
- b(E), s(f, I);
982
- };
983
- return t(f, I);
984
- }, s = (f, b) => {
985
- if (!b) {
986
- i.delete(f);
987
- return;
988
- }
989
- const I = i.get(f);
990
- I && I.delete(b);
991
- };
992
- return {
993
- emit: n,
994
- on: t,
995
- once: a,
996
- off: s,
997
- getData: (f) => r.get(f),
998
- setData: (f, b) => {
999
- r.set(f, b);
1000
- },
1001
- deleteData: (f) => {
1002
- r.delete(f);
1003
- },
1004
- hasData: (f) => r.has(f),
1005
- getAll: () => {
1006
- const f = {};
1007
- return r.forEach((b, I) => {
1008
- f[I] = b;
1009
- }), f;
1010
- },
1011
- clear: () => {
1012
- i.clear(), r.clear();
1013
- }
1014
- };
1015
- }
1016
- function wt() {
1017
- const i = /* @__PURE__ */ new Map(), r = (f) => {
1018
- if (f.dependencies)
1019
- for (const b of f.dependencies)
1020
- i.has(b);
1021
- i.set(f.name, { ...f, enabled: f.enabled ?? !0 }), f.init && Promise.resolve(f.init()).catch((b) => {
1022
- });
1023
- }, n = (f) => {
1024
- const b = [...f].sort(
1025
- (I, E) => (E.priority ?? 0) - (I.priority ?? 0)
1026
- );
1027
- for (const I of b)
1028
- r(I);
1029
- }, t = (f) => {
1030
- const b = i.get(f);
1031
- b && (b.destroy && Promise.resolve(b.destroy()).catch((I) => {
1032
- }), i.delete(f));
1033
- }, a = (f) => i.get(f), s = () => Array.from(i.values()), l = () => Array.from(i.values()).filter((f) => f.enabled !== !1);
1034
- return {
1035
- register: r,
1036
- registerAll: n,
1037
- unregister: t,
1038
- getPlugin: a,
1039
- getAllPlugins: s,
1040
- getEnabledPlugins: l,
1041
- enablePlugin: (f) => {
1042
- const b = i.get(f);
1043
- b && (b.enabled = !0);
1044
- },
1045
- disablePlugin: (f) => {
1046
- const b = i.get(f);
1047
- b && (b.enabled = !1);
1048
- },
1049
- hasPlugin: (f) => i.has(f),
1050
- executeHook: async (f, b, ...I) => {
1051
- const ce = [...l()].sort(
1052
- (K, k) => (k.priority ?? 0) - (K.priority ?? 0)
1053
- );
1054
- for (const K of ce) {
1055
- const k = K.hooks[f];
1056
- if (k)
1057
- try {
1058
- const Z = await Promise.resolve(k(b, ...I));
1059
- if (Z === !1)
1060
- return !1;
1061
- if (Z !== void 0 && Z !== !0)
1062
- return Z;
1063
- } catch {
1064
- if (f === "onError")
1065
- break;
1066
- }
1067
- }
1068
- },
1069
- clear: () => {
1070
- for (const f of i.values())
1071
- f.destroy && Promise.resolve(f.destroy()).catch((b) => {
1072
- });
1073
- i.clear();
1074
- }
1075
- };
1076
- }
1077
- function Rt() {
1078
- const i = typeof navigator < "u" ? navigator : void 0, r = (i == null ? void 0 : i.connection) || (i == null ? void 0 : i.mozConnection) || (i == null ? void 0 : i.webkitConnection);
1079
- if (r)
1080
- return {
1081
- effectiveType: r.effectiveType || "4g",
1082
- downlink: Number(r.downlink || 10),
1083
- rtt: Number(r.rtt || 50),
1084
- saveData: !!r.saveData,
1085
- online: (i == null ? void 0 : i.onLine) !== !1
1086
- };
1087
- }
1088
- function Tt() {
1089
- const i = typeof window < "u" ? window.innerWidth : 1024, r = typeof window < "u" ? window.innerHeight : 768, n = typeof window < "u" && window.devicePixelRatio || 1, t = typeof navigator < "u" && navigator.userAgent || "", a = /Mobile|Android|iPhone|iPad/i.test(t), l = /iPad|Tablet/i.test(t) ? "tablet" : a ? "mobile" : "desktop", c = typeof window < "u" && ("ontouchstart" in window || navigator.maxTouchPoints > 0);
1090
- return {
1091
- type: l,
1092
- os: t,
1093
- browser: t,
1094
- devicePixelRatio: n,
1095
- viewportWidth: i,
1096
- viewportHeight: r,
1097
- isTouchDevice: c,
1098
- isRetina: n >= 2
1099
- };
1100
- }
1101
- function kt(i, r) {
1102
- const n = Array.isArray(r) ? { plugins: r, enableDebug: !1 } : r, { plugins: t, enableDebug: a = !1 } = n, s = at((l, c) => {
1103
- const h = F(wt()).current, g = F(bt()).current, f = F(null), b = F(/* @__PURE__ */ new Map()), I = F(/* @__PURE__ */ new Map()), E = F(null), [ce, K] = de({
1104
- columns: l.columns || 3,
1105
- columnWidth: 0,
1106
- gap: l.gap || 16,
1107
- columnHeights: [],
1108
- totalHeight: 0,
1109
- containerWidth: 0,
1110
- containerHeight: 0
1111
- }), [k, Z] = de(/* @__PURE__ */ new Map()), [ye, we] = de({
1112
- scrollTop: 0,
1113
- scrollLeft: 0,
1114
- scrollHeight: 0,
1115
- scrollWidth: 0,
1116
- clientHeight: 0,
1117
- clientWidth: 0,
1118
- isScrolling: !1,
1119
- direction: null
1120
- }), [Re, re] = de(/* @__PURE__ */ new Set()), [Te, pe] = de(!1), [be, Se] = de(!1), [he, ee] = de(!0), [q, ue] = de(null), Ee = je(() => Rt(), []), G = je(() => Tt(), []), C = je(
1121
- () => ({
1122
- items: l.items || [],
1123
- itemCount: (l.items || []).length,
1124
- containerRef: f,
1125
- itemRefs: b.current,
1126
- getItemRef: (o) => b.current.get(o) || null,
1127
- layout: ce,
1128
- itemPositions: k,
1129
- getItemPosition: (o) => k.get(o) || null,
1130
- viewport: ye,
1131
- visibleItems: Re,
1132
- // 通过视口与项位置计算真实可见范围(最小/最大可见索引)
1133
- visibleRange: (() => {
1134
- const o = f.current;
1135
- if (!o || k.size === 0) return { start: 0, end: 0 };
1136
- const m = o.scrollTop, T = m + o.clientHeight;
1137
- let _ = null, M = null;
1138
- return k.forEach((B, z) => {
1139
- const $ = B.y, J = B.y + B.height;
1140
- Math.max(0, Math.min(T, J) - Math.max(m, $)) > 0 && ((_ === null || z < _) && (_ = z), (M === null || z > M) && (M = z));
1141
- }), {
1142
- start: _ ?? 0,
1143
- end: M ?? 0
1144
- };
1145
- })(),
1146
- isLayouting: Te,
1147
- isScrolling: ye.isScrolling,
1148
- isDragging: !1,
1149
- isLoading: be,
1150
- hasMore: he,
1151
- error: q,
1152
- props: l,
1153
- bus: g,
1154
- sharedData: I.current,
1155
- networkInfo: Ee,
1156
- deviceInfo: G,
1157
- relayout: () => {
1158
- var o;
1159
- return (o = E.current) == null ? void 0 : o.relayout();
1160
- },
1161
- scrollToItem: (o, m) => {
1162
- var T;
1163
- return (T = E.current) == null ? void 0 : T.scrollToItem(o, m);
1164
- },
1165
- scrollToTop: (o) => {
1166
- var m;
1167
- return (m = E.current) == null ? void 0 : m.scrollToTop(o);
1168
- },
1169
- scrollToBottom: (o) => {
1170
- var m;
1171
- return (m = E.current) == null ? void 0 : m.scrollToBottom(o);
1172
- },
1173
- measureItem: (o) => {
1174
- var m;
1175
- return ((m = E.current) == null ? void 0 : m.measureItem(o)) || Promise.resolve({ width: 0, height: 0 });
1176
- },
1177
- forceUpdate: () => {
1178
- var o;
1179
- return (o = E.current) == null ? void 0 : o.forceUpdate();
1180
- }
1181
- }),
1182
- [
1183
- l,
1184
- ce,
1185
- k,
1186
- ye,
1187
- Re,
1188
- Te,
1189
- be,
1190
- he,
1191
- q,
1192
- g,
1193
- Ee,
1194
- G
1195
- ]
1196
- ), j = F([]), me = t.map((o) => o.name);
1197
- (j.current.length === 0 || j.current.join("|") !== me.join("|")) && (h.clear(), h.registerAll(t), j.current = me);
1198
- const W = F(l);
1199
- Ue(() => {
1200
- const o = W.current;
1201
- o !== l && (h.executeHook("onPropsChange", C, o, l).catch(() => {
1202
- }), W.current = l);
1203
- }, [l]);
1204
- const y = je(() => {
1205
- let o = { ...l };
1206
- return t.forEach((m) => {
1207
- m.hooks.transformProps && (o = m.hooks.transformProps(o));
1208
- }), o;
1209
- }, [l, t, ye.clientWidth]), ne = {
1210
- ...y,
1211
- containerRefExternal: f,
1212
- itemRefsExternal: b,
1213
- // 将 enableDebug 作为默认值传递给核心的 debug(用户显式设置优先)
1214
- debug: y.debug ?? a,
1215
- // 挂载/卸载
1216
- onMount: () => {
1217
- var o;
1218
- (o = y.onMount) == null || o.call(y), h.executeHook("onMount", C).catch(() => {
1219
- });
1220
- },
1221
- onUnmount: () => {
1222
- var o;
1223
- (o = y.onUnmount) == null || o.call(y), h.executeHook("onUnmount", C).catch(() => {
1224
- });
1225
- },
1226
- // 布局钩子
1227
- onBeforeLayout: async () => {
1228
- var m;
1229
- return pe(!0), await h.executeHook(
1230
- "onBeforeLayout",
1231
- C
1232
- ) === !1 ? !1 : ((m = y.onBeforeLayout) == null ? void 0 : m.call(y)) ?? !0;
1233
- },
1234
- onLayout: () => {
1235
- var o;
1236
- (o = y.onLayout) == null || o.call(y), h.executeHook("onLayout", C).catch(() => {
1237
- });
1238
- },
1239
- onLayoutComplete: () => {
1240
- var o;
1241
- pe(!1), (o = y.onLayoutComplete) == null || o.call(y), h.executeHook("onLayoutComplete", C).catch(() => {
1242
- }), E.current && (K(E.current.getLayoutInfo()), Z(E.current.getAllItemPositions()));
1243
- },
1244
- // 项生命周期钩子
1245
- onItemMount: (o, m) => {
1246
- var T;
1247
- (T = y.onItemMount) == null || T.call(y, o, m), h.executeHook("onItemMount", C, o, m).catch(() => {
1248
- });
1249
- },
1250
- onItemUnmount: (o) => {
1251
- var m;
1252
- (m = y.onItemUnmount) == null || m.call(y, o), h.executeHook("onItemUnmount", C, o).catch(() => {
1253
- });
1254
- },
1255
- onItemEnterViewport: (o) => {
1256
- var M;
1257
- (M = y.onItemEnterViewport) == null || M.call(y, o);
1258
- const m = f.current, T = k.get(o), _ = (() => {
1259
- if (!m || !T)
1260
- return {
1261
- index: o,
1262
- isVisible: !0,
1263
- visibleRatio: 1,
1264
- isAboveViewport: !1,
1265
- isBelowViewport: !1
1266
- };
1267
- const B = m.scrollTop, z = B + m.clientHeight, $ = T.y, J = T.y + T.height, Q = Math.max(0, Math.min(z, J) - Math.max(B, $)), X = Math.min(1, Math.max(0, Q / T.height));
1268
- return {
1269
- index: o,
1270
- isVisible: Q > 0,
1271
- visibleRatio: X,
1272
- isAboveViewport: J <= B,
1273
- isBelowViewport: $ >= z
1274
- };
1275
- })();
1276
- h.executeHook("onItemEnterViewport", C, o, _).catch(() => {
1277
- });
1278
- },
1279
- onItemLeaveViewport: (o) => {
1280
- var M;
1281
- (M = y.onItemLeaveViewport) == null || M.call(y, o);
1282
- const m = f.current, T = k.get(o), _ = (() => {
1283
- if (!m || !T)
1284
- return {
1285
- index: o,
1286
- isVisible: !1,
1287
- visibleRatio: 0,
1288
- isAboveViewport: !1,
1289
- isBelowViewport: !1
1290
- };
1291
- const B = m.scrollTop, z = B + m.clientHeight, $ = T.y, J = T.y + T.height, Q = Math.max(0, Math.min(z, J) - Math.max(B, $)), X = Math.min(1, Math.max(0, Q / T.height));
1292
- return {
1293
- index: o,
1294
- isVisible: Q > 0,
1295
- visibleRatio: X,
1296
- isAboveViewport: J <= B,
1297
- isBelowViewport: $ >= z
1298
- };
1299
- })();
1300
- h.executeHook("onItemLeaveViewport", C, o, _).catch(() => {
1301
- });
1302
- },
1303
- // 滚动钩子
1304
- onScroll: (o, m) => {
1305
- var T;
1306
- (T = y.onScroll) == null || T.call(y, o, m), h.executeHook("onScroll", C, o, m).catch(() => {
1307
- }), f.current && we((_) => ({
1308
- ..._,
1309
- scrollTop: o,
1310
- scrollLeft: m,
1311
- isScrolling: !0
1312
- }));
1313
- },
1314
- // 尺寸变化钩子
1315
- onResize: (o, m) => {
1316
- var T;
1317
- (T = y.onResize) == null || T.call(y, o, m), we((_) => ({
1318
- ..._,
1319
- clientWidth: o,
1320
- clientHeight: m
1321
- })), h.executeHook("onResize", C, o, m).catch(() => {
1322
- });
1323
- },
1324
- // 到达底部钩子
1325
- onReachBottom: async (o) => {
1326
- var m;
1327
- await ((m = y.onReachBottom) == null ? void 0 : m.call(y, o)), await h.executeHook(
1328
- "onReachBottom",
1329
- C,
1330
- o
1331
- );
1332
- },
1333
- // 项点击钩子
1334
- onItemClick: (o, m, T) => {
1335
- var _;
1336
- (_ = y.onItemClick) == null || _.call(y, o, m, T), h.executeHook("onItemClick", C, o, m, T).catch(() => {
1337
- });
1338
- },
1339
- // 渲染项:允许插件包装项容器(renderItemWrapper)
1340
- renderItem: (o, m) => {
1341
- var M, B;
1342
- let _ = (y.renderItem || ((z) => null))(o, m);
1343
- for (const z of t) {
1344
- const $ = (B = (M = z.hooks).renderItemWrapper) == null ? void 0 : B.call(
1345
- M,
1346
- C,
1347
- m,
1348
- o,
1349
- _
1350
- );
1351
- $ != null && (_ = $);
1352
- }
1353
- return _;
1354
- },
1355
- // 子元素
1356
- children: /* @__PURE__ */ L.jsxs(L.Fragment, { children: [
1357
- y.children,
1358
- t.map((o, m) => {
1359
- var _, M;
1360
- const T = (M = (_ = o.hooks).renderOverlay) == null ? void 0 : M.call(_, C);
1361
- return T ? /* @__PURE__ */ L.jsx(Je.Fragment, { children: T }, `plugin-overlay-${o.name}-${m}`) : null;
1362
- })
1363
- ] })
1364
- };
1365
- return Je.useImperativeHandle(c, () => ({
1366
- relayout: () => {
1367
- var o;
1368
- return (o = E.current) == null ? void 0 : o.relayout();
1369
- },
1370
- scrollToItem: (o, m) => {
1371
- var T;
1372
- return (T = E.current) == null ? void 0 : T.scrollToItem(o, m);
1373
- },
1374
- scrollToTop: (o) => {
1375
- var m;
1376
- return (m = E.current) == null ? void 0 : m.scrollToTop(o);
1377
- },
1378
- scrollToBottom: (o) => {
1379
- var m;
1380
- return (m = E.current) == null ? void 0 : m.scrollToBottom(o);
1381
- },
1382
- getItemPosition: (o) => {
1383
- var m;
1384
- return ((m = E.current) == null ? void 0 : m.getItemPosition(o)) || null;
1385
- },
1386
- getAllItemPositions: () => {
1387
- var o;
1388
- return ((o = E.current) == null ? void 0 : o.getAllItemPositions()) || /* @__PURE__ */ new Map();
1389
- },
1390
- getColumnHeights: () => {
1391
- var o;
1392
- return ((o = E.current) == null ? void 0 : o.getColumnHeights()) || [];
1393
- },
1394
- getLayoutInfo: () => {
1395
- var o;
1396
- return ((o = E.current) == null ? void 0 : o.getLayoutInfo()) || {
1397
- columns: 0,
1398
- columnWidth: 0,
1399
- gap: 0,
1400
- columnHeights: [],
1401
- totalHeight: 0,
1402
- containerWidth: 0,
1403
- containerHeight: 0
1404
- };
1405
- },
1406
- getViewportInfo: () => {
1407
- var o;
1408
- return ((o = E.current) == null ? void 0 : o.getViewportInfo()) || {
1409
- scrollTop: 0,
1410
- scrollLeft: 0,
1411
- scrollHeight: 0,
1412
- scrollWidth: 0,
1413
- clientHeight: 0,
1414
- clientWidth: 0,
1415
- isScrolling: !1,
1416
- direction: null
1417
- };
1418
- },
1419
- forceUpdate: () => {
1420
- var o;
1421
- return (o = E.current) == null ? void 0 : o.forceUpdate();
1422
- },
1423
- getContainer: () => {
1424
- var o;
1425
- return ((o = E.current) == null ? void 0 : o.getContainer()) || null;
1426
- },
1427
- getItemElement: (o) => {
1428
- var m;
1429
- return ((m = E.current) == null ? void 0 : m.getItemElement(o)) || null;
1430
- },
1431
- measureItem: (o) => {
1432
- var m;
1433
- return ((m = E.current) == null ? void 0 : m.measureItem(o)) || Promise.resolve({ width: 0, height: 0 });
1434
- }
1435
- })), /* @__PURE__ */ L.jsx(i, { ref: E, ...ne });
1436
- });
1437
- return s.displayName = "WithPlugins(WaterfallCore)", s;
1438
- }
1439
- function Ct(i) {
1440
- const r = (n, t) => {
1441
- const a = Object.values(i.breakpoints).sort(
1442
- (l, c) => l.width - c.width
1443
- );
1444
- let s = t;
1445
- for (const l of a)
1446
- n >= l.width && (s = l.columns);
1447
- return s;
1448
- };
1449
- return {
1450
- name: "ResponsiveColumnsPlugin",
1451
- enabled: !0,
1452
- hooks: {
1453
- transformProps: (n) => {
1454
- const t = n.columns ?? 3, a = typeof window < "u" ? window.innerWidth : 1024, s = r(a, t);
1455
- return { ...n, columns: s };
1456
- },
1457
- onResize: (n, t) => {
1458
- var a;
1459
- (a = n.relayout) == null || a.call(n);
1460
- }
1461
- }
1462
- };
1463
- }
1464
- function _t(i) {
1465
- const r = (n) => {
1466
- if (!n) return 0;
1467
- if (typeof n == "number") return n * 2;
1468
- const { left: t = 0, right: a = 0 } = n;
1469
- return t + a;
1470
- };
1471
- return {
1472
- name: "AutoColumnPlugin",
1473
- enabled: !0,
1474
- hooks: {
1475
- transformProps: (n) => {
1476
- const t = typeof window < "u" ? window.innerWidth : 1024, a = n.columnGap ?? n.gap ?? 0, s = r(n.padding), l = Math.max(0, t - s), c = Math.max(1, Math.floor((l + a) / (i.minColumnWidth + a))), u = Math.max(1, i.minColumns ?? 1), h = i.maxColumns ?? Number.POSITIVE_INFINITY, p = Math.min(Math.max(c, u), h);
1477
- return {
1478
- ...n,
1479
- columns: p
1480
- };
1481
- },
1482
- onResize: (n) => {
1483
- var t;
1484
- (t = n.relayout) == null || t.call(n);
1485
- }
1486
- }
1487
- };
1488
- }
1489
- function Mt(i) {
1490
- return {
1491
- name: "AlignmentPlugin",
1492
- enabled: !0,
1493
- hooks: {
1494
- transformProps: (r) => ({ ...r, alignmentMode: i.mode }),
1495
- onResize: (r) => {
1496
- var n;
1497
- (n = r.relayout) == null || n.call(r);
1498
- }
1499
- }
1500
- };
1501
- }
1502
- function St(i) {
1503
- const r = typeof window < "u" ? window.innerWidth : 1024, n = i.responsive || {};
1504
- return r >= 1200 && n.xl ? n.xl : r >= 992 && n.lg ? n.lg : r >= 768 && n.md ? n.md : n.sm ? n.sm : {};
1505
- }
1506
- function Pt(i) {
1507
- return {
1508
- name: "GapPlugin",
1509
- enabled: !0,
1510
- hooks: {
1511
- transformProps: (r) => {
1512
- const n = { columnGap: i.columnGap, rowGap: i.rowGap }, t = St(i), a = {
1513
- columnGap: t.columnGap ?? n.columnGap ?? r.columnGap,
1514
- rowGap: t.rowGap ?? n.rowGap ?? r.rowGap
1515
- };
1516
- return { ...r, ...a };
1517
- },
1518
- onResize: (r) => {
1519
- var n;
1520
- (n = r.relayout) == null || n.call(r);
1521
- }
1522
- }
1523
- };
1524
- }
1525
- function Ht(i) {
1526
- return {
1527
- name: "FixedHeightPlugin",
1528
- enabled: !0,
1529
- hooks: {
1530
- transformProps: (r) => {
1531
- const { itemHeight: n } = i, t = (r.items || []).map((a) => typeof a == "object" && a !== null && "height" in a ? { ...a, height: n } : a);
1532
- return { ...r, items: t };
1533
- },
1534
- onResize: (r) => {
1535
- var n;
1536
- (n = r.relayout) == null || n.call(r);
1537
- }
1538
- }
1539
- };
1540
- }
1541
- function Ot(i) {
1542
- let r = null;
1543
- function n({
1544
- context: t
1545
- }) {
1546
- var Se, he, ee, q, ue, Ee;
1547
- const a = t.items || [], s = Math.max(1, ((Se = t.layout) == null ? void 0 : Se.columns) || 3), l = Number(((he = t.layout) == null ? void 0 : he.gap) || 0), c = ((ee = t.getContainer) == null ? void 0 : ee.call(t)) || null, u = Number(((q = t.layout) == null ? void 0 : q.columnWidth) || 0), h = u > 0 ? u : c ? (c.clientWidth - l * (s - 1)) / s : 0, p = i.overscanPx ?? 300, g = i.getItemHeight, f = !!i.dynamicHeights, b = Math.max(0, Number(i.estimateItemHeight ?? 200)), I = F(/* @__PURE__ */ new Map()), E = F(/* @__PURE__ */ new Map()), ce = F(/* @__PURE__ */ new Map()), K = F(!1), k = F(null), Z = F(/* @__PURE__ */ new Map()), ye = F([]), [we, Re] = de(0);
1548
- Ue(() => () => {
1549
- E.current.forEach((G) => {
1550
- try {
1551
- G.disconnect();
1552
- } catch {
1553
- }
1554
- }), E.current.clear(), I.current.clear(), ce.current.clear();
1555
- }, []);
1556
- const re = je(() => {
1557
- const G = Array.from({ length: s }, () => ({
1558
- indices: [],
1559
- sizes: [],
1560
- ys: [],
1561
- height: 0
1562
- })), C = Array.from({ length: s }, () => 0), j = ye.current, me = j.length !== a.length;
1563
- for (let W = 0; W < a.length; W++) {
1564
- const y = I.current.get(W), ne = (f ? y ?? void 0 : void 0) ?? (g ? g(a[W], W) : void 0) ?? b, o = Math.max(0, Number(ne) || 0);
1565
- let m;
1566
- if (me || j[W] === void 0) {
1567
- m = 0;
1568
- let _ = C[0];
1569
- for (let M = 1; M < s; M++)
1570
- C[M] < _ && (_ = C[M], m = M);
1571
- j[W] = m;
1572
- } else
1573
- m = j[W];
1574
- const T = C[m];
1575
- G[m].indices.push(W), G[m].sizes.push(o), G[m].ys.push(T), C[m] += o + l;
1576
- }
1577
- for (let W = 0; W < s; W++)
1578
- G[W].height = C[W];
1579
- return G;
1580
- }, [a, s, l, g, f, b, we]), Te = je(() => re.reduce((G, C) => Math.max(G, C.height), 0), [re]), pe = Number(((ue = t.viewport) == null ? void 0 : ue.scrollTop) || 0), be = pe + Number(((Ee = t.viewport) == null ? void 0 : Ee.clientHeight) || 0);
1581
- if (h <= 0) {
1582
- const G = Math.ceil(a.length / s), C = Math.max(0, G * (b + l));
1583
- return /* @__PURE__ */ L.jsx("div", { style: { position: "relative", inset: 0 }, children: /* @__PURE__ */ L.jsx("div", { style: { height: C, pointerEvents: "none" } }) });
1584
- }
1585
- return /* @__PURE__ */ L.jsxs("div", { style: { position: "relative", inset: 0 }, children: [
1586
- /* @__PURE__ */ L.jsx("div", { style: { height: Te, pointerEvents: "none" } }),
1587
- /* @__PURE__ */ L.jsx("div", { style: { position: "absolute", inset: 0 }, children: Array.from({ length: s }).map((G, C) => /* @__PURE__ */ L.jsx(
1588
- "div",
1589
- {
1590
- style: {
1591
- position: "absolute",
1592
- left: C * (h + l),
1593
- top: 0,
1594
- width: h,
1595
- height: Te
1596
- },
1597
- children: re[C].indices.map((j, me) => {
1598
- const W = re[C].ys[me], y = re[C].sizes[me];
1599
- if (!(W + y > pe - p && W < be + p)) return null;
1600
- const m = a[j], T = r ? r(m, j) : /* @__PURE__ */ L.jsx(
1601
- "div",
1602
- {
1603
- style: {
1604
- height: y,
1605
- boxSizing: "border-box",
1606
- background: "#fff",
1607
- borderBottom: "1px solid #f0f0f0"
1608
- }
1609
- }
1610
- ), _ = (M) => {
1611
- const B = ce.current.get(j) || null;
1612
- if (B === M) return;
1613
- const z = E.current.get(j);
1614
- if (z && B && B !== M) {
1615
- try {
1616
- z.disconnect();
1617
- } catch {
1618
- }
1619
- E.current.delete(j);
1620
- }
1621
- if (ce.current.set(j, M), !M || !f) return;
1622
- const $ = new ResizeObserver(() => {
1623
- const J = M.offsetHeight || 0, Q = I.current.get(j) || 0;
1624
- if (J > 0 && Math.abs(J - Q) > 0.5)
1625
- I.current.set(j, J), Z.current.set(j, 0), k.current && window.clearTimeout(k.current), k.current = window.setTimeout(() => {
1626
- Re((X) => X + 1), k.current = null, K.current = !1;
1627
- }, 50);
1628
- else {
1629
- const X = (Z.current.get(j) || 0) + 1;
1630
- if (Z.current.set(j, X), X >= 2) {
1631
- try {
1632
- $.disconnect();
1633
- } catch {
1634
- }
1635
- E.current.delete(j);
1636
- }
1637
- }
1638
- });
1639
- try {
1640
- $.observe(M), E.current.set(j, $);
1641
- } catch {
1642
- }
1643
- };
1644
- return /* @__PURE__ */ L.jsx(
1645
- "div",
1646
- {
1647
- ref: _,
1648
- style: { position: "absolute", top: W, left: 0, width: "100%", height: f ? void 0 : y },
1649
- children: T
1650
- },
1651
- j
1652
- );
1653
- })
1654
- },
1655
- C
1656
- )) })
1657
- ] });
1658
- }
1659
- return {
1660
- name: "VirtualWaterfallPlugin",
1661
- enabled: !0,
1662
- hooks: {
1663
- transformProps: (t) => (r = t.renderItem, {
1664
- ...t,
1665
- renderItem: () => null
1666
- }),
1667
- renderOverlay: (t) => /* @__PURE__ */ L.jsx(n, { context: t })
1668
- }
1669
- };
1670
- }
1671
- function At(i) {
1672
- return {
1673
- name: "ThrottlePlugin",
1674
- enabled: !0,
1675
- hooks: {
1676
- transformProps: (r) => ({
1677
- ...r,
1678
- throttleDelay: i.scroll,
1679
- debounceDelay: i.resize ?? r.debounceDelay
1680
- })
1681
- }
1682
- };
1683
- }
1684
- function jt(i) {
1685
- return {
1686
- name: "DebounceLayoutPlugin",
1687
- enabled: !0,
1688
- hooks: {
1689
- transformProps: (r) => ({ ...r, debounceDelay: i.delay })
1690
- }
1691
- };
1692
- }
1693
- function Lt(i) {
1694
- const r = /* @__PURE__ */ new Set(), n = () => {
1695
- if (r.size <= i.poolSize) return;
1696
- const t = r.values().next().value;
1697
- typeof t == "number" && r.delete(t);
1698
- };
1699
- return {
1700
- name: "RecyclePlugin",
1701
- enabled: !0,
1702
- hooks: {
1703
- onItemEnterViewport: (t, a) => {
1704
- const s = t.getItemRef(a);
1705
- s && (s.style.visibility = "visible"), r.add(a), n();
1706
- },
1707
- onItemLeaveViewport: (t, a) => {
1708
- const s = t.getItemRef(a);
1709
- s && (s.style.visibility = "hidden"), r.delete(a);
1710
- },
1711
- onItemUnmount: (t, a) => {
1712
- r.delete(a);
1713
- },
1714
- onUnmount: () => {
1715
- r.clear();
1716
- }
1717
- }
1718
- };
1719
- }
1720
- function Dt(i = {}) {
1721
- return {
1722
- name: "InfiniteScrollPlugin",
1723
- enabled: !0,
1724
- hooks: {
1725
- transformProps: (r) => {
1726
- const n = r.onReachBottom, t = Math.max(0, Number(i.threshold ?? 0)), a = i.onLoadMore ?? r.onLoadMore;
1727
- return {
1728
- ...r,
1729
- onReachBottom: async (s) => {
1730
- typeof n == "function" && await Promise.resolve(n(s)), s <= t && typeof a == "function" && await Promise.resolve(a());
1731
- }
1732
- };
1733
- }
1734
- }
1735
- };
1736
- }
1737
- function Wt(i = {}) {
1738
- return {
1739
- name: "PaginationPlugin",
1740
- enabled: !0,
1741
- hooks: {
1742
- transformProps: (r) => {
1743
- const n = Math.max(1, Number(r.pageIndex ?? 1)), t = Math.max(1, Number(r.pageSize ?? i.pageSize ?? 20)), a = Array.isArray(r.items) ? r.items : [], s = (n - 1) * t, l = s + t, c = a.slice(s, l);
1744
- return { ...r, items: c };
1745
- },
1746
- onPropsChange: (r, n, t) => {
1747
- var u;
1748
- const a = Math.max(1, Number((n == null ? void 0 : n.pageIndex) ?? 1)), s = Math.max(1, Number((t == null ? void 0 : t.pageIndex) ?? 1));
1749
- if (((typeof (t == null ? void 0 : t.scrollToTopOnPageChange) == "boolean" ? t.scrollToTopOnPageChange : void 0) ?? !!i.scrollToTop) && a !== s) {
1750
- const h = (t == null ? void 0 : t.scrollToTopBehavior) ?? i.scrollBehavior ?? "auto";
1751
- (u = r.scrollToTop) == null || u.call(r, { behavior: h });
1752
- }
1753
- }
1754
- }
1755
- };
1756
- }
1757
- function Bt(i = {}) {
1758
- return {
1759
- name: "FilterPlugin",
1760
- enabled: !0,
1761
- hooks: {
1762
- transformProps: (r) => {
1763
- const n = Array.isArray(r.items) ? r.items : [], t = r.filterFn || i.predicate;
1764
- if (typeof t != "function") return r;
1765
- const a = n.filter((s, l) => {
1766
- try {
1767
- return !!t(s, l);
1768
- } catch {
1769
- return !0;
1770
- }
1771
- });
1772
- return { ...r, items: a };
1773
- },
1774
- onPropsChange: (r, n, t) => {
1775
- var u;
1776
- const a = n == null ? void 0 : n.filterFn, s = t == null ? void 0 : t.filterFn;
1777
- if (((typeof (t == null ? void 0 : t.scrollToTopOnFilterChange) == "boolean" ? t.scrollToTopOnFilterChange : void 0) ?? !!i.scrollToTop) && a !== s) {
1778
- const h = (t == null ? void 0 : t.scrollToTopBehavior) ?? i.scrollBehavior ?? "auto";
1779
- (u = r.scrollToTop) == null || u.call(r, { behavior: h });
1780
- }
1781
- }
1782
- }
1783
- };
1784
- }
1785
- function Ft(i = {}) {
1786
- return {
1787
- name: "SortPlugin",
1788
- enabled: !0,
1789
- hooks: {
1790
- transformProps: (r) => {
1791
- const n = Array.isArray(r.items) ? r.items : [], t = r.sortComparator || i.comparator;
1792
- if (typeof t != "function") return r;
1793
- const a = [...n].sort((s, l) => {
1794
- try {
1795
- return t(s, l);
1796
- } catch {
1797
- return 0;
1798
- }
1799
- });
1800
- return { ...r, items: a };
1801
- },
1802
- onPropsChange: (r, n, t) => {
1803
- var u;
1804
- const a = n == null ? void 0 : n.sortComparator, s = t == null ? void 0 : t.sortComparator;
1805
- if (((typeof (t == null ? void 0 : t.scrollToTopOnSortChange) == "boolean" ? t.scrollToTopOnSortChange : void 0) ?? !!i.scrollToTop) && a !== s) {
1806
- const h = (t == null ? void 0 : t.scrollToTopBehavior) ?? i.scrollBehavior ?? "auto";
1807
- (u = r.scrollToTop) == null || u.call(r, { behavior: h });
1808
- }
1809
- }
1810
- }
1811
- };
1812
- }
1813
- function Vt(i = {}) {
1814
- const r = i.fields ?? [];
1815
- return {
1816
- name: "SearchPlugin",
1817
- enabled: !0,
1818
- hooks: {
1819
- transformProps: (n) => {
1820
- const t = String(n.searchQuery ?? "").trim(), a = Array.isArray(n.items) ? n.items : [];
1821
- if (!t) return n;
1822
- const s = t.toLowerCase(), l = a.filter((c) => {
1823
- if (typeof c != "object" || c === null) return !1;
1824
- const u = r.length > 0 ? r : Object.keys(c);
1825
- for (const h of u) {
1826
- const p = c[h];
1827
- if (p != null && String(p).toLowerCase().includes(s)) return !0;
1828
- }
1829
- return !1;
1830
- });
1831
- return { ...n, items: l };
1832
- },
1833
- onPropsChange: (n, t, a) => {
1834
- var h;
1835
- const s = String((t == null ? void 0 : t.searchQuery) ?? ""), l = String((a == null ? void 0 : a.searchQuery) ?? "");
1836
- if (((typeof (a == null ? void 0 : a.scrollToTopOnSearchChange) == "boolean" ? a.scrollToTopOnSearchChange : void 0) ?? !!i.scrollToTop) && s !== l) {
1837
- const p = (a == null ? void 0 : a.scrollToTopBehavior) ?? i.scrollBehavior ?? "auto";
1838
- (h = n.scrollToTop) == null || h.call(n, { behavior: p });
1839
- }
1840
- }
1841
- }
1842
- };
1843
- }
1844
- function zt(i = {}) {
1845
- const { log: r = !0 } = i;
1846
- return {
1847
- name: "ClickAnalyticsPlugin",
1848
- enabled: !0,
1849
- hooks: {
1850
- onMount: (n) => {
1851
- var t;
1852
- (t = n.sharedData) == null || t.set("click-count", 0);
1853
- },
1854
- onItemClick: (n, t, a, s) => {
1855
- var u, h, p;
1856
- const c = (((u = n.sharedData) == null ? void 0 : u.get("click-count")) || 0) + 1;
1857
- (h = n.sharedData) == null || h.set("click-count", c), (p = n.bus) == null || p.emit("analytics:click", { index: t, item: a, event: s, total: c });
1858
- },
1859
- renderOverlay: (n) => {
1860
- var a;
1861
- const t = ((a = n.sharedData) == null ? void 0 : a.get("click-count")) || 0;
1862
- return /* @__PURE__ */ L.jsxs(
1863
- "div",
1864
- {
1865
- style: {
1866
- position: "absolute",
1867
- top: 12,
1868
- right: 12,
1869
- padding: "10px 12px",
1870
- background: "#222",
1871
- color: "#fff",
1872
- borderRadius: 8,
1873
- fontSize: 14,
1874
- fontWeight: 600,
1875
- boxShadow: "0 4px 12px rgba(0,0,0,0.25)",
1876
- border: "1px solid rgba(255,255,255,0.15)",
1877
- pointerEvents: "none",
1878
- zIndex: 99
1879
- },
1880
- children: [
1881
- "点击次数:",
1882
- t,
1883
- /* @__PURE__ */ L.jsx("div", { style: { fontSize: 12, fontWeight: 400, opacity: 0.85, marginTop: 4 }, children: "提示:点击任意卡片观察计数变化" })
1884
- ]
1885
- }
1886
- );
1887
- }
1888
- }
1889
- };
1890
- }
1891
- function $t(i = {}) {
1892
- const r = i.storageKey || "waterfall-bookmark", n = i.scrollBehavior || "smooth", t = (a) => {
1893
- var u;
1894
- const s = a;
1895
- if (!s) return !1;
1896
- const l = (u = s.tagName) == null ? void 0 : u.toLowerCase(), c = (s.getAttribute && s.getAttribute("contenteditable")) === "true";
1897
- return l === "input" || l === "textarea" || c;
1898
- };
1899
- return {
1900
- name: "BookmarkPlugin",
1901
- enabled: !0,
1902
- hooks: {
1903
- onMount: (a) => {
1904
- const s = (l) => {
1905
- var h, p;
1906
- if (t(l.target)) return;
1907
- const c = (l.key || "").toLowerCase(), u = l.code || "";
1908
- if (c === "b" || u === "KeyB") {
1909
- const g = ((h = a.containerRef) == null ? void 0 : h.current) || null;
1910
- let f = 0;
1911
- g && g.scrollHeight > g.clientHeight ? f = g.scrollTop : f = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
1912
- try {
1913
- localStorage.setItem(r, String(Math.max(0, f)));
1914
- } catch {
1915
- }
1916
- } else if (c === "r" || u === "KeyR") {
1917
- let g = 0;
1918
- try {
1919
- const b = localStorage.getItem(r) || "0";
1920
- g = Math.max(0, Number(b) || 0);
1921
- } catch {
1922
- }
1923
- const f = ((p = a.containerRef) == null ? void 0 : p.current) || null;
1924
- f && f.scrollHeight > f.clientHeight ? f.scrollTo({ top: g, behavior: n }) : window.scrollTo({ top: g, behavior: n });
1925
- }
1926
- };
1927
- return window.addEventListener("keydown", s, { capture: !0 }), document.addEventListener("keydown", s, { capture: !0 }), () => {
1928
- window.removeEventListener("keydown", s, { capture: !0 }), document.removeEventListener("keydown", s, { capture: !0 });
1929
- };
1930
- }
1931
- }
1932
- };
1933
- }
1934
- function Ut(i = {}) {
1935
- const r = i.mode || "hash", n = i.keys || ["pageIndex", "pageSize", "searchQuery"];
1936
- function t() {
1937
- try {
1938
- if (r === "hash") {
1939
- const s = window.location.hash || "", l = s.indexOf("?"), c = l >= 0 ? s.slice(l + 1) : s.replace(/^#/, ""), u = new URLSearchParams(c), h = {};
1940
- return n.forEach((p) => {
1941
- const g = u.get(p);
1942
- g !== null && (h[p] = g);
1943
- }), h;
1944
- } else {
1945
- const s = new URLSearchParams(window.location.search), l = {};
1946
- return n.forEach((c) => {
1947
- const u = s.get(c);
1948
- u !== null && (l[c] = u);
1949
- }), l;
1950
- }
1951
- } catch {
1952
- return {};
1953
- }
1954
- }
1955
- function a(s) {
1956
- try {
1957
- const l = new URLSearchParams();
1958
- n.forEach((u) => {
1959
- const h = s[u];
1960
- h != null && String(h).length > 0 && l.set(u, String(h));
1961
- });
1962
- const c = l.toString();
1963
- if (r === "hash") {
1964
- const u = window.location.hash || "", g = `#${u.replace(/^#/, "").split("?")[0] || ""}${c ? `?${c}` : ""}`;
1965
- u !== g && history.replaceState(
1966
- null,
1967
- "",
1968
- `${window.location.pathname}${window.location.search}${g}`
1969
- );
1970
- } else {
1971
- const h = window.location.pathname + (c ? `?${c}` : "") + (window.location.hash || "");
1972
- history.replaceState(null, "", h);
1973
- }
1974
- } catch {
1975
- }
1976
- }
1977
- return {
1978
- name: "URLSyncPlugin",
1979
- enabled: !0,
1980
- hooks: {
1981
- onMount: (s) => {
1982
- var c;
1983
- const l = t();
1984
- (c = s.bus) == null || c.emit("urlsync:init", l);
1985
- },
1986
- onPropsChange: (s, l, c) => {
1987
- const u = {};
1988
- n.forEach((h) => {
1989
- const p = c == null ? void 0 : c[h];
1990
- p !== void 0 && (u[h] = p);
1991
- }), a(u);
1992
- }
1993
- }
1994
- };
1995
- }
1996
- function Nt(i = {}) {
1997
- const r = i.containerRole ?? "list", n = i.itemRole ?? "listitem", t = i.enableTabIndex ?? !0;
1998
- return {
1999
- name: "A11yPlugin",
2000
- enabled: !0,
2001
- hooks: {
2002
- renderOverlay: (a) => {
2003
- const s = a.containerRef.current;
2004
- return s && (s.setAttribute("role", r), s.setAttribute("aria-label", "Waterfall list")), null;
2005
- },
2006
- renderItemWrapper: (a, s, l) => /* @__PURE__ */ L.jsx(
2007
- "div",
2008
- {
2009
- role: n,
2010
- "aria-posinset": typeof l == "number" ? l + 1 : void 0,
2011
- "aria-setsize": a.itemCount,
2012
- tabIndex: t ? 0 : void 0,
2013
- style: { outline: "none" },
2014
- children: s
2015
- }
2016
- )
2017
- }
2018
- };
2019
- }
2020
- function xt(i = {}) {
2021
- const r = typeof window < "u" ? window.matchMedia("(prefers-reduced-motion: reduce)") : null, n = (r == null ? void 0 : r.matches) ?? !1, t = i.disableTransform ?? !0, a = i.removeTransitions ?? !0;
2022
- return {
2023
- name: "ReducedMotionPlugin",
2024
- enabled: !0,
2025
- hooks: {
2026
- transformProps: (s) => {
2027
- if (!n) return s;
2028
- const l = { ...s };
2029
- return t && (l.useTransform = !1), a && (l.itemStyle = { ...s.itemStyle ?? {}, transition: "none" }), l;
2030
- }
2031
- }
2032
- };
2033
- }
2034
- function Gt(i = {}) {
2035
- const r = i.duration ?? 300, n = i.easing ?? "ease";
2036
- return {
2037
- name: "TransitionPlugin",
2038
- enabled: !0,
2039
- hooks: {
2040
- onItemMount: (t, a, s) => {
2041
- s.style.transition = `transform ${r}ms ${n}, opacity ${r}ms ${n}`;
2042
- },
2043
- onLayout: (t) => {
2044
- t.itemRefs.forEach((a) => {
2045
- a && (a.style.transition = `transform ${r}ms ${n}, opacity ${r}ms ${n}`);
2046
- });
2047
- }
2048
- }
2049
- };
2050
- }
2051
- function Yt(i) {
2052
- const r = i.column ?? 0, n = new Set(i.pinnedIndices);
2053
- let t = 0;
2054
- return {
2055
- name: "PinItemPlugin",
2056
- enabled: !0,
2057
- hooks: {
2058
- onBeforeLayout: () => (t = 0, !0),
2059
- calculateItemPosition: (a, s, l) => {
2060
- if (!n.has(s)) return;
2061
- const { columnWidth: c, gap: u } = a.layout;
2062
- return {
2063
- x: r * (c + u),
2064
- y: t,
2065
- width: c,
2066
- height: l,
2067
- column: r,
2068
- row: 0
2069
- };
2070
- },
2071
- renderOverlay: () => null
2072
- }
2073
- };
2074
- }
2075
- function Kt(i = {}) {
2076
- const r = i.showOverlay ?? i.showOverlaySummary ?? !0, n = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map();
2077
- let a = !1;
2078
- return {
2079
- name: "HeatmapAnalyticsPlugin",
2080
- enabled: !0,
2081
- hooks: {
2082
- onLayoutComplete: (s) => {
2083
- if (a) return;
2084
- const { start: l, end: c } = s.visibleRange;
2085
- for (let u = l; u <= c; u++)
2086
- n.set(u, (n.get(u) || 0) + 1);
2087
- a = !0;
2088
- },
2089
- onItemEnterViewport: (s, l) => {
2090
- n.set(l, (n.get(l) || 0) + 1);
2091
- },
2092
- onItemClick: (s, l) => {
2093
- t.set(l, (t.get(l) || 0) + 1);
2094
- },
2095
- renderOverlay: () => {
2096
- if (!r) return null;
2097
- const s = Array.from(n.values()).reduce((c, u) => c + u, 0), l = Array.from(t.values()).reduce((c, u) => c + u, 0);
2098
- return /* @__PURE__ */ L.jsxs(
2099
- "div",
2100
- {
2101
- style: {
2102
- position: "sticky",
2103
- top: 0,
2104
- zIndex: 100,
2105
- display: "flex",
2106
- gap: 12,
2107
- alignItems: "center",
2108
- padding: "6px 10px",
2109
- background: "rgba(0,0,0,0.6)",
2110
- color: "white",
2111
- borderRadius: 8,
2112
- fontSize: 12,
2113
- marginBottom: 8
2114
- },
2115
- children: [
2116
- /* @__PURE__ */ L.jsxs("span", { children: [
2117
- "曝光总计: ",
2118
- s
2119
- ] }),
2120
- /* @__PURE__ */ L.jsxs("span", { children: [
2121
- "点击总计: ",
2122
- l
2123
- ] })
2124
- ]
2125
- }
2126
- );
2127
- }
2128
- }
2129
- };
2130
- }
2131
- function qt(i = {}) {
2132
- const r = i.storageKey || "waterfall-state", n = i.persistScroll ?? !0, t = i.persistKeys || ["pageIndex", "pageSize", "searchQuery"];
2133
- let a = !1;
2134
- function s() {
2135
- try {
2136
- const c = localStorage.getItem(r);
2137
- return c ? JSON.parse(c) : null;
2138
- } catch {
2139
- return null;
2140
- }
2141
- }
2142
- function l(c) {
2143
- try {
2144
- localStorage.setItem(r, JSON.stringify(c));
2145
- } catch {
2146
- }
2147
- }
2148
- return {
2149
- name: "StatePersistencePlugin",
2150
- enabled: !0,
2151
- hooks: {
2152
- // 首次渲染时,尽量将本地快照中的分页/查询键注入到 props,便于核心按恢复后的状态渲染
2153
- transformProps: (c) => {
2154
- if (a) return c;
2155
- const u = s();
2156
- if (!u) return c;
2157
- const h = { ...c };
2158
- let p = !1;
2159
- return t.forEach((g) => {
2160
- u[g] !== void 0 && (h[g] = u[g], p = !0);
2161
- }), p && (a = !0), h;
2162
- },
2163
- onMount: (c) => {
2164
- var p, g;
2165
- const u = s();
2166
- if (!u) return;
2167
- if (n) {
2168
- const f = Number(u.scrollTop ?? 0), b = c.containerRef.current;
2169
- b ? b.scrollTo({ top: f, behavior: "auto" }) : (p = c.scrollToTop) == null || p.call(c, { behavior: "auto" });
2170
- }
2171
- const h = {};
2172
- if (t.forEach((f) => {
2173
- u[f] !== void 0 && (h[f] = u[f]);
2174
- }), Object.keys(h).length > 0 && ((g = c.bus) == null || g.emit("state:restored", h), typeof window < "u"))
2175
- try {
2176
- window.dispatchEvent(new CustomEvent("waterfall:state-restored", { detail: h }));
2177
- } catch {
2178
- }
2179
- },
2180
- // props 变化时,增量更新快照(立即持久化分页/查询键)
2181
- onPropsChange: (c, u, h) => {
2182
- const g = { ...s() || {} };
2183
- t.forEach((f) => {
2184
- const b = h == null ? void 0 : h[f];
2185
- b !== void 0 && (g[f] = b);
2186
- }), l(g);
2187
- },
2188
- onUnmount: (c) => {
2189
- var h;
2190
- const u = {};
2191
- n && (u.scrollTop = ((h = c.containerRef.current) == null ? void 0 : h.scrollTop) || 0), t.forEach((p) => {
2192
- var f;
2193
- const g = (f = c.props) == null ? void 0 : f[p];
2194
- g !== void 0 && (u[p] = g);
2195
- }), l(u);
2196
- }
2197
- }
2198
- };
2199
- }
2200
- function Jt(i = {}) {
2201
- const r = i.groupBy || ((t) => (t == null ? void 0 : t.category) ?? "default"), n = "GROUPS";
2202
- return {
2203
- name: "GroupingPlugin",
2204
- enabled: !0,
2205
- hooks: {
2206
- onPropsChange: (t, a, s) => {
2207
- var u;
2208
- const l = s.items || [], c = /* @__PURE__ */ new Map();
2209
- l.forEach((h, p) => {
2210
- const g = r(h, p);
2211
- c.has(g) || c.set(g, []), c.get(g).push(p);
2212
- }), (u = t.sharedData) == null || u.set(n, c);
2213
- },
2214
- renderOverlay: (t) => {
2215
- var l;
2216
- const a = ((l = t.sharedData) == null ? void 0 : l.get(n)) || /* @__PURE__ */ new Map();
2217
- if (a.size === 0) return null;
2218
- const s = Array.from(a.entries()).slice(0, 3);
2219
- return /* @__PURE__ */ L.jsxs(
2220
- "div",
2221
- {
2222
- style: {
2223
- position: "absolute",
2224
- top: 12,
2225
- left: 12,
2226
- zIndex: 99,
2227
- background: "#111827",
2228
- color: "#fff",
2229
- padding: "10px",
2230
- borderRadius: 8,
2231
- boxShadow: "0 4px 12px rgba(0,0,0,0.25)",
2232
- border: "1px solid rgba(255,255,255,0.15)",
2233
- minWidth: 160,
2234
- fontSize: 12
2235
- },
2236
- children: [
2237
- /* @__PURE__ */ L.jsxs("div", { style: { opacity: 0.85, marginBottom: 6 }, children: [
2238
- "分组统计:",
2239
- a.size,
2240
- " 组"
2241
- ] }),
2242
- s.map(([c, u]) => /* @__PURE__ */ L.jsxs("div", { children: [
2243
- String(c),
2244
- ":",
2245
- u.length,
2246
- " 项"
2247
- ] }, String(c)))
2248
- ]
2249
- }
2250
- );
2251
- }
2252
- }
2253
- };
2254
- }
2255
- function Qt(i = {}) {
2256
- const r = i.title || "分组标题";
2257
- return {
2258
- name: "StickyHeaderPlugin",
2259
- enabled: !0,
2260
- hooks: {
2261
- renderOverlay: (n) => {
2262
- var s;
2263
- const t = ((s = n.sharedData) == null ? void 0 : s.get("GROUPS")) || /* @__PURE__ */ new Map(), a = t.size > 0 ? Array.from(t.keys())[0] : void 0;
2264
- return /* @__PURE__ */ L.jsxs(
2265
- "div",
2266
- {
2267
- style: {
2268
- position: "sticky",
2269
- top: 0,
2270
- zIndex: 20,
2271
- background: "#111827",
2272
- color: "#fff",
2273
- borderBottom: "1px solid rgba(255,255,255,0.15)",
2274
- boxShadow: "0 4px 12px rgba(0,0,0,0.15)",
2275
- padding: "10px 14px",
2276
- fontSize: 15,
2277
- fontWeight: 600
2278
- },
2279
- children: [
2280
- r,
2281
- " ",
2282
- a !== void 0 ? `:${String(a)}` : "",
2283
- /* @__PURE__ */ L.jsx("span", { style: { marginLeft: 8, fontSize: 12, opacity: 0.8 }, children: "提示:向下滚动观察吸顶条" })
2284
- ]
2285
- }
2286
- );
2287
- }
2288
- }
2289
- };
2290
- }
2291
- function Xt(i = {}) {
2292
- const r = i.getAnchorId || ((t) => t == null ? void 0 : t.id);
2293
- let n;
2294
- return {
2295
- name: "ScrollAnchorPlugin",
2296
- enabled: !0,
2297
- hooks: {
2298
- onMount: (t) => {
2299
- var a;
2300
- n = (a = t.bus) == null ? void 0 : a.on("anchor:scrollToId", (s) => {
2301
- var u, h;
2302
- const c = (((u = t.props) == null ? void 0 : u.items) || []).findIndex((p, g) => r(p, g) === s.id);
2303
- c >= 0 && ((h = t.scrollToItem) == null || h.call(t, c, { behavior: "smooth", block: "start" }));
2304
- });
2305
- },
2306
- onUnmount: () => n == null ? void 0 : n()
2307
- }
2308
- };
2309
- }
2310
- function Zt(i = {}) {
2311
- const r = i.enabled ?? !0;
2312
- return {
2313
- name: "DragReorderPlugin",
2314
- enabled: r,
2315
- hooks: {
2316
- renderItemWrapper: (n, t, a, s) => {
2317
- const l = r, c = (p) => {
2318
- var g;
2319
- p.dataTransfer.setData("text/plain", String(t)), (g = n.sharedData) == null || g.set("drag-from", t);
2320
- }, u = (p) => {
2321
- p.preventDefault();
2322
- }, h = (p) => {
2323
- var b, I;
2324
- const g = Number(p.dataTransfer.getData("text/plain")), f = t;
2325
- if ((b = n.sharedData) == null || b.set("drag-to", f), (I = n.bus) == null || I.emit("drag:reorder", { from: g, to: f }), typeof window < "u")
2326
- try {
2327
- window.dispatchEvent(new CustomEvent("waterfall:drag-reorder", { detail: { from: g, to: f } }));
2328
- } catch {
2329
- }
2330
- };
2331
- return /* @__PURE__ */ L.jsx(
2332
- "div",
2333
- {
2334
- draggable: l,
2335
- onDragStart: c,
2336
- onDragOver: u,
2337
- onDrop: h,
2338
- style: {
2339
- cursor: l ? "grab" : "default",
2340
- border: "1px dashed #bdbdbd",
2341
- borderRadius: 6
2342
- },
2343
- children: s
2344
- }
2345
- );
2346
- }
2347
- }
2348
- };
2349
- }
2350
- export {
2351
- It as WaterfallCore,
2352
- Nt as createA11yPlugin,
2353
- Mt as createAlignmentPlugin,
2354
- _t as createAutoColumnPlugin,
2355
- $t as createBookmarkPlugin,
2356
- zt as createClickAnalyticsPlugin,
2357
- jt as createDebounceLayoutPlugin,
2358
- Zt as createDragReorderPlugin,
2359
- Bt as createFilterPlugin,
2360
- Ht as createFixedHeightPlugin,
2361
- Pt as createGapPlugin,
2362
- Jt as createGroupingPlugin,
2363
- Kt as createHeatmapAnalyticsPlugin,
2364
- Dt as createInfiniteScrollPlugin,
2365
- Wt as createPaginationPlugin,
2366
- Yt as createPinItemPlugin,
2367
- bt as createPluginBus,
2368
- wt as createPluginManager,
2369
- Lt as createRecyclePlugin,
2370
- xt as createReducedMotionPlugin,
2371
- Ct as createResponsiveColumnsPlugin,
2372
- Xt as createScrollAnchorPlugin,
2373
- Vt as createSearchPlugin,
2374
- Ft as createSortPlugin,
2375
- qt as createStatePersistencePlugin,
2376
- Qt as createStickyHeaderPlugin,
2377
- At as createThrottlePlugin,
2378
- Gt as createTransitionPlugin,
2379
- Ut as createURLSyncPlugin,
2380
- Ot as createVirtualWaterfallPlugin,
2381
- kt as withPlugins
2382
- };