vane-waterfall 1.0.1

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 (42) hide show
  1. package/README.md +370 -0
  2. package/dist/404.jpg +0 -0
  3. package/dist/components/WaterfallPlugin/core/WaterfallCore.d.ts +174 -0
  4. package/dist/components/WaterfallPlugin/custom-plugins/A11y/index.d.ts +16 -0
  5. package/dist/components/WaterfallPlugin/custom-plugins/Alignment/index.d.ts +12 -0
  6. package/dist/components/WaterfallPlugin/custom-plugins/AutoColumn/index.d.ts +17 -0
  7. package/dist/components/WaterfallPlugin/custom-plugins/Bookmark/index.d.ts +15 -0
  8. package/dist/components/WaterfallPlugin/custom-plugins/ClickAnalytics/index.d.ts +12 -0
  9. package/dist/components/WaterfallPlugin/custom-plugins/DebounceLayout/index.d.ts +10 -0
  10. package/dist/components/WaterfallPlugin/custom-plugins/DragReorder/index.d.ts +13 -0
  11. package/dist/components/WaterfallPlugin/custom-plugins/Filter/index.d.ts +15 -0
  12. package/dist/components/WaterfallPlugin/custom-plugins/FixedHeight/index.d.ts +11 -0
  13. package/dist/components/WaterfallPlugin/custom-plugins/Gap/index.d.ts +31 -0
  14. package/dist/components/WaterfallPlugin/custom-plugins/Grouping/index.d.ts +12 -0
  15. package/dist/components/WaterfallPlugin/custom-plugins/HeatmapAnalytics/index.d.ts +14 -0
  16. package/dist/components/WaterfallPlugin/custom-plugins/InfiniteScroll/index.d.ts +13 -0
  17. package/dist/components/WaterfallPlugin/custom-plugins/Pagination/index.d.ts +15 -0
  18. package/dist/components/WaterfallPlugin/custom-plugins/PinItem/index.d.ts +13 -0
  19. package/dist/components/WaterfallPlugin/custom-plugins/Recycle/index.d.ts +12 -0
  20. package/dist/components/WaterfallPlugin/custom-plugins/ReducedMotion/index.d.ts +13 -0
  21. package/dist/components/WaterfallPlugin/custom-plugins/ResponsiveColumns/index.d.ts +10 -0
  22. package/dist/components/WaterfallPlugin/custom-plugins/ScrollAnchor/index.d.ts +12 -0
  23. package/dist/components/WaterfallPlugin/custom-plugins/Search/index.d.ts +15 -0
  24. package/dist/components/WaterfallPlugin/custom-plugins/Sort/index.d.ts +15 -0
  25. package/dist/components/WaterfallPlugin/custom-plugins/StatePersistence/index.d.ts +16 -0
  26. package/dist/components/WaterfallPlugin/custom-plugins/StickyHeader/index.d.ts +11 -0
  27. package/dist/components/WaterfallPlugin/custom-plugins/Throttle/index.d.ts +12 -0
  28. package/dist/components/WaterfallPlugin/custom-plugins/Transition/index.d.ts +13 -0
  29. package/dist/components/WaterfallPlugin/custom-plugins/URLSync/index.d.ts +14 -0
  30. package/dist/components/WaterfallPlugin/custom-plugins/VirtualWaterfall/index.d.ts +12 -0
  31. package/dist/components/WaterfallPlugin/custom-plugins/index.d.ts +30 -0
  32. package/dist/components/WaterfallPlugin/index.d.ts +10 -0
  33. package/dist/components/WaterfallPlugin/plugins/PluginBus.d.ts +2 -0
  34. package/dist/components/WaterfallPlugin/plugins/PluginManager.d.ts +2 -0
  35. package/dist/components/WaterfallPlugin/plugins/index.d.ts +8 -0
  36. package/dist/components/WaterfallPlugin/plugins/types.d.ts +468 -0
  37. package/dist/components/WaterfallPlugin/plugins/withPlugins.d.ts +8 -0
  38. package/dist/index.d.ts +11 -0
  39. package/dist/index.es.js +2382 -0
  40. package/dist/index.umd.js +30 -0
  41. package/dist/vite.svg +1 -0
  42. package/package.json +82 -0
@@ -0,0 +1,2382 @@
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
+ };