react-render-wave
Version:
A compact React hook and component for progressive rendering of large datasets with optional scroll virtualization.
765 lines (764 loc) • 47.1 kB
JavaScript
import aA, { useState as eA, useRef as IA, useEffect as X, useCallback as nA, forwardRef as jA, useImperativeHandle as LA } from "react";
var V = { exports: {} }, T = {};
/**
* @license React
* react-jsx-runtime.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var oA;
function xA() {
if (oA) return T;
oA = 1;
var A = Symbol.for("react.transitional.element"), g = Symbol.for("react.fragment");
function B(C, Q, e) {
var t = null;
if (e !== void 0 && (t = "" + e), Q.key !== void 0 && (t = "" + Q.key), "key" in Q) {
e = {};
for (var r in Q)
r !== "key" && (e[r] = Q[r]);
} else e = Q;
return Q = e.ref, {
$$typeof: A,
type: C,
key: t,
ref: Q !== void 0 ? Q : null,
props: e
};
}
return T.Fragment = g, T.jsx = B, T.jsxs = B, T;
}
var Z = {};
/**
* @license React
* react-jsx-runtime.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var rA;
function TA() {
return rA || (rA = 1, process.env.NODE_ENV !== "production" && function() {
function A(I) {
if (I == null) return null;
if (typeof I == "function")
return I.$$typeof === S ? null : I.displayName || I.name || null;
if (typeof I == "string") return I;
switch (I) {
case k:
return "Fragment";
case F:
return "Profiler";
case m:
return "StrictMode";
case f:
return "Suspense";
case CA:
return "SuspenseList";
case W:
return "Activity";
}
if (typeof I == "object")
switch (typeof I.tag == "number" && console.error(
"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
), I.$$typeof) {
case K:
return "Portal";
case gA:
return (I.displayName || "Context") + ".Provider";
case H:
return (I._context.displayName || "Context") + ".Consumer";
case BA:
var E = I.render;
return I = I.displayName, I || (I = E.displayName || E.name || "", I = I !== "" ? "ForwardRef(" + I + ")" : "ForwardRef"), I;
case tA:
return E = I.displayName || null, E !== null ? E : A(I.type) || "Memo";
case QA:
E = I._payload, I = I._init;
try {
return A(I(E));
} catch {
}
}
return null;
}
function g(I) {
return "" + I;
}
function B(I) {
try {
g(I);
var E = !1;
} catch {
E = !0;
}
if (E) {
E = console;
var n = E.error, i = typeof Symbol == "function" && Symbol.toStringTag && I[Symbol.toStringTag] || I.constructor.name || "Object";
return n.call(
E,
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
i
), g(I);
}
}
function C(I) {
if (I === k) return "<>";
if (typeof I == "object" && I !== null && I.$$typeof === QA)
return "<...>";
try {
var E = A(I);
return E ? "<" + E + ">" : "<...>";
} catch {
return "<...>";
}
}
function Q() {
var I = R.A;
return I === null ? null : I.getOwner();
}
function e() {
return Error("react-stack-top-frame");
}
function t(I) {
if (v.call(I, "key")) {
var E = Object.getOwnPropertyDescriptor(I, "key").get;
if (E && E.isReactWarning) return !1;
}
return I.key !== void 0;
}
function r(I, E) {
function n() {
_ || (_ = !0, console.error(
"%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://react.dev/link/special-props)",
E
));
}
n.isReactWarning = !0, Object.defineProperty(I, "key", {
get: n,
configurable: !0
});
}
function a() {
var I = A(this.type);
return U[I] || (U[I] = !0, console.error(
"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
)), I = this.props.ref, I !== void 0 ? I : null;
}
function l(I, E, n, i, w, c, L, x) {
return n = c.ref, I = {
$$typeof: p,
type: I,
key: E,
props: c,
_owner: w
}, (n !== void 0 ? n : null) !== null ? Object.defineProperty(I, "ref", {
enumerable: !1,
get: a
}) : Object.defineProperty(I, "ref", { enumerable: !1, value: null }), I._store = {}, Object.defineProperty(I._store, "validated", {
configurable: !1,
enumerable: !1,
writable: !0,
value: 0
}), Object.defineProperty(I, "_debugInfo", {
configurable: !1,
enumerable: !1,
writable: !0,
value: null
}), Object.defineProperty(I, "_debugStack", {
configurable: !1,
enumerable: !1,
writable: !0,
value: L
}), Object.defineProperty(I, "_debugTask", {
configurable: !1,
enumerable: !1,
writable: !0,
value: x
}), Object.freeze && (Object.freeze(I.props), Object.freeze(I)), I;
}
function M(I, E, n, i, w, c, L, x) {
var s = E.children;
if (s !== void 0)
if (i)
if (O(s)) {
for (i = 0; i < s.length; i++)
u(s[i]);
Object.freeze && Object.freeze(s);
} else
console.error(
"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
);
else u(s);
if (v.call(E, "key")) {
s = A(I);
var h = Object.keys(E).filter(function(UA) {
return UA !== "key";
});
i = 0 < h.length ? "{key: someKey, " + h.join(": ..., ") + ": ...}" : "{key: someKey}", o[s + i] || (h = 0 < h.length ? "{" + h.join(": ..., ") + ": ...}" : "{}", console.error(
`A props object containing a "key" prop is being spread into JSX:
let props = %s;
<%s {...props} />
React keys must be passed directly to JSX without using spread:
let props = %s;
<%s key={someKey} {...props} />`,
i,
s,
h,
s
), o[s + i] = !0);
}
if (s = null, n !== void 0 && (B(n), s = "" + n), t(E) && (B(E.key), s = "" + E.key), "key" in E) {
n = {};
for (var EA in E)
EA !== "key" && (n[EA] = E[EA]);
} else n = E;
return s && r(
n,
typeof I == "function" ? I.displayName || I.name || "Unknown" : I
), l(
I,
s,
c,
w,
Q(),
n,
L,
x
);
}
function u(I) {
typeof I == "object" && I !== null && I.$$typeof === p && I._store && (I._store.validated = 1);
}
var Y = aA, p = Symbol.for("react.transitional.element"), K = Symbol.for("react.portal"), k = Symbol.for("react.fragment"), m = Symbol.for("react.strict_mode"), F = Symbol.for("react.profiler"), H = Symbol.for("react.consumer"), gA = Symbol.for("react.context"), BA = Symbol.for("react.forward_ref"), f = Symbol.for("react.suspense"), CA = Symbol.for("react.suspense_list"), tA = Symbol.for("react.memo"), QA = Symbol.for("react.lazy"), W = Symbol.for("react.activity"), S = Symbol.for("react.client.reference"), R = Y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, v = Object.prototype.hasOwnProperty, O = Array.isArray, G = console.createTask ? console.createTask : function() {
return null;
};
Y = {
"react-stack-bottom-frame": function(I) {
return I();
}
};
var _, U = {}, q = Y["react-stack-bottom-frame"].bind(
Y,
e
)(), j = G(C(e)), o = {};
Z.Fragment = k, Z.jsx = function(I, E, n, i, w) {
var c = 1e4 > R.recentlyCreatedOwnerStacks++;
return M(
I,
E,
n,
!1,
i,
w,
c ? Error("react-stack-top-frame") : q,
c ? G(C(I)) : j
);
}, Z.jsxs = function(I, E, n, i, w) {
var c = 1e4 > R.recentlyCreatedOwnerStacks++;
return M(
I,
E,
n,
!0,
i,
w,
c ? Error("react-stack-top-frame") : q,
c ? G(C(I)) : j
);
};
}()), Z;
}
var iA;
function ZA() {
return iA || (iA = 1, process.env.NODE_ENV === "production" ? V.exports = xA() : V.exports = TA()), V.exports;
}
var N = ZA();
function DA({
length: A,
batchSize: g = 20,
interval: B = 50,
startIndex: C = 0
}) {
const [Q, e] = eA(C), t = IA(null), r = IA(null);
return X(() => {
let a = !0;
const l = () => {
e((M) => {
const u = Math.min(M + g, A);
return u < A && a && (t.current = setTimeout(() => {
r.current = requestAnimationFrame(l);
}, B)), u;
});
};
return l(), () => {
a = !1, t.current && clearTimeout(t.current), r.current && cancelAnimationFrame(r.current);
};
}, [A, g, B]), Array.from({ length: Q - C }, (a, l) => l + C);
}
function DI({
items: A,
batchSize: g,
interval: B,
startIndex: C,
renderItem: Q
}) {
const e = DA({
length: A.length,
batchSize: g,
interval: B,
startIndex: C
});
return /* @__PURE__ */ N.jsx(N.Fragment, { children: e.map((t) => Q(A[t], t)) });
}
function XA({
itemCount: A,
itemSize: g = 45,
horizontal: B = !1,
preRenderedItemCount: C = 0
}) {
const Q = IA(null), e = IA(null), t = B ? "scrollLeft" : "scrollTop";
X(() => {
e.current && (B ? e.current.style.width = `${A * g}px` : e.current.style.height = `${A * g}px`);
}, [A, g, B]);
const r = nA(
(l) => {
Q.current && (Q.current[t] = l);
},
[t]
), a = nA(
(l) => {
const M = l * g;
r(M);
},
[g, r]
);
return {
outerContainerRef: Q,
innerContainerRef: e,
scrollToOffset: r,
scrollToItem: a
};
}
const pA = "data:application/wasm;base64,AGFzbQEAAAAByAEfYAJ/fwBgAn9/AX9gA39/fwF/YAF/AGADf39/AGAEf39/fwF/YAAAYAV/f39/fwBgBH9/f38AYAZ/f39/f38Bf2AFf39/f38Bf2AAAn9/YAJ/bwBgAn9/AW9gAXwBb2ACb38Bb2ABbwF/YAABb2ACb28Bf2ADb29vAW9gAX8Bf2AAAX9gBn9/f39/fwBgBH9/f38Cf39gBX9/fH9/AGAEf3x/fwBgBX9/fn9/AGAEf35/fwBgBX9/fX9/AGAEf31/fwBgAW8BbwLIBAoeLi9yZWFjdF9yZW5kZXJfd2F2ZV93YXNtX2JnLmpzFV9fd2JpbmRnZW5fc3RyaW5nX2dldAAMHi4vcmVhY3RfcmVuZGVyX3dhdmVfd2FzbV9iZy5qcxVfX3diaW5kZ2VuX3N0cmluZ19uZXcADR4uL3JlYWN0X3JlbmRlcl93YXZlX3dhc21fYmcuanMVX193YmluZGdlbl9udW1iZXJfbmV3AA4eLi9yZWFjdF9yZW5kZXJfd2F2ZV93YXNtX2JnLmpzGl9fd2JnX2dldF9iOWI5MzA0N2ZlM2NmNDViAA8eLi9yZWFjdF9yZW5kZXJfd2F2ZV93YXNtX2JnLmpzHV9fd2JnX2xlbmd0aF9lMmQyYTQ5MTMyYzFiMjU2ABAeLi9yZWFjdF9yZW5kZXJfd2F2ZV93YXNtX2JnLmpzGl9fd2JnX25ld181ZTBiZTczNTIxYmM4YzE3ABEeLi9yZWFjdF9yZW5kZXJfd2F2ZV93YXNtX2JnLmpzGl9fd2JnX2hhc183NmNhNjZlMmYyNWQxYzQ5ABIeLi9yZWFjdF9yZW5kZXJfd2F2ZV93YXNtX2JnLmpzGl9fd2JnX3NldF84ZmM2YmY4YTViMTA3MWQxABMeLi9yZWFjdF9yZW5kZXJfd2F2ZV93YXNtX2JnLmpzEF9fd2JpbmRnZW5fdGhyb3cAAB4uL3JlYWN0X3JlbmRlcl93YXZlX3dhc21fYmcuanMfX193YmluZGdlbl9pbml0X2V4dGVybnJlZl90YWJsZQAGAz8+FAIDAgABFQABAAYABAkABwMWCAEAAgIAAAAFAQIAFwUJAQcYChocAwgCAwQeAwEFBAIBAAAAAQABBgEAAAAECQJwAR8fbwCAAQUDAQARBgkBfwFBgIDAAAsHwwEKBm1lbW9y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JCADQiA3AhwgA0EANgIUIANBADYCDAJ/AkACQAJAIAIoAhAiCkUEQCACKAIMIgBFDQEgAigCCCIBIABBA3RqIQQgAEEBa0H/////AXFBAWohByACKAIAIQADQCAAQQRqKAIAIgUEQCADKAIoIAAoAgAgBSADKAIsKAIMEQIADQQLIAEoAgAgA0EMaiABQQRqKAIAEQEADQMgAEEIaiEAIAFBCGoiASAERw0ACwwBCyACKAIUIgBFDQAgAEEFdCELIABBAWtB////P3FBAWohByACKAIIIQUgAigCACEAA0AgAEEEaigCACIBBEAgAygCKCAAKAIAIAEgAygCLCgCDBECAA0DCyADIAggCmoiAUEQaigCADYCHCADIAFBHGotAAA6ACQgAyABQRhqKAIANgIgIAFBDGooAgAhBEEAIQlBACEGAkACQAJAIAFBCGooAgBBAWsOAgACAQsgBEEDdCAFaiIMKAIADQEgDCgCBCEEC0EBIQYLIAMgBDYCECADIAY2AgwgAUEEaigCACEEAkACQAJAIAEoAgBBAWsOAgACAQsgBEEDdCAFaiIGKAIADQEgBigCBCEEC0EBIQkLIAMgBDYCGCADIAk2AhQgBSABQRRqKAIAQQN0aiIBKAIAIANBDGogAUEEaigCABEBAA0CIABBCGohACALIAhBIGoiCEcNAAsLIAcgAigCBE8NASADKAIoIAIoAgAgB0EDdGoiACgCACAAKAIEIAMoAiwoAgwRAgBFDQELQQEMAQtBAAsgA0EwaiQAC/kDAQJ/IAAgAWohAgJAAkAgACgCBCIDQQFxDQAgA0ECcUUNASAAKAIAIgMgAWohASAAIANrIgBBmJDAACgCAEYEQCACKAIEQQNxQQNHDQFBkJDAACABNgIAIAIgAigCBEF+cTYCBCAAIAFBAXI2AgQgAiABNgIADAILIAAgAxARCwJAAkACQCACKAIEIgNBAnFFBEAgAkGckMAAKAIARg0CIAJBmJDAACgCAEYNAyACIANBeHEiAhARIAAgASACaiIBQQFyNgIEIAAgAWogATYCACAAQZiQwAAoAgBHDQFBkJDAACABNgIADwsgAiADQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFBgAJPBEAgACABEBMPCyABQfgBcUGAjsAAaiECAn9BiJDAACgCACIDQQEgAUEDdnQiAXFFBEBBiJDAACABIANyNgIAIAIMAQsgAigCCAshASACIAA2AgggASAANgIMIAAgAjYCDCAAIAE2AggPC0GckMAAIAA2AgBBlJDAAEGUkMAAKAIAIAFqIgE2AgAgACABQQFyNgIEIABBmJDAACgCAEcNAUGQkMAAQQA2AgBBmJDAAEEANgIADwtBmJDAACAANgIAQZCQwABBkJDAACgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgALC+cCAQV/AkBBzf97QRAgACAAQRBNGyIAayABTQ0AIABBECABQQtqQXhxIAFBC0kbIgRqQQxqEAoiAkUNACACQQhrIQECQCAAQQFrIgMgAnFFBEAgASEADAELIAJBBGsiBSgCACIGQXhxIAIgA2pBACAAa3FBCGsiAiAAQQAgAiABa0EQTRtqIgAgAWsiAmshAyAGQQNxBEAgACADIAAoAgRBAXFyQQJyNgIEIAAgA2oiAyADKAIEQQFyNgIEIAUgAiAFKAIAQQFxckECcjYCACABIAJqIgMgAygCBEEBcjYCBCABIAIQDgwBCyABKAIAIQEgACADNgIEIAAgASACajYCAAsCQCAAKAIEIgFBA3FFDQAgAUF4cSICIARBEGpNDQAgACAEIAFBAXFyQQJyNgIEIAAgBGoiASACIARrIgRBA3I2AgQgACACaiICIAIoAgRBAXI2AgQgASAEEA4LIABBCGohAwsgAwucAwEIfyMAQSBrIgIkABAUQciMwAAoAgAhBUHEjMAAKAIAIQdBxIzAAEIANwIAQbyMwAAoAgAhBkHAjMAAKAIAIQNBvIzAAEIENwIAQbiMwAAoAgAhAEG4jMAAQQA2AgACQCADIAdGBEACQCAAIANGBEDQb0GAASAAIABBgAFNGyIE/A8BIgFBf0YNAwJAIAVFBEAgASEFDAELIAAgBWogAUcNBAsgACAEaiIEQf////8BSw0DIAIgAAR/IAIgBjYCFCACIABBAnQ2AhxBBAVBAAs2AhggAkEIakEEIARBAnQgAkEUahAcIAIoAghBAUYNAyACKAIMIQYgACEBIAQhAAwBCyAAIAMiAU0NAgsgBiABQQJ0aiADQQFqNgIAIAFBAWohAwsgAyAHTQ0AIAYgB0ECdGooAgAhAUHIjMAAIAU2AgBBxIzAACABNgIAQcCMwAAgAzYCAEG8jMAAKAIAIQFBvIzAACAGNgIAQbiMwAAoAgAhBEG4jMAAIAA2AgAgBARAIAEgBEECdBBBCyACQSBqJAAgBSAHag8LAAvxAgEEfyAAKAIMIQICQAJAIAFBgAJPBEAgACgCGCEDAkACQCAAIAJGBEAgAEEUQRAgACgCFCICG2ooAgAiAQ0BQQAhAgwCCyAAKAIIIgEgAjYCDCACIAE2AggMAQsgAEEUaiAAQRBqIAIbIQQDQCAEIQUgASICQRRqIAJBEGogAigCFCIBGyEEIAJBFEEQIAEbaigCACIBDQALIAVBADYCAAsgA0UNAiAAIAAoAhxBAnRB8IzAAGoiASgCAEcEQCADQRBBFCADKAIQIABGG2ogAjYCACACRQ0DDAILIAEgAjYCACACDQFBjJDAAEGMkMAAKAIAQX4gACgCHHdxNgIADAILIAAoAggiACACRwRAIAAgAjYCDCACIAA2AggPC0GIkMAAQYiQwAAoAgBBfiABQQN2d3E2AgAPCyACIAM2AhggACgCECIBBEAgAiABNgIQIAEgAjYCGAsgACgCFCIARQ0AIAIgADYCFCAAIAI2AhgLC+IDAQZ/IwBBEGsiAyQAAkAgAUGAAU8EQCADQQA2AgwCfyABQYAQTwRAIAFBgIAETwRAIAMgAUE/cUGAAXI6AA8gAyABQRJ2QfABcjoADCADIAFBBnZBP3FBgAFyOgAOIAMgAUEMdkE/cUGAAXI6AA1BBAwCCyADIAFBP3FBgAFyOgAOIAMgAUEMdkHgAXI6AAwgAyABQQZ2QT9xQYABcjoADUEDDAELIAMgAUE/cUGAAXI6AA0gAyABQQZ2QcABcjoADEECCyEBIAEgACgCACAAKAIIIgJrSwRAIAAgAiABEBYgACgCCCECCyAAKAIEIAJqIANBDGogARALGiAAIAEgAmo2AggMAQsgACgCCCIGIAAoAgBGBEAjAEEgayICJABBCCAAKAIAIgVBAWoiBCAFQQF0IgcgBCAHSxsiBCAEQQhNGyIEQQBIBEBBAEEAQcyGwAAQNQALIAIgBQR/IAIgBTYCHCACIAAoAgQ2AhRBAQVBAAs2AhggAkEIakEBIAQgAkEUahAcIAIoAghBAUYEQCACKAIMIAIoAhBBzIbAABA1AAsgAigCDCEFIAAgBDYCACAAIAU2AgQgAkEgaiQACyAAKAIEIAZqIAE6AAAgACAGQQFqNgIICyADQRBqJABBAAvEAgEEfyAAQgA3AhAgAAJ/QQAgAUGAAkkNABpBHyABQf///wdLDQAaIAFBBiABQQh2ZyIDa3ZBAXEgA0EBdGtBPmoLIgI2AhwgAkECdEHwjMAAaiEEQQEgAnQiA0GMkMAAKAIAcUUEQCAEIAA2AgAgACAENgIYIAAgADYCDCAAIAA2AghBjJDAAEGMkMAAKAIAIANyNgIADwsCQAJAIAEgBCgCACIDKAIEQXhxRgRAIAMhAgwBCyABQRkgAkEBdmtBACACQR9HG3QhBQNAIAMgBUEddkEEcWpBEGoiBCgCACICRQ0CIAVBAXQhBSACIQMgAigCBEF4cSABRw0ACwsgAigCCCIBIAA2AgwgAiAANgIIIABBADYCGCAAIAI2AgwgACABNgIIDwsgBCAANgIAIAAgAzYCGCAAIAA2AgwgACAANgIIC+4CAQR/IwBBMGsiACQAAkACQEG0jMAAKAIARQRAQcyMwAAoAgAhAUHMjMAAQQA2AgAgAUUNASAAQRhqIAERAwAgAEEQaiICIABBJGopAgA3AwAgACAAKQIcNwMIIAAoAhghAUG0jMAAKAIAIgMNAgJAIANFDQBBuIzAACgCACICRQ0AQbyMwAAoAgAgAkECdBBBC0G4jMAAIAE2AgBBtIzAAEEBNgIAQbyMwAAgACkDCDcCAEHEjMAAIABBEGopAwA3AgALIABBMGokAA8LIABBADYCKCAAQQE2AhwgAEHchMAANgIYIABCBDcCICAAQRhqQciFwAAQJwALIABBKGogAikDADcCACAAIAApAwg3AiAgACABNgIcIABBATYCGAJAIABBGGoiASgCAEUNACABKAIEIgJFDQAgASgCCCACQQJ0EEELIABBADYCKCAAQQE2AhwgAEHohcAANgIYIABCBDcCICABQfCFwAAQJwALqAICA38BfiMAQUBqIgIkACABKAIAQYCAgIB4RgRAIAEoAgwhAyACQSRqIgRBADYCACACQoCAgIAQNwIcIAJBMGogAygCACIDQQhqKQIANwMAIAJBOGogA0EQaikCADcDACACIAMpAgA3AyggAkEcakG4h8AAIAJBKGoQDRogAkEYaiAEKAIAIgM2AgAgAiACKQIcIgU3AxAgAUEIaiADNgIAIAEgBTcCAAsgASkCACEFIAFCgICAgBA3AgAgAkEIaiIDIAFBCGoiASgCADYCACABQQA2AgBB0YzAAC0AABogAiAFNwMAQQxBBBA8IgFFBEBBBEEMEEYACyABIAIpAwA3AgAgAUEIaiADKAIANgIAIABB1InAADYCBCAAIAE2AgAgAkFAayQAC9QBAgR/AX4jAEEgayIDJAACQAJAIAEgASACaiICSwRAQQAhAQwBC0EAIQFBCCACIAAoAgAiBUEBdCIEIAIgBEsbIgIgAkEITRsiBK0iB0IgiFBFDQAgB6ciBkH/////B0sNACADIAUEfyADIAU2AhwgAyAAKAIENgIUQQEFQQALNgIYIANBCGpBASAGIANBFGoQHCADKAIIQQFHDQEgAygCECECIAMoAgwhAQsgASACQaiHwAAQNQALIAMoAgwhASAAIAQ2AgAgACABNgIEIANBIGokAAveAQACQAJAAkACQAJAAkACQAJAIAEOCgcGBgQFBgEDAAIGCyAAKQAAQtDCnavG6Nu77gBSDQUgAiADaiICIAUgAiAFSRshAgwFCyAAQeSCwABBBhAfDQQgAiADayIDQQAgAiADTxshAgwECyAAQeqCwABBCRAfDQMgAiAEaiICIAUgAiAFSRshAgwDCyAAQfOCwABBBxAfDQIgAiAEayIDQQAgAiADTxshAgwCCyACIAUgAEH6gsAAQQMQHxshAgwBCyACQQAgACgAAEHI3rWrBkcbIQILIAAgARBBCyACC8EBAgN/AX4jAEEwayICJAAgASgCAEGAgICAeEYEQCABKAIMIQMgAkEUaiIEQQA2AgAgAkKAgICAEDcCDCACQSBqIAMoAgAiA0EIaikCADcDACACQShqIANBEGopAgA3AwAgAiADKQIANwMYIAJBDGpBuIfAACACQRhqEA0aIAJBCGogBCgCACIDNgIAIAIgAikCDCIFNwMAIAFBCGogAzYCACABIAU3AgALIABB1InAADYCBCAAIAE2AgAgAkEwaiQAC5YCAQJ/IwBBIGsiBSQAQeyMwABB7IzAACgCACIGQQFqNgIAAkACf0EAIAZBAEgNABpBAUG4kMAALQAADQAaQbiQwABBAToAAEG0kMAAQbSQwAAoAgBBAWo2AgBBAgtB/wFxIgZBAkcEQCAGQQFxRQ0BIAVBCGogACABKAIYEQAAAAtB4IzAACgCACIGQQBIDQBB4IzAACAGQQFqNgIAQeCMwABB5IzAACgCAAR/IAUgACABKAIUEQAAIAUgBDoAHSAFIAM6ABwgBSACNgIYIAUgBSkDADcCEEHkjMAAKAIAIAVBEGpB6IzAACgCACgCFBEAAEHgjMAAKAIAQQFrBSAGCzYCAEG4kMAAQQA6AAAgA0UNAAALAAvcAQEFfwJAAkAgAEGEAUkNACAA0G8mARAUQcSMwAAoAgAhBEHIjMAAKAIAIQFBxIzAAEIANwIAQcCMwAAoAgAhAkG8jMAAKAIAIQNBvIzAAEIENwIAQbiMwAAoAgAhBUG4jMAAQQA2AgAgACABSQ0BIAAgAWsiACACTw0BIAMgAEECdGogBDYCAEHIjMAAIAE2AgBBxIzAACAANgIAQcCMwAAgAjYCAEG8jMAAKAIAQbyMwAAgAzYCAEG4jMAAKAIAIQBBuIzAACAFNgIAIABFDQAgAEECdBBBCw8LAAuhAQEBfyMAQRBrIgYkAAJAIAEEQCAGQQRqIAEgAyAEIAUgAigCEBEHAAJAIAYoAgQiAiAGKAIMIgFNBEAgBigCCCEFDAELIAJBAnQhAiAGKAIIIQMgAUUEQEEEIQUgAyACEEEMAQsgAyACQQQgAUECdCICEDkiBUUNAgsgACABNgIEIAAgBTYCACAGQRBqJAAPCxBDAAtBBCACQfCDwAAQNQALiQEBAX8CQCACQQBOBEACfyADKAIEBEACQCADKAIIIgRFBEAMAQsgAygCACAEIAEgAhA5DAILCyABIAJFDQAaQdGMwAAtAAAaIAIgARA8CyIDBEAgACACNgIIIAAgAzYCBCAAQQA2AgAPCyAAIAI2AgggACABNgIEDAELIABBADYCBAsgAEEBNgIAC3kBAX8jAEEgayICJAACfyAAKAIAQYCAgIB4RwRAIAEgACgCBCAAKAIIEDsMAQsgAkEQaiAAKAIMKAIAIgBBCGopAgA3AwAgAkEYaiAAQRBqKQIANwMAIAIgACkCADcDCCABKAIcIAEoAiAgAkEIahANCyACQSBqJAALZgAjAEEwayIAJABB0IzAAC0AAARAIABBAjYCDCAAQZyJwAA2AgggAEIBNwIUIAAgATYCLCAAIABBLGqtQoCAgIDgAYQ3AyAgACAAQSBqNgIQIABBCGpBxInAABAnAAsgAEEwaiQAC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCAAQQFqIQAgAUEBaiEBIAJBAWsiAg0BDAILCyAEIAVrIQMLIAMLQQEBfyACIAAoAgAgACgCCCIDa0sEQCAAIAMgAhAWIAAoAgghAwsgACgCBCADaiABIAIQCxogACACIANqNgIIQQALTQIBfwFvIAEoAgQiAiABKAIITwR/QQAFIAEgAkEBajYCBCABKAIAKAIAJQEgAhADIQMQECIBIAMmAUEBCyECIAAgATYCBCAAIAI2AgALTQECf0HRjMAALQAAGiABKAIEIQIgASgCACEDQQhBBBA8IgFFBEBBBEEIEEYACyABIAI2AgQgASADNgIAIABB5InAADYCBCAAIAE2AgALQQEBfyMAQSBrIgIkACACQQA2AhAgAkEBNgIEIAJCBDcCCCACQS42AhwgAiAANgIYIAIgAkEYajYCACACIAEQJwALOAACQCACQYCAxABGDQAgACACIAEoAhARAQBFDQBBAQ8LIANFBEBBAA8LIAAgA0EAIAEoAgwRAgALKwACQCAAIAEQK0UNACAABEBB0YzAAC0AABogACABEDwiAUUNAQsgAQ8LAAtSACABIAJsIgFFBEAjAEEgayIAJAAgAEEANgIYIABBATYCDCAAQayMwAA2AgggAEIENwIQIABBCGpB1ILAABAnAAsgAUEBdiAAaiIAIAAgAXBrC/oBAgJ/AX4jAEEQayICJAAgAkEBOwEMIAIgATYCCCACIAA2AgQjAEEQayIBJAAgAkEEaiIAKQIAIQQgASAANgIMIAEgBDcCBCMAQRBrIgAkACABQQRqIgEoAgAiAigCDCEDAkACQAJAAkAgAigCBA4CAAECCyADDQFBASECQQAhAwwCCyADDQAgAigCACICKAIEIQMgAigCACECDAELIABBgICAgHg2AgAgACABNgIMIABBkIrAACABKAIEIAEoAggiAC0ACCAALQAJEBkACyAAIAM2AgQgACACNgIAIABB9InAACABKAIEIAEoAggiAC0ACCAALQAJEBkAC8IFAQ5/IwBBEGsiDCQAIwBBEGsiBiQAIAIgA0ECdCIHaiERAkACQAJAA0AgBCAHRg0BIAIgBGogBEEEaiEEKAIAIgUgAEkgASAFTXINAAtB0YzAAC0AABpBEEEEEDwiB0UNASACIARqIQQgByAFNgIAIAZBATYCDCAGIAc2AgggBkEENgIEQQEhCANAIAQgEUcEQCAEKAIAIQ4gBEEEaiEEIAEgDk0gACAOS3INASAGKAIEIAhGBEBBACEKIwBBIGsiCSQAAkACQCAIQQFqIgcgBkEEaiIPKAIAIg1BAXQiBSAFIAdJGyIFQf////8DSw0AQQQgBSAFQQRNGyIHQQJ0IgtB/P///wdLDQAgCSANBH8gCSANQQJ0NgIcIAkgDygCBDYCFEEEBUEACzYCGCAJQQhqIQoCfyAJQRRqIg0oAgQEQCANKAIIIgVFBEBBBCALRQ0CGkHRjMAALQAAGiALQQQQPAwCCyANKAIAIAVBBCALEDkMAQtBBCALRQ0AGkHRjMAALQAAGiALQQQQPAshBSAKIAs2AgggCiAFQQQgBRs2AgQgCiAFRTYCACAJKAIIQQFHDQEgCSgCECEQIAkoAgwhCgsgCiAQQcyAwAAQNQALIAkoAgwhBSAPIAc2AgAgDyAFNgIEIAlBIGokACAGKAIIIQcLIAcgCEECdGogDjYCACAGIAhBAWoiCDYCDAwBCwsgBigCCCEAIAYoAgQhBAwCC0EEIQBBACEEDAELQQRBEEG0gcAAEDUACyADBEAgAiADQQJ0EEELAkACQAJAIAQgCE0EQCAAIQQMAQsgBEECdCEBIAhFBEBBBCEEIAAgARBBDAELIAAgAUEEIAhBAnQiABA5IgRFDQELIAwgCDYCBCAMIAQ2AgAgBkEQaiQADAELQQQgAEG4gsAAEDUACyAMKAIAIAwoAgQgDEEQaiQACx8AAkAgASADECsEQCAAIAEgAyACEDkiAA0BCwALIAALHQAgAEUEQBBDAAsgACACIAMgBCAFIAEoAhARCgALGQEBf0GAgICAeCABayAATyACIAFpQQFGGwsbACAARQRAEEMACyAAIAIgAyAEIAEoAhARCAALGwAgAEUEQBBDAAsgACACIAMgBCABKAIQERkACxsAIABFBEAQQwALIAAgAiADIAQgASgCEBEFAAsbACAARQRAEEMACyAAIAIgAyAEIAEoAhARGwALGwAgAEUEQBBDAAsgACACIAMgBCABKAIQER0ACyUBAX8gACgCACIBQYCAgIB4ckGAgICAeEcEQCAAKAIEIAEQQQsLGQAgAEUEQBBDAAsgACACIAMgASgCEBEEAAsXACAARQRAEEMACyAAIAIgASgCEBEBAAsXAQF/IAAoAgAiAQRAIAAoAgQgARBBCwtBACAARQRAIwBBIGsiACQAIABBADYCGCAAQQE2AgwgAEHAisAANgIIIABCBDcCECAAQQhqIAIQJwALIAAgARBGAAvgAwEHfxAQIgIgACYBIwBBQGoiASQAIAEgAjYCIBAFIQAQECICIAAmASABIAI2AiQgAUEoaiIDIAFBIGoiBCgCACUBEAQ2AgggA0EANgIEIAMgBDYCACABQQA2AjQgAUEYaiADECEgASgCGARAIAEoAhwhBANAIAEgASgCNCIGQQFqNgI0IAFBEGogBCUBEAACfyABKAIQIgNFBEBBASEDQQAMAQsgASgCFAshAiABIAMgAhA4NgI8IAFBJGooAgAlASABQTxqKAIAJQEQBkEARyEHIAEoAjwhBQJAIAdFBEAgBUGEAU8EQCAFEBoLIAEgAyACEDg2AjggAgRAIAMgAhBBCyAGuBACIQAQECICIAAmASABIAI2AjwgAUEkaigCACUBIAFBOGooAgAlASABQTxqKAIAJQEQByEAEBAiAiAAJgEgAkGEAU8EQCACEBoLIAEoAjwiAkGEAU8EQCACEBoLIAEoAjgiAkGEAUkNASACEBoMAQsgBUGEAU8EQCAFEBoLIAJFDQAgAyACEEELIARBhAFPBEAgBBAaCyABQQhqIAFBKGoQISABKAIMIQQgASgCCA0ACyABKAIkIQILIAEoAiAiA0GEAU8EQCADEBoLIAFBQGskACACJQEgAhAaCxwAIABBADYCECAAQgA3AgggAEKAgICAwAA3AgALFgEBbyAAIAEQASECEBAiACACJgEgAAvOBgEGfwJ/AkACQAJAAkACQCAAQQRrIgUoAgAiBkF4cSIEQQRBCCAGQQNxIgcbIAFqTwRAIAdBACABQSdqIgkgBEkbDQECQAJAIAJBCU8EQCACIAMQDyIIDQFBAAwJCyADQcz/e0sNAUEQIANBC2pBeHEgA0ELSRshAQJAIAdFBEAgAUGAAkkgBCABQQRySXIgBCABa0GBgAhPcg0BDAkLIABBCGsiAiAEaiEHAkACQAJAAkAgASAESwRAIAdBnJDAACgCAEYNBCAHQZiQwAAoAgBGDQIgBygCBCIGQQJxDQUgBkF4cSIGIARqIgQgAUkNBSAHIAYQESAEIAFrIgNBEEkNASAFIAEgBSgCAEEBcXJBAnI2AgAgASACaiIBIANBA3I2AgQgAiAEaiICIAIoAgRBAXI2AgQgASADEA4MDQsgBCABayIDQQ9LDQIMDAsgBSAEIAUoAgBBAXFyQQJyNgIAIAIgBGoiASABKAIEQQFyNgIEDAsLQZCQwAAoAgAgBGoiBCABSQ0CAkAgBCABayIDQQ9NBEAgBSAGQQFxIARyQQJyNgIAIAIgBGoiASABKAIEQQFyNgIEQQAhA0EAIQEMAQsgBSABIAZBAXFyQQJyNgIAIAEgAmoiASADQQFyNgIEIAIgBGoiAiADNgIAIAIgAigCBEF+cTYCBAtBmJDAACABNgIAQZCQwAAgAzYCAAwKCyAFIAEgBkEBcXJBAnI2AgAgASACaiIBIANBA3I2AgQgByAHKAIEQQFyNgIEIAEgAxAODAkLQZSQwAAoAgAgBGoiBCABSw0HCyADEAoiAUUNASABIABBfEF4IAUoAgAiAUEDcRsgAUF4cWoiASADIAEgA0kbEAsgABAMDAgLIAggACADIAEgASADSxsQCxogBSgCACICQXhxIgMgAUEEQQggAkEDcSICG2pJDQMgAkEAIAMgCUsbDQQgABAMCyAIDAYLQfmHwABBqIjAABAjAAtBuIjAAEHoiMAAECMAC0H5h8AAQaiIwAAQIwALQbiIwABB6IjAABAjAAsgBSABIAZBAXFyQQJyNgIAIAEgAmoiAiAEIAFrIgFBAXI2AgRBlJDAACABNgIAQZyQwAAgAjYCACAADAELIAALCw0AIAEEQCAAIAEQQQsLFgAgACgCHCABIAIgACgCICgCDBECAAsZAAJ/IAFBCU8EQCABIAAQDwwBCyAAEAoLCyAAIABC4+DWofail51WNwMIIABC0Jamw5Le7cA3NwMACyIAIABC7bqtts2F1PXjADcDCCAAQviCmb2V7sbFuX83AwALEwAgAEHkicAANgIEIAAgATYCAAsQACABIAAoAgAgACgCBBA7C1sBAn8CQAJAIABBBGsoAgAiAkF4cSIDQQRBCCACQQNxIgIbIAFqTwRAIAJBACADIAFBJ2pLGw0BIAAQDAwCC0H5h8AAQaiIwAAQIwALQbiIwABB6IjAABAjAAsL7QYBC38gACgCACEGIAEhAiMAQRBrIgkkAEEKIQMgBiIAQegHTwRAIAAhAQNAIAlBBmogA2oiBEEDayABIAFBkM4AbiIAQZDOAGxrIgdB//8DcUHkAG4iBUEBdCIIQcmKwABqLQAAOgAAIARBBGsgCEHIisAAai0AADoAACAEQQFrIAcgBUHkAGxrQf//A3FBAXQiB0HJisAAai0AADoAACAEQQJrIAdByIrAAGotAAA6AAAgA0EEayEDIAFB/6ziBEsgACEBDQALCwJAIABBCU0EQCAAIQEMAQsgAyAJakEFaiAAIABB//8DcUHkAG4iAUHkAGxrQf//A3FBAXQiAEHJisAAai0AADoAACADQQJrIgMgCUEGamogAEHIisAAai0AADoAAAtBACAGIAEbRQRAIANBAWsiAyAJQQZqaiABQQF0QR5xQcmKwABqLQAAOgAACwJ/IAlBBmogA2ohBEEKIANrIQZBK0GAgMQAIAIoAhQiAEEBcSIBGyEDIABBBHFFRSEHIAIoAgBFBEBBASACKAIcIgAgAigCICIBIAMgBxAkDQEaIAAgBCAGIAEoAgwRAgAMAQsCQAJAAkAgAigCBCIFIAEgBmoiCE0EQCACKAIcIgAgAigCICIBIAMgBxAkRQ0BQQEMBAsgAEEIcUUNASACKAIQIQsgAkEwNgIQIAItABghDEEBIQEgAkEBOgAYIAIoAhwiACACKAIgIgogAyAHECQNAiAFIAhrQQFqIQECQANAIAFBAWsiAUUNASAAQTAgCigCEBEBAEUNAAtBAQwEC0EBIAAgBCAGIAooAgwRAgANAxogAiAMOgAYIAIgCzYCEEEADAMLIAAgBCAGIAEoAgwRAgAhAQwBCyAFIAhrIQACQAJAAkBBASACLQAYIgEgAUEDRhsiAUEBaw4CAAECCyAAIQFBACEADAELIABBAXYhASAAQQFqQQF2IQALIAFBAWohASACKAIQIQggAigCICEFIAIoAhwhAgJAA0AgAUEBayIBRQ0BIAIgCCAFKAIQEQEARQ0AC0EBDAILQQEhASACIAUgAyAHECQNACACIAQgBiAFKAIMEQIADQBBACEBA0BBACAAIAFGDQIaIAFBAWohASACIAggBSgCEBEBAEUNAAsgAUEBayAASQwBCyABCyAJQRBqJAALDABBgITAAEEyEAgACw0AIABBuIfAACABEA0LDAAgACABKQIANwMACxkAIAAgAUHcjMAAKAIAIgBBDyAAGxEAAAALCQAgAEEANgIACwvEDAIAQYCAwAALsQwvcnVzdGMvMDVmOTg0NmY4OTNiMDlhMWJlMWZjODU2MGUzM2ZjM2M4MTVjZmVjYi9saWJyYXJ5L2FsbG9jL3NyYy9yYXdfdmVjLnJzAAAQAEwAAAAqAgAAEQAAAC9ydXN0Yy8wNWY5ODQ2Zjg5M2IwOWExYmUxZmM4NTYwZTMzZmMzYzgxNWNmZWNiL2xpYnJhcnkvY29yZS9zcmMvaXRlci90cmFpdHMvaXRlcmF0b3IucnNcABAAWAAAALMHAAAJAAAAQzpcVXNlcnNcQ2hyaXN0b3NcLmNhcmdvXHJlZ2lzdHJ5XHNyY1xpbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zlx3YXNtLWJpbmRnZW4tMC4yLjEwMFxzcmNcY29udmVydFxzbGljZXMucnMAAADEABAAcQAAACQBAAAOAAAAc3JjXGxpYi5ycwAASAEQAAoAAAAPAAAAFwAAAFBhZ2VVcEFycm93RG93bkFycm93VXBFbmRDOlxVc2Vyc1xDaHJpc3Rvc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXHdhc20tYmluZGdlbi0wLjIuMTAwXHNyY1xjb252ZXJ0XHNsaWNlcy5ycwAAfQEQAHEAAAAkAQAADgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkTGF6eSBpbnN0YW5jZSBoYXMgcHJldmlvdXNseSBiZWVuIHBvaXNvbmVkMgIQACoAAABDOlxVc2Vyc1xDaHJpc3Rvc1wuY2FyZ29ccmVnaXN0cnlcc3JjXGluZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmXG9uY2VfY2VsbC0xLjIxLjNcc3JjXGxpYi5ycwAAZAIQAGIAAAAIAwAAGQAAAHJlZW50cmFudCBpbml0AADYAhAADgAAAGQCEABiAAAAegIAAA0AAAAvcnVzdGMvMDVmOTg0NmY4OTNiMDlhMWJlMWZjODU2MGUzM2ZjM2M4MTVjZmVjYi9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAAMQAEsAAACNBQAAGwAAAC9ydXN0Yy8wNWY5ODQ2Zjg5M2IwOWExYmUxZmM4NTYwZTMzZmMzYzgxNWNmZWNiL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnNcAxAATAAAACoCAAARAAAAEAAAAAwAAAAEAAAAEQAAABIAAAATAAAAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuNy9zcmMvZGxtYWxsb2MucnNhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA+PSBzaXplICsgbWluX292ZXJoZWFkANADEAApAAAAqAQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAADQAxAAKQAAAK4EAAANAAAAbWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAeAQQABUAAACNBBAADQAAAGxpYnJhcnkvc3RkL3NyYy9hbGxvYy5yc6wEEAAYAAAAYwEAAAkAAAAQAAAADAAAAAQAAAAUAAAAAAAAAAgAAAAEAAAAFQAAAAAAAAAIAAAABAAAABYAAAAXAAAAGAAAABkAAAAaAAAAEAAAAAQAAAAbAAAAHAAAAB0AAAAeAAAAY2FwYWNpdHkgb3ZlcmZsb3cAAAAsBRAAEQAAADAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5YXR0ZW1wdCB0byBkaXZpZGUgYnkgemVybwAAABAGEAAZAEHMjMAACwENAHwJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2VkLWJ5AwVydXN0Yx0xLjg2LjAgKDA1Zjk4NDZmOCAyMDI1LTAzLTMxKQZ3YWxydXMGMC4yMy4zDHdhc20tYmluZGdlbhMwLjIuMTAwICgyNDA1ZWMyYjQpAEkPdGFyZ2V0X2ZlYXR1cmVzBCsPbXV0YWJsZS1nbG9iYWxzKwhzaWduLWV4dCsPcmVmZXJlbmNlLXR5cGVzKwptdWx0aXZhbHVl", KA = async (A = {}, g) => {
let B;
if (g.startsWith("data:")) {
const C = g.replace(/^data:.*?base64,/, "");
let Q;
if (typeof Buffer == "function" && typeof Buffer.from == "function")
Q = Buffer.from(C, "base64");
else if (typeof atob == "function") {
const e = atob(C);
Q = new Uint8Array(e.length);
for (let t = 0; t < e.length; t++)
Q[t] = e.charCodeAt(t);
} else
throw new Error("Cannot decode base64-encoded data URL");
B = await WebAssembly.instantiate(Q, A);
} else {
const C = await fetch(g), Q = C.headers.get("Content-Type") || "";
if ("instantiateStreaming" in WebAssembly && Q.startsWith("application/wasm"))
B = await WebAssembly.instantiateStreaming(C, A);
else {
const e = await C.arrayBuffer();
B = await WebAssembly.instantiate(e, A);
}
}
return B.instance.exports;
};
let D;
function wA(A) {
D = A;
}
let J = 0, z = null;
function $() {
return (z === null || z.byteLength === 0) && (z = new Uint8Array(D.memory.buffer)), z;
}
const HA = typeof TextEncoder > "u" ? (0, module.require)("util").TextEncoder : TextEncoder;
let AA = new HA("utf-8");
const WA = typeof AA.encodeInto == "function" ? function(A, g) {
return AA.encodeInto(A, g);
} : function(A, g) {
const B = AA.encode(A);
return g.set(B), {
read: A.length,
written: B.length
};
};
function lA(A, g, B) {
if (B === void 0) {
const r = AA.encode(A), a = g(r.length, 1) >>> 0;
return $().subarray(a, a + r.length).set(r), J = r.length, a;
}
let C = A.length, Q = g(C, 1) >>> 0;
const e = $();
let t = 0;
for (; t < C; t++) {
const r = A.charCodeAt(t);
if (r > 127) break;
e[Q + t] = r;
}
if (t !== C) {
t !== 0 && (A = A.slice(t)), Q = B(Q, C, C = t + A.length * 3, 1) >>> 0;
const r = $().subarray(Q + t, Q + C), a = WA(A, r);
t += a.written, Q = B(Q, C, t, 1) >>> 0;
}
return J = t, Q;
}
function vA(A) {
return A == null;
}
let b = null;
function cA() {
return (b === null || b.buffer.detached === !0 || b.buffer.detached === void 0 && b.buffer !== D.memory.buffer) && (b = new DataView(D.memory.buffer)), b;
}
const OA = typeof TextDecoder > "u" ? (0, module.require)("util").TextDecoder : TextDecoder;
let fA = new OA("utf-8", { ignoreBOM: !0, fatal: !0 });
fA.decode();
function NA(A, g) {
return A = A >>> 0, fA.decode($().subarray(A, A + g));
}
let P = null;
function yA() {
return (P === null || P.byteLength === 0) && (P = new Uint32Array(D.memory.buffer)), P;
}
function qA(A, g) {
const B = g(A.length * 4, 4) >>> 0;
return yA().set(A, B / 4), J = A.length, B;
}
function VA(A, g) {
return A = A >>> 0, yA().subarray(A / 4, A / 4 + g);
}
function uA(A, g, B) {
const C = qA(B, D.__wbindgen_malloc), Q = J, e = D.get_visible_indexes(A, g, C, Q);
var t = VA(e[0], e[1]).slice();
return D.__wbindgen_free(e[0], e[1] * 4, 4), t;
}
function MA(A, g, B) {
return D.snap_to_batch_offset(A, g, B) >>> 0;
}
function FA(A, g, B, C, Q) {
const e = lA(A, D.__wbindgen_malloc, D.__wbindgen_realloc), t = J;
return D.compute_scroll_target(e, t, g, B, C, Q) >>> 0;
}
function GA(A, g) {
return A[g >>> 0];
}
function dA(A, g) {
return A.has(g);
}
function YA(A) {
return A.length;
}
function kA() {
return /* @__PURE__ */ new Map();
}
function RA(A, g, B) {
return A.set(g, B);
}
function hA() {
const A = D.__wbindgen_export_0, g = A.grow(4);
A.set(0, void 0), A.set(g + 0, void 0), A.set(g + 1, null), A.set(g + 2, !0), A.set(g + 3, !1);
}
function bA(A) {
return A;
}
function JA(A, g) {
const B = g, C = typeof B == "string" ? B : void 0;
var Q = vA(C) ? 0 : lA(C, D.__wbindgen_malloc, D.__wbindgen_realloc), e = J;
cA().setInt32(A + 4 * 1, e, !0), cA().setInt32(A + 4 * 0, Q, !0);
}
function mA(A, g) {
return NA(A, g);
}
function SA(A, g) {
throw new Error(NA(A, g));
}
URL = globalThis.URL;
const y = await KA({ "./react_render_wave_wasm_bg.js": {
__wbindgen_string_get: JA,
__wbindgen_string_new: mA,
__wbindgen_number_new: bA,
__wbg_get_b9b93047fe3cf45b: GA,
__wbg_length_e2d2a49132c1b256: YA,
__wbg_new_5e0be73521bc8c17: kA,
__wbg_has_76ca66e2f25d1c49: dA,
__wbg_set_8fc6bf8a5b1071d1: RA,
__wbindgen_throw: SA,
__wbindgen_init_externref_table: hA
} }, pA), zA = y.memory, PA = y.get_visible_indexes, $A = y.snap_to_batch_offset, AI = y.group_indexes, II = y.compute_scroll_target, gI = y.__wbindgen_export_0, BI = y.__wbindgen_malloc, CI = y.__wbindgen_realloc, QI = y.__wbindgen_free, _A = y.__wbindgen_start, EI = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
__wbindgen_export_0: gI,
__wbindgen_free: QI,
__wbindgen_malloc: BI,
__wbindgen_realloc: CI,
__wbindgen_start: _A,
compute_scroll_target: II,
get_visible_indexes: PA,
group_indexes: AI,
memory: zA,
snap_to_batch_offset: $A
}, Symbol.toStringTag, { value: "Module" }));
wA(EI);
_A();
const eI = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
__wbg_get_b9b93047fe3cf45b: GA,
__wbg_has_76ca66e2f25d1c49: dA,
__wbg_length_e2d2a49132c1b256: YA,
__wbg_new_5e0be73521bc8c17: kA,
__wbg_set_8fc6bf8a5b1071d1: RA,
__wbg_set_wasm: wA,
__wbindgen_init_externref_table: hA,
__wbindgen_number_new: bA,
__wbindgen_string_get: JA,
__wbindgen_string_new: mA,
__wbindgen_throw: SA,
compute_scroll_target: FA,
get_visible_indexes: uA,
snap_to_batch_offset: MA
}, Symbol.toStringTag, { value: "Module" }));
let sA = !1, d = !1;
async function tI() {
if (sA) return d;
try {
await Promise.resolve().then(() => eI), d = !0;
} catch (A) {
console.warn("WASM init failed, falling back to JS:", A), d = !1;
}
return sA = !0, d;
}
function nI(A, g, B) {
if (d)
try {
const C = new Uint32Array(B), Q = uA(A, g, C);
return Array.from(Q);
} catch (C) {
console.warn("WASM execution failed, fallback to JS:", C);
}
return B.filter((C) => C >= A && C < g);
}
function oI(A, g, B) {
if (d)
try {
return MA(A, g, B);
} catch {
console.warn("WASM snap failed, using JS fallback");
}
const C = g * B;
return Math.round(A / C) * B * g;
}
function rI(A, g, B, C, Q) {
if (d)
try {
return FA(
A,
g,
B,
C,
Q
);
} catch {
console.warn("WASM scrollTarget failed, fallback to JS");
}
switch (A) {
case "PageDown":
return Math.min(g + B, Q);
case "PageUp":
return Math.max(g - B, 0);
case "ArrowDown":
return Math.min(g + C, Q);
case "ArrowUp":
return Math.max(g - C, 0);
case "Home":
return 0;
case "End":
return Q;
default:
return g;
}
}
function iI(A, g) {
if (g)
return typeof g == "function" ? g(A) : A[g];
}
function cI(A, g, B, C) {
const Q = Math.floor(A / g);
return iI(B[Q], C);
}
function sI({
items: A,
itemHeight: g,
containerHeight: B = 400,
batchSize: C = 20,
interval: Q = 60,
overscan: e = 5,
startIndex: t = 0,
className: r,
style: a,
renderItem: l,
renderSkeleton: M,
scrollToIndex: u,
outerElement: Y,
innerElement: p,
transition: K = !1,
snapToBatch: k = !1,
onEndReached: m,
keyboardNavigation: F = !1,
renderStickyHeader: H,
groupByKey: gA
}, BA) {
X(() => {
tI();
}, []);
const { outerContainerRef: f, innerContainerRef: CA, scrollToOffset: tA, scrollToItem: QA } = XA({
itemCount: A.length,
itemSize: g,
preRenderedItemCount: 0
}), W = DA({
length: A.length,
batchSize: C,
interval: Q,
startIndex: t
}), [S, R] = eA(0), [v, O] = eA(B), G = Math.max(0, Math.floor(S / g) - e), _ = Math.min(
A.length,
Math.ceil((S + v) / g) + e
);
LA(BA, () => ({
scrollTo: (o) => {
const I = o * g;
f.current?.scrollTo({ top: I, behavior: "smooth" });
},
scrollToOffset: (o) => {
f.current?.scrollTo({ top: o, behavior: "smooth" });
},
getVisibleIndexes: () => nI(G, _, W)
})), X(() => {
const o = f.current;
if (!o) return;
let I = null;
const E = () => {
R(o.scrollTop), k && (I && clearTimeout(I), I = setTimeout(() => {
const w = oI(
o.scrollTop,
g,
C
);
o.scrollTo({ top: w, behavior: "smooth" });
}, 150)), m && o.scrollTop + o.clientHeight >= o.scrollHeight - 10 && m();
}, n = (w) => {
if (!F) return;
const c = f.current;
if (!c || !c.contains(document.activeElement)) return;
const L = c.scrollHeight - c.clientHeight, x = rI(
w.key,
c.scrollTop,
c.clientHeight,
g,
L
);
c.scrollTo({ top: x, behavior: "smooth" });
}, i = new ResizeObserver(() => {
O(o.clientHeight);
});
return o.addEventListener("scroll", E), F && window.addEventListener("keydown", n), i.observe(o), R(o.scrollTop), O(o.clientHeight), () => {
o.removeEventListener("scroll", E), F && window.removeEventListener("keydown", n), i.disconnect(), I && clearTimeout(I);
};
}, [
f,
k,
g,
C,
m,
F
]), X(() => {
if (typeof u == "number" && f.current) {
const o = u * g;
f.current.scrollTo({ top: o });
}
}, [u, g]);
const U = cI(S, g, A, gA), q = Array.from({ length: _ - G }, (o, I) => {
const E = G + I, n = W.includes(E);
return /* @__PURE__ */ N.jsx(
"div",
{
role: "listitem",
style: {
position: "absolute",
top: E * g,
left: 0,
right: 0,
opacity: K ? 0 : void 0,
animation: K && n ? "fadeIn 0.3s ease forwards" : void 0
},
children: n ? l(A[E], E) : M?.(E) ?? null
},
E
);
}), j = (o, I) => typeof o == "string" ? aA.createElement(o, {
ref: I.ref,
role: "list",
style: I.style,
className: I.className,
children: I.children,
tabIndex: F ? 0 : void 0
}) : /* @__PURE__ */ N.jsx(o, { ...I });
return /* @__PURE__ */ N.jsxs(N.Fragment, { children: [
/* @__PURE__ */ N.jsx("style", { children: `
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: none; }
}
` }),
j(Y || "div", {
ref: f,
className: r,
style: {
position: "relative",
overflowY: "auto",
height: B,
...a
},
children: /* @__PURE__ */ N.jsxs(N.Fragment, { children: [
H && U && /* @__PURE__ */ N.jsx(
"div",
{
style: {
position: "sticky",
top: 0,
zIndex: 1,
background: "white",
borderBottom: "1px solid #ddd"
},
children: H(U)
}
),
j(p || "div", {
ref: CA,
style: {
position: "relative",
height: A.length * g,
width: "100%"
},
children: q
})
] })
})
] });
}
const wI = jA(sI);
export {
DI as RenderWave,
wI as VirtualRenderWave,
rI as computeScrollTargetSafe,
nI as getVisibleIndexesSafe,
tI as initWasm,
oI as snapToOffsetSafe,
DA as useRenderWave,
XA as useVirtualScrollCore
};